From 9161fc5848ba07ce0e16063d8496c9d92352c1a9 Mon Sep 17 00:00:00 2001 From: henrikwirth Date: Fri, 21 Feb 2020 12:43:35 +0100 Subject: [PATCH 1/6] Fixes filter fir expiration time and adds it to readme. --- README.md | 15 +++++++++++++++ src/Auth.php | 8 +++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 87f14f0..2862aa9 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,21 @@ mutation RefreshAuthToken { } ``` +## Filters + +The plugin offers some filters to hook into. + +### Change Auth Token expiry time + +**Note: For security, we highly recommend, that the Auth Token is short lived. So do not set this higher than 300 seconds unless you know what you are doing.** + +```php +add_filter('graphql_jwt_auth_expire', 60); +``` + +- Argument: Expiry time in seconds +- Default: 300 + ## Example using GraphiQL ![Example using GraphiQL](https://github.com/wp-graphql/wp-graphql-jwt-authentication/blob/master/img/jwt-auth-example.gif?raw=true) diff --git a/src/Auth.php b/src/Auth.php index ec0ea38..92b593c 100644 --- a/src/Auth.php +++ b/src/Auth.php @@ -105,19 +105,17 @@ public static function get_token_expiration() { /** * Set the expiration time, default is 300 seconds. */ - $expiration = self::get_token_issued() + 300; + $expiration = 300; /** - * Determine the expiration value. Default is 7 days, but is filterable to be configured as needed + * Determine the expiration value. Default is 5 minutes, but is filterable to be configured as needed * * @param string $expiration The timestamp for when the token should expire */ - self::$expiration = apply_filters( 'graphql_jwt_auth_expire', $expiration ); - + self::$expiration = self::get_token_issued() + apply_filters( 'graphql_jwt_auth_expire', $expiration ); } return ! empty( self::$expiration ) ? self::$expiration : null; - } /** From 5edc698a394ffadf04c45ae9cdd6717f018a4a9b Mon Sep 17 00:00:00 2001 From: henrikwirth Date: Fri, 21 Feb 2020 12:45:46 +0100 Subject: [PATCH 2/6] typo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2862aa9..b8424d8 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ mutation RefreshAuthToken { The plugin offers some filters to hook into. -### Change Auth Token expiry time +### Change Auth Token expiration **Note: For security, we highly recommend, that the Auth Token is short lived. So do not set this higher than 300 seconds unless you know what you are doing.** @@ -133,7 +133,7 @@ The plugin offers some filters to hook into. add_filter('graphql_jwt_auth_expire', 60); ``` -- Argument: Expiry time in seconds +- Argument: Expiration in seconds - Default: 300 From 0215df265925cebd9fb13fc96022daf3b0d771d6 Mon Sep 17 00:00:00 2001 From: Eike Foken Date: Sat, 7 Mar 2020 16:21:18 +0100 Subject: [PATCH 3/6] Update php-jwt to latest version --- composer.json | 2 +- vendor/composer/autoload_classmap.php | 2793 +++++++ vendor/composer/autoload_files.php | 47 + vendor/composer/autoload_namespaces.php | 9 + vendor/composer/autoload_psr4.php | 62 + vendor/composer/autoload_real.php | 18 + vendor/composer/autoload_static.php | 3268 ++++++++ vendor/composer/ca-bundle/LICENSE | 19 + vendor/composer/ca-bundle/README.md | 85 + vendor/composer/ca-bundle/composer.json | 54 + vendor/composer/ca-bundle/res/cacert.pem | 3466 ++++++++ vendor/composer/ca-bundle/src/CaBundle.php | 324 + vendor/composer/composer/.editorconfig | 11 + vendor/composer/composer/.gitattributes | 17 + vendor/composer/composer/.gitignore | 11 + vendor/composer/composer/CHANGELOG.md | 855 ++ vendor/composer/composer/LICENSE | 19 + vendor/composer/composer/PORTING_INFO | 39 + vendor/composer/composer/README.md | 62 + vendor/composer/composer/bin/compile | 31 + vendor/composer/composer/bin/composer | 62 + vendor/composer/composer/composer.json | 86 + vendor/composer/composer/doc/00-intro.md | 156 + .../composer/composer/doc/01-basic-usage.md | 266 + vendor/composer/composer/doc/02-libraries.md | 153 + vendor/composer/composer/doc/03-cli.md | 941 +++ vendor/composer/composer/doc/04-schema.md | 924 +++ .../composer/composer/doc/05-repositories.md | 717 ++ vendor/composer/composer/doc/06-config.md | 299 + vendor/composer/composer/doc/07-community.md | 35 + .../composer/composer/doc/articles/aliases.md | 111 + .../doc/articles/autoloader-optimization.md | 111 + .../doc/articles/custom-installers.md | 204 + .../handling-private-packages-with-satis.md | 356 + .../doc/articles/http-basic-authentication.md | 59 + .../composer/composer/doc/articles/plugins.md | 290 + .../composer/composer/doc/articles/scripts.md | 357 + .../composer/doc/articles/troubleshooting.md | 309 + .../composer/doc/articles/vendor-binaries.md | 110 + .../composer/doc/articles/versions.md | 230 + .../composer/doc/dev/DefaultPolicy.md | 55 + ...ckage-to-a-custom-path-for-my-framework.md | 50 + ...ow-to-install-composer-programmatically.md | 42 + ...ow-to-install-untrusted-packages-safely.md | 19 + ...the-dependencies-in-my-vendor-directory.md | 32 + ...mbering-system-does-composer-itself-use.md | 4 + ...-unbound-version-constraints-a-bad-idea.md | 21 + ...ng-comparisons-and-wildcards-a-bad-idea.md | 21 + ...-composer-load-repositories-recursively.md | 35 + .../composer/doc/fixtures/fixtures.md | 22 + .../repo-composer-plain/packages.json | 158 + ...156dd4d0821a97fd3e428bc910833e3e46dbe.json | 50 + ...138e5f3b79029c1f8d9ab5b477ea15776ba0a.json | 77 + ...67b9bea558b971e5b082f330ae4f1d484c321.json | 50 + ...791c612db0c05e22d90e9286e233cacd86ed8.json | 16 + ...d601923a5a00ccc5fcce50a77ecdd461eb72d.json | 22 + .../packages.json | 9 + .../res/composer-repository-schema.json | 110 + .../composer/res/composer-schema.json | 849 ++ .../Composer/Autoload/AutoloadGenerator.php | 1013 +++ .../src/Composer/Autoload/ClassLoader.php | 445 ++ .../Composer/Autoload/ClassMapGenerator.php | 222 + .../composer/composer/src/Composer/Cache.php | 257 + .../src/Composer/Command/AboutCommand.php | 48 + .../src/Composer/Command/ArchiveCommand.php | 166 + .../src/Composer/Command/BaseCommand.php | 181 + .../Command/BaseDependencyCommand.php | 255 + .../Command/CheckPlatformReqsCommand.php | 162 + .../Composer/Command/ClearCacheCommand.php | 76 + .../src/Composer/Command/ConfigCommand.php | 755 ++ .../Composer/Command/CreateProjectCommand.php | 387 + .../src/Composer/Command/DependsCommand.php | 57 + .../src/Composer/Command/DiagnoseCommand.php | 729 ++ .../Composer/Command/DumpAutoloadCommand.php | 90 + .../src/Composer/Command/ExecCommand.php | 97 + .../src/Composer/Command/GlobalCommand.php | 111 + .../src/Composer/Command/HomeCommand.php | 168 + .../src/Composer/Command/InitCommand.php | 822 ++ .../src/Composer/Command/InstallCommand.php | 124 + .../src/Composer/Command/LicensesCommand.php | 161 + .../src/Composer/Command/OutdatedCommand.php | 95 + .../src/Composer/Command/ProhibitsCommand.php | 57 + .../src/Composer/Command/RemoveCommand.php | 163 + .../src/Composer/Command/RequireCommand.php | 277 + .../src/Composer/Command/RunScriptCommand.php | 142 + .../Composer/Command/ScriptAliasCommand.php | 66 + .../src/Composer/Command/SearchCommand.php | 85 + .../Composer/Command/SelfUpdateCommand.php | 407 + .../src/Composer/Command/ShowCommand.php | 1015 +++ .../src/Composer/Command/StatusCommand.php | 214 + .../src/Composer/Command/SuggestsCommand.php | 154 + .../src/Composer/Command/UpdateCommand.php | 228 + .../src/Composer/Command/ValidateCommand.php | 172 + .../composer/src/Composer/Compiler.php | 284 + .../composer/src/Composer/Composer.php | 283 + .../composer/composer/src/Composer/Config.php | 479 ++ .../Composer/Config/ConfigSourceInterface.php | 91 + .../src/Composer/Config/JsonConfigSource.php | 271 + .../src/Composer/Console/Application.php | 494 ++ .../Composer/Console/HtmlOutputFormatter.php | 90 + .../Composer/DependencyResolver/Decisions.php | 211 + .../DependencyResolver/DefaultPolicy.php | 285 + .../DependencyResolver/GenericRule.php | 91 + .../Operation/InstallOperation.php | 66 + .../Operation/MarkAliasInstalledOperation.php | 67 + .../MarkAliasUninstalledOperation.php | 67 + .../Operation/OperationInterface.php | 42 + .../Operation/SolverOperation.php | 50 + .../Operation/UninstallOperation.php | 66 + .../Operation/UpdateOperation.php | 80 + .../DependencyResolver/PolicyInterface.php | 27 + .../src/Composer/DependencyResolver/Pool.php | 378 + .../Composer/DependencyResolver/Problem.php | 257 + .../Composer/DependencyResolver/Request.php | 78 + .../src/Composer/DependencyResolver/Rule.php | 268 + .../DependencyResolver/Rule2Literals.php | 113 + .../Composer/DependencyResolver/RuleSet.php | 176 + .../DependencyResolver/RuleSetGenerator.php | 376 + .../DependencyResolver/RuleSetIterator.php | 94 + .../DependencyResolver/RuleWatchChain.php | 52 + .../DependencyResolver/RuleWatchGraph.php | 144 + .../DependencyResolver/RuleWatchNode.php | 113 + .../Composer/DependencyResolver/Solver.php | 874 +++ .../DependencyResolver/SolverBugException.php | 27 + .../SolverProblemsException.php | 88 + .../DependencyResolver/Transaction.php | 244 + .../Composer/Downloader/ArchiveDownloader.php | 135 + .../Downloader/ChangeReportInterface.php | 32 + .../Composer/Downloader/DownloadManager.php | 325 + .../Downloader/DownloaderInterface.php | 64 + .../Downloader/DvcsDownloaderInterface.php | 32 + .../Composer/Downloader/FileDownloader.php | 322 + .../Downloader/FilesystemException.php | 26 + .../Composer/Downloader/FossilDownloader.php | 116 + .../src/Composer/Downloader/GitDownloader.php | 528 ++ .../Composer/Downloader/GzipDownloader.php | 84 + .../src/Composer/Downloader/HgDownloader.php | 100 + .../Composer/Downloader/PathDownloader.php | 224 + .../Downloader/PearPackageExtractor.php | 266 + .../Downloader/PerforceDownloader.php | 112 + .../Composer/Downloader/PharDownloader.php | 36 + .../src/Composer/Downloader/RarDownloader.php | 91 + .../src/Composer/Downloader/SvnDownloader.php | 225 + .../src/Composer/Downloader/TarDownloader.php | 31 + .../Downloader/TransportException.php | 53 + .../VcsCapableDownloaderInterface.php | 32 + .../src/Composer/Downloader/VcsDownloader.php | 293 + .../src/Composer/Downloader/XzDownloader.php | 60 + .../src/Composer/Downloader/ZipDownloader.php | 230 + .../src/Composer/EventDispatcher/Event.php | 103 + .../EventDispatcher/EventDispatcher.php | 544 ++ .../EventSubscriberInterface.php | 48 + .../ScriptExecutionException.php | 20 + .../src/Composer/Exception/NoSslException.php | 20 + .../composer/src/Composer/Factory.php | 653 ++ .../composer/src/Composer/IO/BaseIO.php | 279 + .../composer/src/Composer/IO/BufferIO.php | 86 + .../composer/src/Composer/IO/ConsoleIO.php | 346 + .../composer/src/Composer/IO/IOInterface.php | 207 + .../composer/src/Composer/IO/NullIO.php | 129 + .../composer/src/Composer/Installer.php | 1803 +++++ .../Composer/Installer/BinaryInstaller.php | 214 + .../Installer/BinaryPresenceInterface.php | 30 + .../Installer/InstallationManager.php | 326 + .../src/Composer/Installer/InstallerEvent.php | 161 + .../Composer/Installer/InstallerEvents.php | 43 + .../Composer/Installer/InstallerInterface.php | 79 + .../Composer/Installer/LibraryInstaller.php | 232 + .../Installer/MetapackageInstaller.php | 100 + .../src/Composer/Installer/NoopInstaller.php | 88 + .../src/Composer/Installer/PackageEvent.php | 65 + .../src/Composer/Installer/PackageEvents.php | 75 + .../Installer/PearBinaryInstaller.php | 144 + .../src/Composer/Installer/PearInstaller.php | 84 + .../Composer/Installer/PluginInstaller.php | 84 + .../Composer/Installer/ProjectInstaller.php | 99 + .../Installer/SuggestedPackagesReporter.php | 151 + .../composer/src/Composer/Json/JsonFile.php | 306 + .../src/Composer/Json/JsonFormatter.php | 134 + .../src/Composer/Json/JsonManipulator.php | 522 ++ .../Composer/Json/JsonValidationException.php | 34 + .../src/Composer/Package/AliasPackage.php | 414 + .../Archiver/ArchivableFilesFilter.php | 44 + .../Archiver/ArchivableFilesFinder.php | 105 + .../Package/Archiver/ArchiveManager.php | 183 + .../Package/Archiver/ArchiverInterface.php | 43 + .../Package/Archiver/BaseExcludeFilter.php | 148 + .../Archiver/ComposerExcludeFilter.php | 31 + .../Package/Archiver/GitExcludeFilter.php | 79 + .../Package/Archiver/HgExcludeFilter.php | 107 + .../Package/Archiver/PharArchiver.php | 97 + .../Composer/Package/Archiver/ZipArchiver.php | 74 + .../src/Composer/Package/BasePackage.php | 251 + .../Composer/Package/Comparer/Comparer.php | 129 + .../src/Composer/Package/CompletePackage.php | 199 + .../Package/CompletePackageInterface.php | 95 + .../Composer/Package/Dumper/ArrayDumper.php | 151 + .../composer/src/Composer/Package/Link.php | 128 + .../LinkConstraint/EmptyConstraint.php | 24 + .../LinkConstraintInterface.php | 24 + .../LinkConstraint/MultiConstraint.php | 24 + .../LinkConstraint/SpecificConstraint.php | 24 + .../LinkConstraint/VersionConstraint.php | 24 + .../Composer/Package/Loader/ArrayLoader.php | 290 + .../Loader/InvalidPackageException.php | 46 + .../Composer/Package/Loader/JsonLoader.php | 45 + .../Package/Loader/LoaderInterface.php | 30 + .../Package/Loader/RootPackageLoader.php | 264 + .../Package/Loader/ValidatingArrayLoader.php | 499 ++ .../composer/src/Composer/Package/Locker.php | 438 ++ .../composer/src/Composer/Package/Package.php | 612 ++ .../src/Composer/Package/PackageInterface.php | 389 + .../src/Composer/Package/RootAliasPackage.php | 173 + .../src/Composer/Package/RootPackage.php | 136 + .../Composer/Package/RootPackageInterface.php | 142 + .../Package/Version/VersionGuesser.php | 322 + .../Package/Version/VersionParser.php | 81 + .../Package/Version/VersionSelector.php | 176 + .../Composer/Plugin/Capability/Capability.php | 23 + .../Plugin/Capability/CommandProvider.php | 33 + .../composer/src/Composer/Plugin/Capable.php | 43 + .../src/Composer/Plugin/CommandEvent.php | 88 + .../src/Composer/Plugin/PluginEvents.php | 61 + .../src/Composer/Plugin/PluginInterface.php | 39 + .../src/Composer/Plugin/PluginManager.php | 406 + .../Composer/Plugin/PreCommandRunEvent.php | 68 + .../Composer/Plugin/PreFileDownloadEvent.php | 78 + .../Question/StrictConfirmationQuestion.php | 94 + .../Composer/Repository/ArrayRepository.php | 208 + .../Repository/ArtifactRepository.php | 107 + .../Composer/Repository/BaseRepository.php | 178 + .../Repository/ComposerRepository.php | 841 ++ .../Repository/CompositeRepository.php | 164 + .../ConfigurableRepositoryInterface.php | 23 + .../Repository/FilesystemRepository.php | 97 + .../Repository/InstalledArrayRepository.php | 24 + .../InstalledFilesystemRepository.php | 22 + .../InstalledRepositoryInterface.php | 24 + .../Repository/InvalidRepositoryException.php | 22 + .../Composer/Repository/PackageRepository.php | 61 + .../Composer/Repository/PathRepository.php | 201 + .../Repository/Pear/BaseChannelReader.php | 82 + .../Composer/Repository/Pear/ChannelInfo.php | 67 + .../Repository/Pear/ChannelReader.php | 101 + .../Repository/Pear/ChannelRest10Reader.php | 164 + .../Repository/Pear/ChannelRest11Reader.php | 139 + .../Repository/Pear/DependencyConstraint.php | 60 + .../Repository/Pear/DependencyInfo.php | 50 + .../Pear/PackageDependencyParser.php | 317 + .../Composer/Repository/Pear/PackageInfo.php | 94 + .../Composer/Repository/Pear/ReleaseInfo.php | 50 + .../Composer/Repository/PearRepository.php | 198 + .../Repository/PlatformRepository.php | 342 + .../Composer/Repository/RepositoryFactory.php | 169 + .../Repository/RepositoryInterface.php | 74 + .../Composer/Repository/RepositoryManager.php | 177 + .../RepositorySecurityException.php | 22 + .../Repository/Vcs/BitbucketDriver.php | 452 ++ .../Composer/Repository/Vcs/FossilDriver.php | 243 + .../Repository/Vcs/GitBitbucketDriver.php | 91 + .../src/Composer/Repository/Vcs/GitDriver.php | 226 + .../Composer/Repository/Vcs/GitHubDriver.php | 476 ++ .../Composer/Repository/Vcs/GitLabDriver.php | 520 ++ .../Repository/Vcs/HgBitbucketDriver.php | 91 + .../src/Composer/Repository/Vcs/HgDriver.php | 236 + .../Repository/Vcs/PerforceDriver.php | 186 + .../src/Composer/Repository/Vcs/SvnDriver.php | 397 + .../src/Composer/Repository/Vcs/VcsDriver.php | 175 + .../Repository/Vcs/VcsDriverInterface.php | 117 + .../src/Composer/Repository/VcsRepository.php | 410 + .../Repository/VersionCacheInterface.php | 23 + .../Repository/WritableArrayRepository.php | 66 + .../WritableRepositoryInterface.php | 54 + .../src/Composer/Script/CommandEvent.php | 22 + .../composer/src/Composer/Script/Event.php | 133 + .../src/Composer/Script/PackageEvent.php | 24 + .../src/Composer/Script/ScriptEvents.php | 193 + .../composer/src/Composer/SelfUpdate/Keys.php | 36 + .../src/Composer/SelfUpdate/Versions.php | 75 + .../composer/src/Composer/Util/AuthHelper.php | 63 + .../composer/src/Composer/Util/Bitbucket.php | 245 + .../src/Composer/Util/ComposerMirror.php | 57 + .../src/Composer/Util/ConfigValidator.php | 191 + .../src/Composer/Util/ErrorHandler.php | 82 + .../composer/src/Composer/Util/Filesystem.php | 717 ++ .../composer/src/Composer/Util/Git.php | 401 + .../composer/src/Composer/Util/GitHub.php | 180 + .../composer/src/Composer/Util/GitLab.php | 172 + .../composer/src/Composer/Util/Hg.php | 94 + .../composer/src/Composer/Util/IniHelper.php | 64 + .../src/Composer/Util/NoProxyPattern.php | 147 + .../src/Composer/Util/PackageSorter.php | 92 + .../composer/src/Composer/Util/Perforce.php | 579 ++ .../composer/src/Composer/Util/Platform.php | 92 + .../src/Composer/Util/ProcessExecutor.php | 201 + .../src/Composer/Util/RemoteFilesystem.php | 1133 +++ .../composer/src/Composer/Util/Silencer.php | 78 + .../src/Composer/Util/SpdxLicense.php | 24 + .../Composer/Util/StreamContextFactory.php | 177 + .../composer/src/Composer/Util/Svn.php | 381 + .../composer/src/Composer/Util/TlsHelper.php | 202 + .../composer/src/Composer/Util/Url.php | 55 + .../composer/src/Composer/Util/Zip.php | 108 + .../composer/src/Composer/XdebugHandler.php | 31 + vendor/composer/composer/src/bootstrap.php | 24 + vendor/composer/installed.json | 6968 ++++++++++++++++- vendor/composer/semver/CHANGELOG.md | 78 + vendor/composer/semver/LICENSE | 19 + vendor/composer/semver/README.md | 70 + vendor/composer/semver/composer.json | 57 + vendor/composer/semver/src/Comparator.php | 111 + .../src/Constraint/AbstractConstraint.php | 63 + .../semver/src/Constraint/Constraint.php | 215 + .../src/Constraint/ConstraintInterface.php | 32 + .../semver/src/Constraint/EmptyConstraint.php | 59 + .../semver/src/Constraint/MultiConstraint.php | 120 + vendor/composer/semver/src/Semver.php | 127 + vendor/composer/semver/src/VersionParser.php | 545 ++ vendor/composer/spdx-licenses/.php_cs.dist | 59 + vendor/composer/spdx-licenses/CHANGELOG.md | 94 + vendor/composer/spdx-licenses/LICENSE | 19 + vendor/composer/spdx-licenses/README.md | 69 + vendor/composer/spdx-licenses/composer.json | 56 + .../spdx-licenses/res/spdx-exceptions.json | 116 + .../spdx-licenses/res/spdx-licenses.json | 2047 +++++ .../spdx-licenses/src/SpdxLicenses.php | 343 + vendor/composer/xdebug-handler/CHANGELOG.md | 70 + vendor/composer/xdebug-handler/LICENSE | 21 + vendor/composer/xdebug-handler/README.md | 288 + vendor/composer/xdebug-handler/composer.json | 40 + .../composer/xdebug-handler/src/PhpConfig.php | 73 + .../composer/xdebug-handler/src/Process.php | 181 + vendor/composer/xdebug-handler/src/Status.php | 163 + .../xdebug-handler/src/XdebugHandler.php | 565 ++ vendor/firebase/php-jwt/README.md | 85 +- vendor/firebase/php-jwt/composer.json | 4 +- vendor/firebase/php-jwt/composer.lock | 19 - vendor/firebase/php-jwt/package.xml | 77 - vendor/firebase/php-jwt/src/JWT.php | 198 +- 339 files changed, 78756 insertions(+), 146 deletions(-) create mode 100644 vendor/composer/autoload_files.php create mode 100644 vendor/composer/ca-bundle/LICENSE create mode 100644 vendor/composer/ca-bundle/README.md create mode 100644 vendor/composer/ca-bundle/composer.json create mode 100644 vendor/composer/ca-bundle/res/cacert.pem create mode 100644 vendor/composer/ca-bundle/src/CaBundle.php create mode 100644 vendor/composer/composer/.editorconfig create mode 100644 vendor/composer/composer/.gitattributes create mode 100644 vendor/composer/composer/.gitignore create mode 100644 vendor/composer/composer/CHANGELOG.md create mode 100644 vendor/composer/composer/LICENSE create mode 100644 vendor/composer/composer/PORTING_INFO create mode 100644 vendor/composer/composer/README.md create mode 100755 vendor/composer/composer/bin/compile create mode 100755 vendor/composer/composer/bin/composer create mode 100644 vendor/composer/composer/composer.json create mode 100644 vendor/composer/composer/doc/00-intro.md create mode 100644 vendor/composer/composer/doc/01-basic-usage.md create mode 100644 vendor/composer/composer/doc/02-libraries.md create mode 100644 vendor/composer/composer/doc/03-cli.md create mode 100644 vendor/composer/composer/doc/04-schema.md create mode 100644 vendor/composer/composer/doc/05-repositories.md create mode 100644 vendor/composer/composer/doc/06-config.md create mode 100644 vendor/composer/composer/doc/07-community.md create mode 100644 vendor/composer/composer/doc/articles/aliases.md create mode 100644 vendor/composer/composer/doc/articles/autoloader-optimization.md create mode 100644 vendor/composer/composer/doc/articles/custom-installers.md create mode 100644 vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md create mode 100644 vendor/composer/composer/doc/articles/http-basic-authentication.md create mode 100644 vendor/composer/composer/doc/articles/plugins.md create mode 100644 vendor/composer/composer/doc/articles/scripts.md create mode 100644 vendor/composer/composer/doc/articles/troubleshooting.md create mode 100644 vendor/composer/composer/doc/articles/vendor-binaries.md create mode 100644 vendor/composer/composer/doc/articles/versions.md create mode 100644 vendor/composer/composer/doc/dev/DefaultPolicy.md create mode 100644 vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md create mode 100644 vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md create mode 100644 vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md create mode 100644 vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md create mode 100644 vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md create mode 100644 vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md create mode 100644 vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md create mode 100644 vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md create mode 100644 vendor/composer/composer/doc/fixtures/fixtures.md create mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json create mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json create mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json create mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json create mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json create mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json create mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json create mode 100644 vendor/composer/composer/res/composer-repository-schema.json create mode 100644 vendor/composer/composer/res/composer-schema.json create mode 100644 vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php create mode 100644 vendor/composer/composer/src/Composer/Autoload/ClassLoader.php create mode 100644 vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php create mode 100644 vendor/composer/composer/src/Composer/Cache.php create mode 100644 vendor/composer/composer/src/Composer/Command/AboutCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/ArchiveCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/BaseCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/ConfigCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/DependsCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/ExecCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/GlobalCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/HomeCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/InitCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/InstallCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/LicensesCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/OutdatedCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/RemoveCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/RequireCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/RunScriptCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/SearchCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/ShowCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/StatusCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/SuggestsCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/UpdateCommand.php create mode 100644 vendor/composer/composer/src/Composer/Command/ValidateCommand.php create mode 100644 vendor/composer/composer/src/Composer/Compiler.php create mode 100644 vendor/composer/composer/src/Composer/Composer.php create mode 100644 vendor/composer/composer/src/Composer/Config.php create mode 100644 vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php create mode 100644 vendor/composer/composer/src/Composer/Config/JsonConfigSource.php create mode 100644 vendor/composer/composer/src/Composer/Console/Application.php create mode 100644 vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Pool.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Problem.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Request.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Rule.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Solver.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php create mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/DownloadManager.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/FileDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/FilesystemException.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/GitDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/HgDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/PathDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/PharDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/RarDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/TarDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/TransportException.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/XzDownloader.php create mode 100644 vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php create mode 100644 vendor/composer/composer/src/Composer/EventDispatcher/Event.php create mode 100644 vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php create mode 100644 vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php create mode 100644 vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php create mode 100644 vendor/composer/composer/src/Composer/Exception/NoSslException.php create mode 100644 vendor/composer/composer/src/Composer/Factory.php create mode 100644 vendor/composer/composer/src/Composer/IO/BaseIO.php create mode 100644 vendor/composer/composer/src/Composer/IO/BufferIO.php create mode 100644 vendor/composer/composer/src/Composer/IO/ConsoleIO.php create mode 100644 vendor/composer/composer/src/Composer/IO/IOInterface.php create mode 100644 vendor/composer/composer/src/Composer/IO/NullIO.php create mode 100644 vendor/composer/composer/src/Composer/Installer.php create mode 100644 vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php create mode 100644 vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php create mode 100644 vendor/composer/composer/src/Composer/Installer/InstallationManager.php create mode 100644 vendor/composer/composer/src/Composer/Installer/InstallerEvent.php create mode 100644 vendor/composer/composer/src/Composer/Installer/InstallerEvents.php create mode 100644 vendor/composer/composer/src/Composer/Installer/InstallerInterface.php create mode 100644 vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php create mode 100644 vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php create mode 100644 vendor/composer/composer/src/Composer/Installer/NoopInstaller.php create mode 100644 vendor/composer/composer/src/Composer/Installer/PackageEvent.php create mode 100644 vendor/composer/composer/src/Composer/Installer/PackageEvents.php create mode 100644 vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php create mode 100644 vendor/composer/composer/src/Composer/Installer/PearInstaller.php create mode 100644 vendor/composer/composer/src/Composer/Installer/PluginInstaller.php create mode 100644 vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php create mode 100644 vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php create mode 100644 vendor/composer/composer/src/Composer/Json/JsonFile.php create mode 100644 vendor/composer/composer/src/Composer/Json/JsonFormatter.php create mode 100644 vendor/composer/composer/src/Composer/Json/JsonManipulator.php create mode 100644 vendor/composer/composer/src/Composer/Json/JsonValidationException.php create mode 100644 vendor/composer/composer/src/Composer/Package/AliasPackage.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php create mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php create mode 100644 vendor/composer/composer/src/Composer/Package/BasePackage.php create mode 100644 vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php create mode 100644 vendor/composer/composer/src/Composer/Package/CompletePackage.php create mode 100644 vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php create mode 100644 vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php create mode 100644 vendor/composer/composer/src/Composer/Package/Link.php create mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php create mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php create mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php create mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php create mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php create mode 100644 vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php create mode 100644 vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php create mode 100644 vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php create mode 100644 vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php create mode 100644 vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php create mode 100644 vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php create mode 100644 vendor/composer/composer/src/Composer/Package/Locker.php create mode 100644 vendor/composer/composer/src/Composer/Package/Package.php create mode 100644 vendor/composer/composer/src/Composer/Package/PackageInterface.php create mode 100644 vendor/composer/composer/src/Composer/Package/RootAliasPackage.php create mode 100644 vendor/composer/composer/src/Composer/Package/RootPackage.php create mode 100644 vendor/composer/composer/src/Composer/Package/RootPackageInterface.php create mode 100644 vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php create mode 100644 vendor/composer/composer/src/Composer/Package/Version/VersionParser.php create mode 100644 vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/Capable.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/CommandEvent.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/PluginEvents.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/PluginInterface.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/PluginManager.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php create mode 100644 vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php create mode 100644 vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php create mode 100644 vendor/composer/composer/src/Composer/Repository/ArrayRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/BaseRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/ComposerRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/CompositeRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php create mode 100644 vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php create mode 100644 vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php create mode 100644 vendor/composer/composer/src/Composer/Repository/PackageRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/PathRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php create mode 100644 vendor/composer/composer/src/Composer/Repository/PearRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/PlatformRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php create mode 100644 vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php create mode 100644 vendor/composer/composer/src/Composer/Repository/RepositoryManager.php create mode 100644 vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php create mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php create mode 100644 vendor/composer/composer/src/Composer/Repository/VcsRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php create mode 100644 vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php create mode 100644 vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php create mode 100644 vendor/composer/composer/src/Composer/Script/CommandEvent.php create mode 100644 vendor/composer/composer/src/Composer/Script/Event.php create mode 100644 vendor/composer/composer/src/Composer/Script/PackageEvent.php create mode 100644 vendor/composer/composer/src/Composer/Script/ScriptEvents.php create mode 100644 vendor/composer/composer/src/Composer/SelfUpdate/Keys.php create mode 100644 vendor/composer/composer/src/Composer/SelfUpdate/Versions.php create mode 100644 vendor/composer/composer/src/Composer/Util/AuthHelper.php create mode 100644 vendor/composer/composer/src/Composer/Util/Bitbucket.php create mode 100644 vendor/composer/composer/src/Composer/Util/ComposerMirror.php create mode 100644 vendor/composer/composer/src/Composer/Util/ConfigValidator.php create mode 100644 vendor/composer/composer/src/Composer/Util/ErrorHandler.php create mode 100644 vendor/composer/composer/src/Composer/Util/Filesystem.php create mode 100644 vendor/composer/composer/src/Composer/Util/Git.php create mode 100644 vendor/composer/composer/src/Composer/Util/GitHub.php create mode 100644 vendor/composer/composer/src/Composer/Util/GitLab.php create mode 100644 vendor/composer/composer/src/Composer/Util/Hg.php create mode 100644 vendor/composer/composer/src/Composer/Util/IniHelper.php create mode 100644 vendor/composer/composer/src/Composer/Util/NoProxyPattern.php create mode 100644 vendor/composer/composer/src/Composer/Util/PackageSorter.php create mode 100644 vendor/composer/composer/src/Composer/Util/Perforce.php create mode 100644 vendor/composer/composer/src/Composer/Util/Platform.php create mode 100644 vendor/composer/composer/src/Composer/Util/ProcessExecutor.php create mode 100644 vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php create mode 100644 vendor/composer/composer/src/Composer/Util/Silencer.php create mode 100644 vendor/composer/composer/src/Composer/Util/SpdxLicense.php create mode 100644 vendor/composer/composer/src/Composer/Util/StreamContextFactory.php create mode 100644 vendor/composer/composer/src/Composer/Util/Svn.php create mode 100644 vendor/composer/composer/src/Composer/Util/TlsHelper.php create mode 100644 vendor/composer/composer/src/Composer/Util/Url.php create mode 100644 vendor/composer/composer/src/Composer/Util/Zip.php create mode 100644 vendor/composer/composer/src/Composer/XdebugHandler.php create mode 100644 vendor/composer/composer/src/bootstrap.php create mode 100644 vendor/composer/semver/CHANGELOG.md create mode 100644 vendor/composer/semver/LICENSE create mode 100644 vendor/composer/semver/README.md create mode 100644 vendor/composer/semver/composer.json create mode 100644 vendor/composer/semver/src/Comparator.php create mode 100644 vendor/composer/semver/src/Constraint/AbstractConstraint.php create mode 100644 vendor/composer/semver/src/Constraint/Constraint.php create mode 100644 vendor/composer/semver/src/Constraint/ConstraintInterface.php create mode 100644 vendor/composer/semver/src/Constraint/EmptyConstraint.php create mode 100644 vendor/composer/semver/src/Constraint/MultiConstraint.php create mode 100644 vendor/composer/semver/src/Semver.php create mode 100644 vendor/composer/semver/src/VersionParser.php create mode 100644 vendor/composer/spdx-licenses/.php_cs.dist create mode 100644 vendor/composer/spdx-licenses/CHANGELOG.md create mode 100644 vendor/composer/spdx-licenses/LICENSE create mode 100644 vendor/composer/spdx-licenses/README.md create mode 100644 vendor/composer/spdx-licenses/composer.json create mode 100644 vendor/composer/spdx-licenses/res/spdx-exceptions.json create mode 100644 vendor/composer/spdx-licenses/res/spdx-licenses.json create mode 100644 vendor/composer/spdx-licenses/src/SpdxLicenses.php create mode 100644 vendor/composer/xdebug-handler/CHANGELOG.md create mode 100644 vendor/composer/xdebug-handler/LICENSE create mode 100644 vendor/composer/xdebug-handler/README.md create mode 100644 vendor/composer/xdebug-handler/composer.json create mode 100644 vendor/composer/xdebug-handler/src/PhpConfig.php create mode 100644 vendor/composer/xdebug-handler/src/Process.php create mode 100644 vendor/composer/xdebug-handler/src/Status.php create mode 100644 vendor/composer/xdebug-handler/src/XdebugHandler.php delete mode 100644 vendor/firebase/php-jwt/composer.lock delete mode 100644 vendor/firebase/php-jwt/package.xml diff --git a/composer.json b/composer.json index 2a716ae..83e8414 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "wpunit-test": "vendor/bin/codecept run wpunit" }, "require": { - "firebase/php-jwt": "^4.0" + "firebase/php-jwt": "^5.0" }, "require-dev": { "lucatume/wp-browser": ">=2.2.1 <2.2.8" diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 94f131b..a52f44e 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -6,12 +6,2805 @@ $baseDir = dirname($vendorDir); return array( + 'BaconStringUtils\\Filter\\Slugify' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/Filter/Slugify.php', + 'BaconStringUtils\\Filter\\SlugifyFactory' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/Filter/SlugifyFactory.php', + 'BaconStringUtils\\Module' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/Module.php', + 'BaconStringUtils\\Slugifier' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/Slugifier.php', + 'BaconStringUtils\\SlugifierFactory' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/SlugifierFactory.php', + 'BaconStringUtils\\UniDecoder' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/UniDecoder.php', + 'Behat\\Gherkin\\Cache\\CacheInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Cache/CacheInterface.php', + 'Behat\\Gherkin\\Cache\\FileCache' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Cache/FileCache.php', + 'Behat\\Gherkin\\Cache\\MemoryCache' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Cache/MemoryCache.php', + 'Behat\\Gherkin\\Exception\\CacheException' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/CacheException.php', + 'Behat\\Gherkin\\Exception\\Exception' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/Exception.php', + 'Behat\\Gherkin\\Exception\\LexerException' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/LexerException.php', + 'Behat\\Gherkin\\Exception\\NodeException' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/NodeException.php', + 'Behat\\Gherkin\\Exception\\ParserException' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/ParserException.php', + 'Behat\\Gherkin\\Filter\\ComplexFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/ComplexFilter.php', + 'Behat\\Gherkin\\Filter\\ComplexFilterInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/ComplexFilterInterface.php', + 'Behat\\Gherkin\\Filter\\FeatureFilterInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/FeatureFilterInterface.php', + 'Behat\\Gherkin\\Filter\\FilterInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/FilterInterface.php', + 'Behat\\Gherkin\\Filter\\LineFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/LineFilter.php', + 'Behat\\Gherkin\\Filter\\LineRangeFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/LineRangeFilter.php', + 'Behat\\Gherkin\\Filter\\NameFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/NameFilter.php', + 'Behat\\Gherkin\\Filter\\NarrativeFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/NarrativeFilter.php', + 'Behat\\Gherkin\\Filter\\PathsFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/PathsFilter.php', + 'Behat\\Gherkin\\Filter\\RoleFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/RoleFilter.php', + 'Behat\\Gherkin\\Filter\\SimpleFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/SimpleFilter.php', + 'Behat\\Gherkin\\Filter\\TagFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/TagFilter.php', + 'Behat\\Gherkin\\Gherkin' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Gherkin.php', + 'Behat\\Gherkin\\Keywords\\ArrayKeywords' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/ArrayKeywords.php', + 'Behat\\Gherkin\\Keywords\\CachedArrayKeywords' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/CachedArrayKeywords.php', + 'Behat\\Gherkin\\Keywords\\CucumberKeywords' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/CucumberKeywords.php', + 'Behat\\Gherkin\\Keywords\\KeywordsDumper' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/KeywordsDumper.php', + 'Behat\\Gherkin\\Keywords\\KeywordsInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/KeywordsInterface.php', + 'Behat\\Gherkin\\Lexer' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Lexer.php', + 'Behat\\Gherkin\\Loader\\AbstractFileLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/AbstractFileLoader.php', + 'Behat\\Gherkin\\Loader\\ArrayLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/ArrayLoader.php', + 'Behat\\Gherkin\\Loader\\DirectoryLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/DirectoryLoader.php', + 'Behat\\Gherkin\\Loader\\FileLoaderInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/FileLoaderInterface.php', + 'Behat\\Gherkin\\Loader\\GherkinFileLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/GherkinFileLoader.php', + 'Behat\\Gherkin\\Loader\\LoaderInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/LoaderInterface.php', + 'Behat\\Gherkin\\Loader\\YamlFileLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/YamlFileLoader.php', + 'Behat\\Gherkin\\Node\\ArgumentInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ArgumentInterface.php', + 'Behat\\Gherkin\\Node\\BackgroundNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/BackgroundNode.php', + 'Behat\\Gherkin\\Node\\ExampleNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ExampleNode.php', + 'Behat\\Gherkin\\Node\\ExampleTableNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ExampleTableNode.php', + 'Behat\\Gherkin\\Node\\FeatureNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/FeatureNode.php', + 'Behat\\Gherkin\\Node\\KeywordNodeInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/KeywordNodeInterface.php', + 'Behat\\Gherkin\\Node\\NodeInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/NodeInterface.php', + 'Behat\\Gherkin\\Node\\OutlineNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/OutlineNode.php', + 'Behat\\Gherkin\\Node\\PyStringNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/PyStringNode.php', + 'Behat\\Gherkin\\Node\\ScenarioInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioInterface.php', + 'Behat\\Gherkin\\Node\\ScenarioLikeInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioLikeInterface.php', + 'Behat\\Gherkin\\Node\\ScenarioNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioNode.php', + 'Behat\\Gherkin\\Node\\StepContainerInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/StepContainerInterface.php', + 'Behat\\Gherkin\\Node\\StepNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/StepNode.php', + 'Behat\\Gherkin\\Node\\TableNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/TableNode.php', + 'Behat\\Gherkin\\Node\\TaggedNodeInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/TaggedNodeInterface.php', + 'Behat\\Gherkin\\Parser' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Parser.php', + 'Cache_Command' => $vendorDir . '/wp-cli/cache-command/src/Cache_Command.php', + 'Capabilities_Command' => $vendorDir . '/wp-cli/role-command/src/Capabilities_Command.php', + 'Carbon\\Carbon' => $vendorDir . '/nesbot/carbon/src/Carbon/Carbon.php', + 'Carbon\\CarbonImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonImmutable.php', + 'Carbon\\CarbonInterface' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterface.php', + 'Carbon\\CarbonInterval' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterval.php', + 'Carbon\\CarbonPeriod' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonPeriod.php', + 'Carbon\\CarbonTimeZone' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php', + 'Carbon\\Cli\\Invoker' => $vendorDir . '/nesbot/carbon/src/Carbon/Cli/Invoker.php', + 'Carbon\\Exceptions\\BadUnitException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/BadUnitException.php', + 'Carbon\\Exceptions\\InvalidDateException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php', + 'Carbon\\Exceptions\\NotAPeriodException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php', + 'Carbon\\Exceptions\\NotLocaleAwareException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php', + 'Carbon\\Exceptions\\ParseErrorException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php', + 'Carbon\\Factory' => $vendorDir . '/nesbot/carbon/src/Carbon/Factory.php', + 'Carbon\\FactoryImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/FactoryImmutable.php', + 'Carbon\\Language' => $vendorDir . '/nesbot/carbon/src/Carbon/Language.php', + 'Carbon\\Laravel\\ServiceProvider' => $vendorDir . '/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php', + 'Carbon\\Traits\\Boundaries' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Boundaries.php', + 'Carbon\\Traits\\Cast' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Cast.php', + 'Carbon\\Traits\\Comparison' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Comparison.php', + 'Carbon\\Traits\\Converter' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Converter.php', + 'Carbon\\Traits\\Creator' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Creator.php', + 'Carbon\\Traits\\Date' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Date.php', + 'Carbon\\Traits\\Difference' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Difference.php', + 'Carbon\\Traits\\Localization' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Localization.php', + 'Carbon\\Traits\\Macro' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Macro.php', + 'Carbon\\Traits\\Mixin' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Mixin.php', + 'Carbon\\Traits\\Modifiers' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Modifiers.php', + 'Carbon\\Traits\\Mutability' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Mutability.php', + 'Carbon\\Traits\\ObjectInitialisation' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php', + 'Carbon\\Traits\\Options' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Options.php', + 'Carbon\\Traits\\Rounding' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Rounding.php', + 'Carbon\\Traits\\Serialization' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Serialization.php', + 'Carbon\\Traits\\Test' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Test.php', + 'Carbon\\Traits\\Timestamp' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Timestamp.php', + 'Carbon\\Traits\\Units' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Units.php', + 'Carbon\\Traits\\Week' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Week.php', + 'Carbon\\Translator' => $vendorDir . '/nesbot/carbon/src/Carbon/Translator.php', + 'Checksum_Base_Command' => $vendorDir . '/wp-cli/checksum-command/src/Checksum_Base_Command.php', + 'Checksum_Core_Command' => $vendorDir . '/wp-cli/checksum-command/src/Checksum_Core_Command.php', + 'Checksum_Plugin_Command' => $vendorDir . '/wp-cli/checksum-command/src/Checksum_Plugin_Command.php', + 'Codeception\\Actor' => $vendorDir . '/codeception/codeception/src/Codeception/Actor.php', + 'Codeception\\Application' => $vendorDir . '/codeception/codeception/src/Codeception/Application.php', + 'Codeception\\Codecept' => $vendorDir . '/codeception/codeception/src/Codeception/Codecept.php', + 'Codeception\\Command\\Bootstrap' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Bootstrap.php', + 'Codeception\\Command\\Build' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Build.php', + 'Codeception\\Command\\Clean' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Clean.php', + 'Codeception\\Command\\Completion' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Completion.php', + 'Codeception\\Command\\CompletionFallback' => $vendorDir . '/codeception/codeception/src/Codeception/Command/CompletionFallback.php', + 'Codeception\\Command\\ConfigValidate' => $vendorDir . '/codeception/codeception/src/Codeception/Command/ConfigValidate.php', + 'Codeception\\Command\\Console' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Console.php', + 'Codeception\\Command\\DryRun' => $vendorDir . '/codeception/codeception/src/Codeception/Command/DryRun.php', + 'Codeception\\Command\\GenerateCept' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateCept.php', + 'Codeception\\Command\\GenerateCest' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateCest.php', + 'Codeception\\Command\\GenerateEnvironment' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateEnvironment.php', + 'Codeception\\Command\\GenerateFeature' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateFeature.php', + 'Codeception\\Command\\GenerateGroup' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateGroup.php', + 'Codeception\\Command\\GenerateHelper' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateHelper.php', + 'Codeception\\Command\\GeneratePageObject' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GeneratePageObject.php', + 'Codeception\\Command\\GenerateScenarios' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateScenarios.php', + 'Codeception\\Command\\GenerateSnapshot' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateSnapshot.php', + 'Codeception\\Command\\GenerateStepObject' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateStepObject.php', + 'Codeception\\Command\\GenerateSuite' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateSuite.php', + 'Codeception\\Command\\GenerateTest' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateTest.php', + 'Codeception\\Command\\GenerateWPAjax' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPAjax.php', + 'Codeception\\Command\\GenerateWPCanonical' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPCanonical.php', + 'Codeception\\Command\\GenerateWPRestApi' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestApi.php', + 'Codeception\\Command\\GenerateWPRestController' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestController.php', + 'Codeception\\Command\\GenerateWPRestPostTypeController' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestPostTypeController.php', + 'Codeception\\Command\\GenerateWPUnit' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPUnit.php', + 'Codeception\\Command\\GenerateWPXMLRPC' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPXMLRPC.php', + 'Codeception\\Command\\GherkinSnippets' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GherkinSnippets.php', + 'Codeception\\Command\\GherkinSteps' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GherkinSteps.php', + 'Codeception\\Command\\Init' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Init.php', + 'Codeception\\Command\\Run' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Run.php', + 'Codeception\\Command\\SelfUpdate' => $vendorDir . '/codeception/codeception/src/Codeception/Command/SelfUpdate.php', + 'Codeception\\Command\\Shared\\Config' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Shared/Config.php', + 'Codeception\\Command\\Shared\\FileSystem' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Shared/FileSystem.php', + 'Codeception\\Command\\Shared\\Style' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Shared/Style.php', + 'Codeception\\Configuration' => $vendorDir . '/codeception/codeception/src/Codeception/Configuration.php', + 'Codeception\\Coverage\\Filter' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Filter.php', + 'Codeception\\Coverage\\Subscriber\\Local' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Subscriber/Local.php', + 'Codeception\\Coverage\\Subscriber\\LocalServer' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Subscriber/LocalServer.php', + 'Codeception\\Coverage\\Subscriber\\Printer' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Subscriber/Printer.php', + 'Codeception\\Coverage\\Subscriber\\RemoteServer' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Subscriber/RemoteServer.php', + 'Codeception\\Coverage\\SuiteSubscriber' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/SuiteSubscriber.php', + 'Codeception\\CustomCommandInterface' => $vendorDir . '/codeception/codeception/src/Codeception/CustomCommandInterface.php', + 'Codeception\\Event\\FailEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/FailEvent.php', + 'Codeception\\Event\\PrintResultEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/PrintResultEvent.php', + 'Codeception\\Event\\StepEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/StepEvent.php', + 'Codeception\\Event\\SuiteEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/SuiteEvent.php', + 'Codeception\\Event\\TestEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/TestEvent.php', + 'Codeception\\Events' => $vendorDir . '/codeception/codeception/src/Codeception/Events.php', + 'Codeception\\Example' => $vendorDir . '/codeception/codeception/src/Codeception/Example.php', + 'Codeception\\Exception\\ConditionalAssertionFailed' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ConditionalAssertionFailed.php', + 'Codeception\\Exception\\ConfigurationException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ConfigurationException.php', + 'Codeception\\Exception\\ConnectionException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ConnectionException.php', + 'Codeception\\Exception\\ContentNotFound' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ContentNotFound.php', + 'Codeception\\Exception\\ElementNotFound' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ElementNotFound.php', + 'Codeception\\Exception\\ExtensionException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ExtensionException.php', + 'Codeception\\Exception\\ExternalUrlException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ExternalUrlException.php', + 'Codeception\\Exception\\Fail' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/Fail.php', + 'Codeception\\Exception\\Incomplete' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/Incomplete.php', + 'Codeception\\Exception\\InjectionException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/InjectionException.php', + 'Codeception\\Exception\\MalformedLocatorException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/MalformedLocatorException.php', + 'Codeception\\Exception\\ModuleConfigException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ModuleConfigException.php', + 'Codeception\\Exception\\ModuleConflictException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ModuleConflictException.php', + 'Codeception\\Exception\\ModuleException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ModuleException.php', + 'Codeception\\Exception\\ModuleRequireException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ModuleRequireException.php', + 'Codeception\\Exception\\ParseException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ParseException.php', + 'Codeception\\Exception\\RemoteException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/RemoteException.php', + 'Codeception\\Exception\\Skip' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/Skip.php', + 'Codeception\\Exception\\TestParseException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/TestParseException.php', + 'Codeception\\Exception\\TestRuntimeException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/TestRuntimeException.php', + 'Codeception\\Extension' => $vendorDir . '/codeception/codeception/src/Codeception/Extension.php', + 'Codeception\\Extension\\DotReporter' => $vendorDir . '/codeception/codeception/ext/DotReporter.php', + 'Codeception\\Extension\\Logger' => $vendorDir . '/codeception/codeception/ext/Logger.php', + 'Codeception\\Extension\\Recorder' => $vendorDir . '/codeception/codeception/ext/Recorder.php', + 'Codeception\\Extension\\RunBefore' => $vendorDir . '/codeception/codeception/ext/RunBefore.php', + 'Codeception\\Extension\\RunFailed' => $vendorDir . '/codeception/codeception/ext/RunFailed.php', + 'Codeception\\Extension\\RunProcess' => $vendorDir . '/codeception/codeception/ext/RunProcess.php', + 'Codeception\\Extension\\SimpleReporter' => $vendorDir . '/codeception/codeception/ext/SimpleReporter.php', + 'Codeception\\GroupObject' => $vendorDir . '/codeception/codeception/src/Codeception/GroupObject.php', + 'Codeception\\InitTemplate' => $vendorDir . '/codeception/codeception/src/Codeception/InitTemplate.php', + 'Codeception\\Lib\\Actor\\Shared\\Comment' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Actor/Shared/Comment.php', + 'Codeception\\Lib\\Actor\\Shared\\Friend' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Actor/Shared/Friend.php', + 'Codeception\\Lib\\Connector\\Guzzle' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Guzzle.php', + 'Codeception\\Lib\\Connector\\Guzzle6' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Guzzle6.php', + 'Codeception\\Lib\\Connector\\Laravel5' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Laravel5.php', + 'Codeception\\Lib\\Connector\\Laravel5\\ExceptionHandlerDecorator' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Laravel5/ExceptionHandlerDecorator.php', + 'Codeception\\Lib\\Connector\\Lumen' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Lumen.php', + 'Codeception\\Lib\\Connector\\Lumen\\DummyKernel' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Lumen/DummyKernel.php', + 'Codeception\\Lib\\Connector\\Phalcon' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Phalcon.php', + 'Codeception\\Lib\\Connector\\Phalcon\\MemorySession' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Phalcon/MemorySession.php', + 'Codeception\\Lib\\Connector\\Shared\\LaravelCommon' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Shared/LaravelCommon.php', + 'Codeception\\Lib\\Connector\\Shared\\PhpSuperGlobalsConverter' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Shared/PhpSuperGlobalsConverter.php', + 'Codeception\\Lib\\Connector\\Symfony' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Symfony.php', + 'Codeception\\Lib\\Connector\\Universal' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Universal.php', + 'Codeception\\Lib\\Connector\\Yii1' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii1.php', + 'Codeception\\Lib\\Connector\\Yii2' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2.php', + 'Codeception\\Lib\\Connector\\Yii2\\ConnectionWatcher' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/ConnectionWatcher.php', + 'Codeception\\Lib\\Connector\\Yii2\\FixturesStore' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/FixturesStore.php', + 'Codeception\\Lib\\Connector\\Yii2\\Logger' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/Logger.php', + 'Codeception\\Lib\\Connector\\Yii2\\TestMailer' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/TestMailer.php', + 'Codeception\\Lib\\Connector\\Yii2\\TransactionForcer' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/TransactionForcer.php', + 'Codeception\\Lib\\Connector\\ZF1' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZF1.php', + 'Codeception\\Lib\\Connector\\ZF2' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZF2.php', + 'Codeception\\Lib\\Connector\\ZF2\\PersistentServiceManager' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZF2/PersistentServiceManager.php', + 'Codeception\\Lib\\Connector\\ZendExpressive' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZendExpressive.php', + 'Codeception\\Lib\\Connector\\ZendExpressive\\ResponseCollector' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZendExpressive/ResponseCollector.php', + 'Codeception\\Lib\\Console\\Colorizer' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/Colorizer.php', + 'Codeception\\Lib\\Console\\DiffFactory' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/DiffFactory.php', + 'Codeception\\Lib\\Console\\Message' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/Message.php', + 'Codeception\\Lib\\Console\\MessageFactory' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/MessageFactory.php', + 'Codeception\\Lib\\Console\\Output' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/Output.php', + 'Codeception\\Lib\\DbPopulator' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/DbPopulator.php', + 'Codeception\\Lib\\Di' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Di.php', + 'Codeception\\Lib\\Driver\\AmazonSQS' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/AmazonSQS.php', + 'Codeception\\Lib\\Driver\\Beanstalk' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Beanstalk.php', + 'Codeception\\Lib\\Driver\\Db' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Db.php', + 'Codeception\\Lib\\Driver\\ExtendedDbDriver' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Driver/ExtendedDbDriver.php', + 'Codeception\\Lib\\Driver\\ExtendedMySql' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Driver/ExtendedMySql.php', + 'Codeception\\Lib\\Driver\\Facebook' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Facebook.php', + 'Codeception\\Lib\\Driver\\Iron' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Iron.php', + 'Codeception\\Lib\\Driver\\MongoDb' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/MongoDb.php', + 'Codeception\\Lib\\Driver\\MySql' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/MySql.php', + 'Codeception\\Lib\\Driver\\Oci' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Oci.php', + 'Codeception\\Lib\\Driver\\PostgreSql' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/PostgreSql.php', + 'Codeception\\Lib\\Driver\\SqlSrv' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/SqlSrv.php', + 'Codeception\\Lib\\Driver\\Sqlite' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Sqlite.php', + 'Codeception\\Lib\\Framework' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Framework.php', + 'Codeception\\Lib\\Friend' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Friend.php', + 'Codeception\\Lib\\Generator\\AbstractGenerator' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/AbstractGenerator.php', + 'Codeception\\Lib\\Generator\\AcceptanceSuiteConfig' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/AcceptanceSuiteConfig.php', + 'Codeception\\Lib\\Generator\\Actions' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Actions.php', + 'Codeception\\Lib\\Generator\\Actor' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Actor.php', + 'Codeception\\Lib\\Generator\\Cept' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Cept.php', + 'Codeception\\Lib\\Generator\\Cest' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Cest.php', + 'Codeception\\Lib\\Generator\\Feature' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Feature.php', + 'Codeception\\Lib\\Generator\\FunctionalSuiteConfig' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/FunctionalSuiteConfig.php', + 'Codeception\\Lib\\Generator\\GeneratorInterface' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/GeneratorInterface.php', + 'Codeception\\Lib\\Generator\\GherkinSnippets' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/GherkinSnippets.php', + 'Codeception\\Lib\\Generator\\Group' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Group.php', + 'Codeception\\Lib\\Generator\\Helper' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Helper.php', + 'Codeception\\Lib\\Generator\\IntegrationSuiteConfig' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/IntegrationSuiteConfig.php', + 'Codeception\\Lib\\Generator\\IntegrationSuiteThemeConfig' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/IntegrationSuiteThemeConfig.php', + 'Codeception\\Lib\\Generator\\PageObject' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/PageObject.php', + 'Codeception\\Lib\\Generator\\Shared\\Classname' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Shared/Classname.php', + 'Codeception\\Lib\\Generator\\Snapshot' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Snapshot.php', + 'Codeception\\Lib\\Generator\\StepObject' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/StepObject.php', + 'Codeception\\Lib\\Generator\\Test' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Test.php', + 'Codeception\\Lib\\Generator\\WPUnit' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/WPUnit.php', + 'Codeception\\Lib\\GroupManager' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/GroupManager.php', + 'Codeception\\Lib\\InnerBrowser' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/InnerBrowser.php', + 'Codeception\\Lib\\Interfaces\\API' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/API.php', + 'Codeception\\Lib\\Interfaces\\ActiveRecord' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ActiveRecord.php', + 'Codeception\\Lib\\Interfaces\\ConflictsWithModule' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ConflictsWithModule.php', + 'Codeception\\Lib\\Interfaces\\DataMapper' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/DataMapper.php', + 'Codeception\\Lib\\Interfaces\\Db' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/Db.php', + 'Codeception\\Lib\\Interfaces\\DependsOnModule' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/DependsOnModule.php', + 'Codeception\\Lib\\Interfaces\\DoctrineProvider' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/DoctrineProvider.php', + 'Codeception\\Lib\\Interfaces\\ElementLocator' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ElementLocator.php', + 'Codeception\\Lib\\Interfaces\\MultiSession' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/MultiSession.php', + 'Codeception\\Lib\\Interfaces\\ORM' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ORM.php', + 'Codeception\\Lib\\Interfaces\\PageSourceSaver' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/PageSourceSaver.php', + 'Codeception\\Lib\\Interfaces\\PartedModule' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/PartedModule.php', + 'Codeception\\Lib\\Interfaces\\Queue' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/Queue.php', + 'Codeception\\Lib\\Interfaces\\Remote' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/Remote.php', + 'Codeception\\Lib\\Interfaces\\RequiresPackage' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/RequiresPackage.php', + 'Codeception\\Lib\\Interfaces\\ScreenshotSaver' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ScreenshotSaver.php', + 'Codeception\\Lib\\Interfaces\\SessionSnapshot' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/SessionSnapshot.php', + 'Codeception\\Lib\\Interfaces\\Web' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/Web.php', + 'Codeception\\Lib\\ModuleContainer' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/ModuleContainer.php', + 'Codeception\\Lib\\Notification' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Notification.php', + 'Codeception\\Lib\\ParamsLoader' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/ParamsLoader.php', + 'Codeception\\Lib\\Parser' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Parser.php', + 'Codeception\\Lib\\Shared\\LaravelCommon' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Shared/LaravelCommon.php', + 'Codeception\\Module' => $vendorDir . '/codeception/codeception/src/Codeception/Module.php', + 'Codeception\\Module\\AMQP' => $vendorDir . '/codeception/codeception/src/Codeception/Module/AMQP.php', + 'Codeception\\Module\\AngularJS' => $vendorDir . '/codeception/codeception/src/Codeception/Module/AngularJS.php', + 'Codeception\\Module\\Apc' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Apc.php', + 'Codeception\\Module\\Asserts' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Asserts.php', + 'Codeception\\Module\\Cli' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Cli.php', + 'Codeception\\Module\\DataFactory' => $vendorDir . '/codeception/codeception/src/Codeception/Module/DataFactory.php', + 'Codeception\\Module\\Db' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Db.php', + 'Codeception\\Module\\Doctrine2' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Doctrine2.php', + 'Codeception\\Module\\FTP' => $vendorDir . '/codeception/codeception/src/Codeception/Module/FTP.php', + 'Codeception\\Module\\Facebook' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Facebook.php', + 'Codeception\\Module\\Filesystem' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Filesystem.php', + 'Codeception\\Module\\Laravel5' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Laravel5.php', + 'Codeception\\Module\\Lumen' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Lumen.php', + 'Codeception\\Module\\Memcache' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Memcache.php', + 'Codeception\\Module\\MongoDb' => $vendorDir . '/codeception/codeception/src/Codeception/Module/MongoDb.php', + 'Codeception\\Module\\Phalcon' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Phalcon.php', + 'Codeception\\Module\\PhpBrowser' => $vendorDir . '/codeception/codeception/src/Codeception/Module/PhpBrowser.php', + 'Codeception\\Module\\Queue' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Queue.php', + 'Codeception\\Module\\REST' => $vendorDir . '/codeception/codeception/src/Codeception/Module/REST.php', + 'Codeception\\Module\\Redis' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Redis.php', + 'Codeception\\Module\\SOAP' => $vendorDir . '/codeception/codeception/src/Codeception/Module/SOAP.php', + 'Codeception\\Module\\Sequence' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Sequence.php', + 'Codeception\\Module\\Silex' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Silex.php', + 'Codeception\\Module\\Symfony' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Symfony.php', + 'Codeception\\Module\\WPBrowser' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPBrowser.php', + 'Codeception\\Module\\WPBrowserMethods' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPBrowserMethods.php', + 'Codeception\\Module\\WPCLI' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPCLI.php', + 'Codeception\\Module\\WPDb' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPDb.php', + 'Codeception\\Module\\WPFilesystem' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPFilesystem.php', + 'Codeception\\Module\\WPLoader' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPLoader.php', + 'Codeception\\Module\\WPQueries' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPQueries.php', + 'Codeception\\Module\\WPWebDriver' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPWebDriver.php', + 'Codeception\\Module\\WebDriver' => $vendorDir . '/codeception/codeception/src/Codeception/Module/WebDriver.php', + 'Codeception\\Module\\WordPress' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WordPress.php', + 'Codeception\\Module\\XMLRPC' => $vendorDir . '/codeception/codeception/src/Codeception/Module/XMLRPC.php', + 'Codeception\\Module\\Yii1' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Yii1.php', + 'Codeception\\Module\\Yii2' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Yii2.php', + 'Codeception\\Module\\ZF1' => $vendorDir . '/codeception/codeception/src/Codeception/Module/ZF1.php', + 'Codeception\\Module\\ZF2' => $vendorDir . '/codeception/codeception/src/Codeception/Module/ZF2.php', + 'Codeception\\Module\\ZendExpressive' => $vendorDir . '/codeception/codeception/src/Codeception/Module/ZendExpressive.php', + 'Codeception\\PHPUnit\\ConsolePrinter' => $vendorDir . '/codeception/phpunit-wrapper/src/ConsolePrinter.php', + 'Codeception\\PHPUnit\\Constraint\\Crawler' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/Crawler.php', + 'Codeception\\PHPUnit\\Constraint\\CrawlerNot' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/CrawlerNot.php', + 'Codeception\\PHPUnit\\Constraint\\JsonContains' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/JsonContains.php', + 'Codeception\\PHPUnit\\Constraint\\JsonType' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/JsonType.php', + 'Codeception\\PHPUnit\\Constraint\\Page' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/Page.php', + 'Codeception\\PHPUnit\\Constraint\\WebDriver' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/WebDriver.php', + 'Codeception\\PHPUnit\\Constraint\\WebDriverNot' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/WebDriverNot.php', + 'Codeception\\PHPUnit\\DispatcherWrapper' => $vendorDir . '/codeception/phpunit-wrapper/src/DispatcherWrapper.php', + 'Codeception\\PHPUnit\\FilterTest' => $vendorDir . '/codeception/phpunit-wrapper/src/FilterTest.php', + 'Codeception\\PHPUnit\\Init' => $vendorDir . '/codeception/phpunit-wrapper/src/Init.php', + 'Codeception\\PHPUnit\\Listener' => $vendorDir . '/codeception/phpunit-wrapper/src/Listener.php', + 'Codeception\\PHPUnit\\Log\\JUnit' => $vendorDir . '/codeception/phpunit-wrapper/src/Log/JUnit.php', + 'Codeception\\PHPUnit\\Log\\PhpUnit' => $vendorDir . '/codeception/phpunit-wrapper/src/Log/PhpUnit.php', + 'Codeception\\PHPUnit\\ResultPrinter' => $vendorDir . '/codeception/phpunit-wrapper/src/ResultPrinter.php', + 'Codeception\\PHPUnit\\ResultPrinter\\HTML' => $vendorDir . '/codeception/phpunit-wrapper/src/ResultPrinter/HTML.php', + 'Codeception\\PHPUnit\\ResultPrinter\\Report' => $vendorDir . '/codeception/phpunit-wrapper/src/ResultPrinter/Report.php', + 'Codeception\\PHPUnit\\ResultPrinter\\UI' => $vendorDir . '/codeception/phpunit-wrapper/src/ResultPrinter/UI.php', + 'Codeception\\PHPUnit\\Runner' => $vendorDir . '/codeception/phpunit-wrapper/src/Runner.php', + 'Codeception\\PHPUnit\\TestCase' => $vendorDir . '/codeception/phpunit-wrapper/src/TestCase.php', + 'Codeception\\Scenario' => $vendorDir . '/codeception/codeception/src/Codeception/Scenario.php', + 'Codeception\\Snapshot' => $vendorDir . '/codeception/codeception/src/Codeception/Snapshot.php', + 'Codeception\\Step' => $vendorDir . '/codeception/codeception/src/Codeception/Step.php', + 'Codeception\\Step\\Action' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Action.php', + 'Codeception\\Step\\Argument\\FormattedOutput' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Argument/FormattedOutput.php', + 'Codeception\\Step\\Argument\\PasswordArgument' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Argument/PasswordArgument.php', + 'Codeception\\Step\\Assertion' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Assertion.php', + 'Codeception\\Step\\Comment' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Comment.php', + 'Codeception\\Step\\Condition' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Condition.php', + 'Codeception\\Step\\ConditionalAssertion' => $vendorDir . '/codeception/codeception/src/Codeception/Step/ConditionalAssertion.php', + 'Codeception\\Step\\Executor' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Executor.php', + 'Codeception\\Step\\Incomplete' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Incomplete.php', + 'Codeception\\Step\\Meta' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Meta.php', + 'Codeception\\Step\\Skip' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Skip.php', + 'Codeception\\Stub' => $vendorDir . '/codeception/stub/src/Stub.php', + 'Codeception\\Stub\\ConsecutiveMap' => $vendorDir . '/codeception/stub/src/Stub/ConsecutiveMap.php', + 'Codeception\\Stub\\Expected' => $vendorDir . '/codeception/stub/src/Stub/Expected.php', + 'Codeception\\Stub\\StubMarshaler' => $vendorDir . '/codeception/stub/src/Stub/StubMarshaler.php', + 'Codeception\\Subscriber\\AutoRebuild' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/AutoRebuild.php', + 'Codeception\\Subscriber\\BeforeAfterTest' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/BeforeAfterTest.php', + 'Codeception\\Subscriber\\Bootstrap' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Bootstrap.php', + 'Codeception\\Subscriber\\Console' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Console.php', + 'Codeception\\Subscriber\\Dependencies' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Dependencies.php', + 'Codeception\\Subscriber\\ErrorHandler' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/ErrorHandler.php', + 'Codeception\\Subscriber\\ExtensionLoader' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/ExtensionLoader.php', + 'Codeception\\Subscriber\\FailFast' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/FailFast.php', + 'Codeception\\Subscriber\\GracefulTermination' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/GracefulTermination.php', + 'Codeception\\Subscriber\\Module' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Module.php', + 'Codeception\\Subscriber\\PrepareTest' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/PrepareTest.php', + 'Codeception\\Subscriber\\Shared\\StaticEvents' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Shared/StaticEvents.php', + 'Codeception\\Suite' => $vendorDir . '/codeception/codeception/src/Codeception/Suite.php', + 'Codeception\\SuiteManager' => $vendorDir . '/codeception/codeception/src/Codeception/SuiteManager.php', + 'Codeception\\Template\\Acceptance' => $vendorDir . '/codeception/codeception/src/Codeception/Template/Acceptance.php', + 'Codeception\\Template\\Api' => $vendorDir . '/codeception/codeception/src/Codeception/Template/Api.php', + 'Codeception\\Template\\Bootstrap' => $vendorDir . '/codeception/codeception/src/Codeception/Template/Bootstrap.php', + 'Codeception\\Template\\Unit' => $vendorDir . '/codeception/codeception/src/Codeception/Template/Unit.php', + 'Codeception\\Template\\Wpbrowser' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Template/Wpbrowser.php', + 'Codeception\\TestCase\\WPAjaxTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPAjaxTestCase.php', + 'Codeception\\TestCase\\WPCanonicalTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPCanonicalTestCase.php', + 'Codeception\\TestCase\\WPRestApiTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestApiTestCase.php', + 'Codeception\\TestCase\\WPRestControllerTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestControllerTestCase.php', + 'Codeception\\TestCase\\WPRestPostTypeControllerTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestPostTypeControllerTestCase.php', + 'Codeception\\TestCase\\WPTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPTestCase.php', + 'Codeception\\TestCase\\WPXMLRPCTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPXMLRPCTestCase.php', + 'Codeception\\TestInterface' => $vendorDir . '/codeception/codeception/src/Codeception/TestInterface.php', + 'Codeception\\Test\\Cept' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Cept.php', + 'Codeception\\Test\\Cest' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Cest.php', + 'Codeception\\Test\\Descriptor' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Descriptor.php', + 'Codeception\\Test\\Feature\\AssertionCounter' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/AssertionCounter.php', + 'Codeception\\Test\\Feature\\CodeCoverage' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/CodeCoverage.php', + 'Codeception\\Test\\Feature\\ErrorLogger' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/ErrorLogger.php', + 'Codeception\\Test\\Feature\\IgnoreIfMetadataBlocked' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/IgnoreIfMetadataBlocked.php', + 'Codeception\\Test\\Feature\\MetadataCollector' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/MetadataCollector.php', + 'Codeception\\Test\\Feature\\ScenarioLoader' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/ScenarioLoader.php', + 'Codeception\\Test\\Feature\\Stub' => $vendorDir . '/codeception/stub/src/Test/Feature/Stub.php', + 'Codeception\\Test\\Gherkin' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Gherkin.php', + 'Codeception\\Test\\Interfaces\\Dependent' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/Dependent.php', + 'Codeception\\Test\\Interfaces\\Descriptive' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/Descriptive.php', + 'Codeception\\Test\\Interfaces\\Plain' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/Plain.php', + 'Codeception\\Test\\Interfaces\\Reported' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/Reported.php', + 'Codeception\\Test\\Interfaces\\ScenarioDriven' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/ScenarioDriven.php', + 'Codeception\\Test\\Interfaces\\StrictCoverage' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/StrictCoverage.php', + 'Codeception\\Test\\Loader' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader.php', + 'Codeception\\Test\\Loader\\Cept' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/Cept.php', + 'Codeception\\Test\\Loader\\Cest' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/Cest.php', + 'Codeception\\Test\\Loader\\Gherkin' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/Gherkin.php', + 'Codeception\\Test\\Loader\\LoaderInterface' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/LoaderInterface.php', + 'Codeception\\Test\\Loader\\Unit' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/Unit.php', + 'Codeception\\Test\\Metadata' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Metadata.php', + 'Codeception\\Test\\Test' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Test.php', + 'Codeception\\Test\\Unit' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Unit.php', + 'Codeception\\Util\\ActionSequence' => $vendorDir . '/codeception/codeception/src/Codeception/Util/ActionSequence.php', + 'Codeception\\Util\\Annotation' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Annotation.php', + 'Codeception\\Util\\ArrayContainsComparator' => $vendorDir . '/codeception/codeception/src/Codeception/Util/ArrayContainsComparator.php', + 'Codeception\\Util\\Autoload' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Autoload.php', + 'Codeception\\Util\\Debug' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Debug.php', + 'Codeception\\Util\\FileSystem' => $vendorDir . '/codeception/codeception/src/Codeception/Util/FileSystem.php', + 'Codeception\\Util\\Fixtures' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Fixtures.php', + 'Codeception\\Util\\HttpCode' => $vendorDir . '/codeception/codeception/src/Codeception/Util/HttpCode.php', + 'Codeception\\Util\\JsonArray' => $vendorDir . '/codeception/codeception/src/Codeception/Util/JsonArray.php', + 'Codeception\\Util\\JsonType' => $vendorDir . '/codeception/codeception/src/Codeception/Util/JsonType.php', + 'Codeception\\Util\\Locator' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Locator.php', + 'Codeception\\Util\\Maybe' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Maybe.php', + 'Codeception\\Util\\PathResolver' => $vendorDir . '/codeception/codeception/src/Codeception/Util/PathResolver.php', + 'Codeception\\Util\\PropertyAccess' => $vendorDir . '/codeception/codeception/src/Codeception/Util/PropertyAccess.php', + 'Codeception\\Util\\ReflectionHelper' => $vendorDir . '/codeception/codeception/src/Codeception/Util/ReflectionHelper.php', + 'Codeception\\Util\\Shared\\Asserts' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Shared/Asserts.php', + 'Codeception\\Util\\Shared\\Namespaces' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Shared/Namespaces.php', + 'Codeception\\Util\\Soap' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Soap.php', + 'Codeception\\Util\\Stub' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Stub.php', + 'Codeception\\Util\\Template' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Template.php', + 'Codeception\\Util\\Uri' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Uri.php', + 'Codeception\\Util\\Xml' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Xml.php', + 'Codeception\\Util\\XmlBuilder' => $vendorDir . '/codeception/codeception/src/Codeception/Util/XmlBuilder.php', + 'Codeception\\Util\\XmlStructure' => $vendorDir . '/codeception/codeception/src/Codeception/Util/XmlStructure.php', + 'Comment_Command' => $vendorDir . '/wp-cli/entity-command/src/Comment_Command.php', + 'Comment_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Comment_Meta_Command.php', + 'Composer\\Autoload\\AutoloadGenerator' => $vendorDir . '/composer/composer/src/Composer/Autoload/AutoloadGenerator.php', + 'Composer\\Autoload\\ClassLoader' => $vendorDir . '/composer/composer/src/Composer/Autoload/ClassLoader.php', + 'Composer\\Autoload\\ClassMapGenerator' => $vendorDir . '/composer/composer/src/Composer/Autoload/ClassMapGenerator.php', + 'Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php', + 'Composer\\Cache' => $vendorDir . '/composer/composer/src/Composer/Cache.php', + 'Composer\\Command\\AboutCommand' => $vendorDir . '/composer/composer/src/Composer/Command/AboutCommand.php', + 'Composer\\Command\\ArchiveCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ArchiveCommand.php', + 'Composer\\Command\\BaseCommand' => $vendorDir . '/composer/composer/src/Composer/Command/BaseCommand.php', + 'Composer\\Command\\BaseDependencyCommand' => $vendorDir . '/composer/composer/src/Composer/Command/BaseDependencyCommand.php', + 'Composer\\Command\\CheckPlatformReqsCommand' => $vendorDir . '/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php', + 'Composer\\Command\\ClearCacheCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ClearCacheCommand.php', + 'Composer\\Command\\ConfigCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ConfigCommand.php', + 'Composer\\Command\\CreateProjectCommand' => $vendorDir . '/composer/composer/src/Composer/Command/CreateProjectCommand.php', + 'Composer\\Command\\DependsCommand' => $vendorDir . '/composer/composer/src/Composer/Command/DependsCommand.php', + 'Composer\\Command\\DiagnoseCommand' => $vendorDir . '/composer/composer/src/Composer/Command/DiagnoseCommand.php', + 'Composer\\Command\\DumpAutoloadCommand' => $vendorDir . '/composer/composer/src/Composer/Command/DumpAutoloadCommand.php', + 'Composer\\Command\\ExecCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ExecCommand.php', + 'Composer\\Command\\GlobalCommand' => $vendorDir . '/composer/composer/src/Composer/Command/GlobalCommand.php', + 'Composer\\Command\\HomeCommand' => $vendorDir . '/composer/composer/src/Composer/Command/HomeCommand.php', + 'Composer\\Command\\InitCommand' => $vendorDir . '/composer/composer/src/Composer/Command/InitCommand.php', + 'Composer\\Command\\InstallCommand' => $vendorDir . '/composer/composer/src/Composer/Command/InstallCommand.php', + 'Composer\\Command\\LicensesCommand' => $vendorDir . '/composer/composer/src/Composer/Command/LicensesCommand.php', + 'Composer\\Command\\OutdatedCommand' => $vendorDir . '/composer/composer/src/Composer/Command/OutdatedCommand.php', + 'Composer\\Command\\ProhibitsCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ProhibitsCommand.php', + 'Composer\\Command\\RemoveCommand' => $vendorDir . '/composer/composer/src/Composer/Command/RemoveCommand.php', + 'Composer\\Command\\RequireCommand' => $vendorDir . '/composer/composer/src/Composer/Command/RequireCommand.php', + 'Composer\\Command\\RunScriptCommand' => $vendorDir . '/composer/composer/src/Composer/Command/RunScriptCommand.php', + 'Composer\\Command\\ScriptAliasCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ScriptAliasCommand.php', + 'Composer\\Command\\SearchCommand' => $vendorDir . '/composer/composer/src/Composer/Command/SearchCommand.php', + 'Composer\\Command\\SelfUpdateCommand' => $vendorDir . '/composer/composer/src/Composer/Command/SelfUpdateCommand.php', + 'Composer\\Command\\ShowCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ShowCommand.php', + 'Composer\\Command\\StatusCommand' => $vendorDir . '/composer/composer/src/Composer/Command/StatusCommand.php', + 'Composer\\Command\\SuggestsCommand' => $vendorDir . '/composer/composer/src/Composer/Command/SuggestsCommand.php', + 'Composer\\Command\\UpdateCommand' => $vendorDir . '/composer/composer/src/Composer/Command/UpdateCommand.php', + 'Composer\\Command\\ValidateCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ValidateCommand.php', + 'Composer\\Compiler' => $vendorDir . '/composer/composer/src/Composer/Compiler.php', + 'Composer\\Composer' => $vendorDir . '/composer/composer/src/Composer/Composer.php', + 'Composer\\Config' => $vendorDir . '/composer/composer/src/Composer/Config.php', + 'Composer\\Config\\ConfigSourceInterface' => $vendorDir . '/composer/composer/src/Composer/Config/ConfigSourceInterface.php', + 'Composer\\Config\\JsonConfigSource' => $vendorDir . '/composer/composer/src/Composer/Config/JsonConfigSource.php', + 'Composer\\Console\\Application' => $vendorDir . '/composer/composer/src/Composer/Console/Application.php', + 'Composer\\Console\\HtmlOutputFormatter' => $vendorDir . '/composer/composer/src/Composer/Console/HtmlOutputFormatter.php', + 'Composer\\DependencyResolver\\Decisions' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Decisions.php', + 'Composer\\DependencyResolver\\DefaultPolicy' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php', + 'Composer\\DependencyResolver\\GenericRule' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/GenericRule.php', + 'Composer\\DependencyResolver\\Operation\\InstallOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php', + 'Composer\\DependencyResolver\\Operation\\MarkAliasInstalledOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php', + 'Composer\\DependencyResolver\\Operation\\MarkAliasUninstalledOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php', + 'Composer\\DependencyResolver\\Operation\\OperationInterface' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php', + 'Composer\\DependencyResolver\\Operation\\SolverOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php', + 'Composer\\DependencyResolver\\Operation\\UninstallOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php', + 'Composer\\DependencyResolver\\Operation\\UpdateOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php', + 'Composer\\DependencyResolver\\PolicyInterface' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php', + 'Composer\\DependencyResolver\\Pool' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Pool.php', + 'Composer\\DependencyResolver\\Problem' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Problem.php', + 'Composer\\DependencyResolver\\Request' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Request.php', + 'Composer\\DependencyResolver\\Rule' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Rule.php', + 'Composer\\DependencyResolver\\Rule2Literals' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php', + 'Composer\\DependencyResolver\\RuleSet' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleSet.php', + 'Composer\\DependencyResolver\\RuleSetGenerator' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php', + 'Composer\\DependencyResolver\\RuleSetIterator' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php', + 'Composer\\DependencyResolver\\RuleWatchChain' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php', + 'Composer\\DependencyResolver\\RuleWatchGraph' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php', + 'Composer\\DependencyResolver\\RuleWatchNode' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php', + 'Composer\\DependencyResolver\\Solver' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Solver.php', + 'Composer\\DependencyResolver\\SolverBugException' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/SolverBugException.php', + 'Composer\\DependencyResolver\\SolverProblemsException' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php', + 'Composer\\DependencyResolver\\Transaction' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Transaction.php', + 'Composer\\Downloader\\ArchiveDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/ArchiveDownloader.php', + 'Composer\\Downloader\\ChangeReportInterface' => $vendorDir . '/composer/composer/src/Composer/Downloader/ChangeReportInterface.php', + 'Composer\\Downloader\\DownloadManager' => $vendorDir . '/composer/composer/src/Composer/Downloader/DownloadManager.php', + 'Composer\\Downloader\\DownloaderInterface' => $vendorDir . '/composer/composer/src/Composer/Downloader/DownloaderInterface.php', + 'Composer\\Downloader\\DvcsDownloaderInterface' => $vendorDir . '/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php', + 'Composer\\Downloader\\FileDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/FileDownloader.php', + 'Composer\\Downloader\\FilesystemException' => $vendorDir . '/composer/composer/src/Composer/Downloader/FilesystemException.php', + 'Composer\\Downloader\\FossilDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/FossilDownloader.php', + 'Composer\\Downloader\\GitDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/GitDownloader.php', + 'Composer\\Downloader\\GzipDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/GzipDownloader.php', + 'Composer\\Downloader\\HgDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/HgDownloader.php', + 'Composer\\Downloader\\PathDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/PathDownloader.php', + 'Composer\\Downloader\\PearPackageExtractor' => $vendorDir . '/composer/composer/src/Composer/Downloader/PearPackageExtractor.php', + 'Composer\\Downloader\\PerforceDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/PerforceDownloader.php', + 'Composer\\Downloader\\PharDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/PharDownloader.php', + 'Composer\\Downloader\\RarDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/RarDownloader.php', + 'Composer\\Downloader\\SvnDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/SvnDownloader.php', + 'Composer\\Downloader\\TarDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/TarDownloader.php', + 'Composer\\Downloader\\TransportException' => $vendorDir . '/composer/composer/src/Composer/Downloader/TransportException.php', + 'Composer\\Downloader\\VcsCapableDownloaderInterface' => $vendorDir . '/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php', + 'Composer\\Downloader\\VcsDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/VcsDownloader.php', + 'Composer\\Downloader\\XzDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/XzDownloader.php', + 'Composer\\Downloader\\ZipDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/ZipDownloader.php', + 'Composer\\EventDispatcher\\Event' => $vendorDir . '/composer/composer/src/Composer/EventDispatcher/Event.php', + 'Composer\\EventDispatcher\\EventDispatcher' => $vendorDir . '/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php', + 'Composer\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php', + 'Composer\\EventDispatcher\\ScriptExecutionException' => $vendorDir . '/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php', + 'Composer\\Exception\\NoSslException' => $vendorDir . '/composer/composer/src/Composer/Exception/NoSslException.php', + 'Composer\\Factory' => $vendorDir . '/composer/composer/src/Composer/Factory.php', + 'Composer\\IO\\BaseIO' => $vendorDir . '/composer/composer/src/Composer/IO/BaseIO.php', + 'Composer\\IO\\BufferIO' => $vendorDir . '/composer/composer/src/Composer/IO/BufferIO.php', + 'Composer\\IO\\ConsoleIO' => $vendorDir . '/composer/composer/src/Composer/IO/ConsoleIO.php', + 'Composer\\IO\\IOInterface' => $vendorDir . '/composer/composer/src/Composer/IO/IOInterface.php', + 'Composer\\IO\\NullIO' => $vendorDir . '/composer/composer/src/Composer/IO/NullIO.php', + 'Composer\\Installer' => $vendorDir . '/composer/composer/src/Composer/Installer.php', + 'Composer\\Installer\\BinaryInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/BinaryInstaller.php', + 'Composer\\Installer\\BinaryPresenceInterface' => $vendorDir . '/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php', + 'Composer\\Installer\\InstallationManager' => $vendorDir . '/composer/composer/src/Composer/Installer/InstallationManager.php', + 'Composer\\Installer\\InstallerEvent' => $vendorDir . '/composer/composer/src/Composer/Installer/InstallerEvent.php', + 'Composer\\Installer\\InstallerEvents' => $vendorDir . '/composer/composer/src/Composer/Installer/InstallerEvents.php', + 'Composer\\Installer\\InstallerInterface' => $vendorDir . '/composer/composer/src/Composer/Installer/InstallerInterface.php', + 'Composer\\Installer\\LibraryInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/LibraryInstaller.php', + 'Composer\\Installer\\MetapackageInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/MetapackageInstaller.php', + 'Composer\\Installer\\NoopInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/NoopInstaller.php', + 'Composer\\Installer\\PackageEvent' => $vendorDir . '/composer/composer/src/Composer/Installer/PackageEvent.php', + 'Composer\\Installer\\PackageEvents' => $vendorDir . '/composer/composer/src/Composer/Installer/PackageEvents.php', + 'Composer\\Installer\\PearBinaryInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/PearBinaryInstaller.php', + 'Composer\\Installer\\PearInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/PearInstaller.php', + 'Composer\\Installer\\PluginInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/PluginInstaller.php', + 'Composer\\Installer\\ProjectInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/ProjectInstaller.php', + 'Composer\\Installer\\SuggestedPackagesReporter' => $vendorDir . '/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php', + 'Composer\\Json\\JsonFile' => $vendorDir . '/composer/composer/src/Composer/Json/JsonFile.php', + 'Composer\\Json\\JsonFormatter' => $vendorDir . '/composer/composer/src/Composer/Json/JsonFormatter.php', + 'Composer\\Json\\JsonManipulator' => $vendorDir . '/composer/composer/src/Composer/Json/JsonManipulator.php', + 'Composer\\Json\\JsonValidationException' => $vendorDir . '/composer/composer/src/Composer/Json/JsonValidationException.php', + 'Composer\\Package\\AliasPackage' => $vendorDir . '/composer/composer/src/Composer/Package/AliasPackage.php', + 'Composer\\Package\\Archiver\\ArchivableFilesFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php', + 'Composer\\Package\\Archiver\\ArchivableFilesFinder' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php', + 'Composer\\Package\\Archiver\\ArchiveManager' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php', + 'Composer\\Package\\Archiver\\ArchiverInterface' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php', + 'Composer\\Package\\Archiver\\BaseExcludeFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php', + 'Composer\\Package\\Archiver\\ComposerExcludeFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php', + 'Composer\\Package\\Archiver\\GitExcludeFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php', + 'Composer\\Package\\Archiver\\HgExcludeFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php', + 'Composer\\Package\\Archiver\\PharArchiver' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/PharArchiver.php', + 'Composer\\Package\\Archiver\\ZipArchiver' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php', + 'Composer\\Package\\BasePackage' => $vendorDir . '/composer/composer/src/Composer/Package/BasePackage.php', + 'Composer\\Package\\Comparer\\Comparer' => $vendorDir . '/composer/composer/src/Composer/Package/Comparer/Comparer.php', + 'Composer\\Package\\CompletePackage' => $vendorDir . '/composer/composer/src/Composer/Package/CompletePackage.php', + 'Composer\\Package\\CompletePackageInterface' => $vendorDir . '/composer/composer/src/Composer/Package/CompletePackageInterface.php', + 'Composer\\Package\\Dumper\\ArrayDumper' => $vendorDir . '/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php', + 'Composer\\Package\\Link' => $vendorDir . '/composer/composer/src/Composer/Package/Link.php', + 'Composer\\Package\\LinkConstraint\\EmptyConstraint' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php', + 'Composer\\Package\\LinkConstraint\\LinkConstraintInterface' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php', + 'Composer\\Package\\LinkConstraint\\MultiConstraint' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php', + 'Composer\\Package\\LinkConstraint\\SpecificConstraint' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php', + 'Composer\\Package\\LinkConstraint\\VersionConstraint' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php', + 'Composer\\Package\\Loader\\ArrayLoader' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/ArrayLoader.php', + 'Composer\\Package\\Loader\\InvalidPackageException' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php', + 'Composer\\Package\\Loader\\JsonLoader' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/JsonLoader.php', + 'Composer\\Package\\Loader\\LoaderInterface' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/LoaderInterface.php', + 'Composer\\Package\\Loader\\RootPackageLoader' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php', + 'Composer\\Package\\Loader\\ValidatingArrayLoader' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php', + 'Composer\\Package\\Locker' => $vendorDir . '/composer/composer/src/Composer/Package/Locker.php', + 'Composer\\Package\\Package' => $vendorDir . '/composer/composer/src/Composer/Package/Package.php', + 'Composer\\Package\\PackageInterface' => $vendorDir . '/composer/composer/src/Composer/Package/PackageInterface.php', + 'Composer\\Package\\RootAliasPackage' => $vendorDir . '/composer/composer/src/Composer/Package/RootAliasPackage.php', + 'Composer\\Package\\RootPackage' => $vendorDir . '/composer/composer/src/Composer/Package/RootPackage.php', + 'Composer\\Package\\RootPackageInterface' => $vendorDir . '/composer/composer/src/Composer/Package/RootPackageInterface.php', + 'Composer\\Package\\Version\\VersionGuesser' => $vendorDir . '/composer/composer/src/Composer/Package/Version/VersionGuesser.php', + 'Composer\\Package\\Version\\VersionParser' => $vendorDir . '/composer/composer/src/Composer/Package/Version/VersionParser.php', + 'Composer\\Package\\Version\\VersionSelector' => $vendorDir . '/composer/composer/src/Composer/Package/Version/VersionSelector.php', + 'Composer\\Plugin\\Capability\\Capability' => $vendorDir . '/composer/composer/src/Composer/Plugin/Capability/Capability.php', + 'Composer\\Plugin\\Capability\\CommandProvider' => $vendorDir . '/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php', + 'Composer\\Plugin\\Capable' => $vendorDir . '/composer/composer/src/Composer/Plugin/Capable.php', + 'Composer\\Plugin\\CommandEvent' => $vendorDir . '/composer/composer/src/Composer/Plugin/CommandEvent.php', + 'Composer\\Plugin\\PluginEvents' => $vendorDir . '/composer/composer/src/Composer/Plugin/PluginEvents.php', + 'Composer\\Plugin\\PluginInterface' => $vendorDir . '/composer/composer/src/Composer/Plugin/PluginInterface.php', + 'Composer\\Plugin\\PluginManager' => $vendorDir . '/composer/composer/src/Composer/Plugin/PluginManager.php', + 'Composer\\Plugin\\PreCommandRunEvent' => $vendorDir . '/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php', + 'Composer\\Plugin\\PreFileDownloadEvent' => $vendorDir . '/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php', + 'Composer\\Question\\StrictConfirmationQuestion' => $vendorDir . '/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php', + 'Composer\\Repository\\ArrayRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/ArrayRepository.php', + 'Composer\\Repository\\ArtifactRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/ArtifactRepository.php', + 'Composer\\Repository\\BaseRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/BaseRepository.php', + 'Composer\\Repository\\ComposerRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/ComposerRepository.php', + 'Composer\\Repository\\CompositeRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/CompositeRepository.php', + 'Composer\\Repository\\ConfigurableRepositoryInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php', + 'Composer\\Repository\\FilesystemRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/FilesystemRepository.php', + 'Composer\\Repository\\InstalledArrayRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/InstalledArrayRepository.php', + 'Composer\\Repository\\InstalledFilesystemRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php', + 'Composer\\Repository\\InstalledRepositoryInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php', + 'Composer\\Repository\\InvalidRepositoryException' => $vendorDir . '/composer/composer/src/Composer/Repository/InvalidRepositoryException.php', + 'Composer\\Repository\\PackageRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/PackageRepository.php', + 'Composer\\Repository\\PathRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/PathRepository.php', + 'Composer\\Repository\\PearRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/PearRepository.php', + 'Composer\\Repository\\Pear\\BaseChannelReader' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php', + 'Composer\\Repository\\Pear\\ChannelInfo' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php', + 'Composer\\Repository\\Pear\\ChannelReader' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ChannelReader.php', + 'Composer\\Repository\\Pear\\ChannelRest10Reader' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php', + 'Composer\\Repository\\Pear\\ChannelRest11Reader' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php', + 'Composer\\Repository\\Pear\\DependencyConstraint' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php', + 'Composer\\Repository\\Pear\\DependencyInfo' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php', + 'Composer\\Repository\\Pear\\PackageDependencyParser' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php', + 'Composer\\Repository\\Pear\\PackageInfo' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/PackageInfo.php', + 'Composer\\Repository\\Pear\\ReleaseInfo' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php', + 'Composer\\Repository\\PlatformRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/PlatformRepository.php', + 'Composer\\Repository\\RepositoryFactory' => $vendorDir . '/composer/composer/src/Composer/Repository/RepositoryFactory.php', + 'Composer\\Repository\\RepositoryInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/RepositoryInterface.php', + 'Composer\\Repository\\RepositoryManager' => $vendorDir . '/composer/composer/src/Composer/Repository/RepositoryManager.php', + 'Composer\\Repository\\RepositorySecurityException' => $vendorDir . '/composer/composer/src/Composer/Repository/RepositorySecurityException.php', + 'Composer\\Repository\\VcsRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/VcsRepository.php', + 'Composer\\Repository\\Vcs\\BitbucketDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php', + 'Composer\\Repository\\Vcs\\FossilDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php', + 'Composer\\Repository\\Vcs\\GitBitbucketDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php', + 'Composer\\Repository\\Vcs\\GitDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/GitDriver.php', + 'Composer\\Repository\\Vcs\\GitHubDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php', + 'Composer\\Repository\\Vcs\\GitLabDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php', + 'Composer\\Repository\\Vcs\\HgBitbucketDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php', + 'Composer\\Repository\\Vcs\\HgDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/HgDriver.php', + 'Composer\\Repository\\Vcs\\PerforceDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php', + 'Composer\\Repository\\Vcs\\SvnDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php', + 'Composer\\Repository\\Vcs\\VcsDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php', + 'Composer\\Repository\\Vcs\\VcsDriverInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php', + 'Composer\\Repository\\VersionCacheInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/VersionCacheInterface.php', + 'Composer\\Repository\\WritableArrayRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/WritableArrayRepository.php', + 'Composer\\Repository\\WritableRepositoryInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php', + 'Composer\\Script\\CommandEvent' => $vendorDir . '/composer/composer/src/Composer/Script/CommandEvent.php', + 'Composer\\Script\\Event' => $vendorDir . '/composer/composer/src/Composer/Script/Event.php', + 'Composer\\Script\\PackageEvent' => $vendorDir . '/composer/composer/src/Composer/Script/PackageEvent.php', + 'Composer\\Script\\ScriptEvents' => $vendorDir . '/composer/composer/src/Composer/Script/ScriptEvents.php', + 'Composer\\SelfUpdate\\Keys' => $vendorDir . '/composer/composer/src/Composer/SelfUpdate/Keys.php', + 'Composer\\SelfUpdate\\Versions' => $vendorDir . '/composer/composer/src/Composer/SelfUpdate/Versions.php', + 'Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php', + 'Composer\\Semver\\Constraint\\AbstractConstraint' => $vendorDir . '/composer/semver/src/Constraint/AbstractConstraint.php', + 'Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php', + 'Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php', + 'Composer\\Semver\\Constraint\\EmptyConstraint' => $vendorDir . '/composer/semver/src/Constraint/EmptyConstraint.php', + 'Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php', + 'Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php', + 'Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php', + 'Composer\\Spdx\\SpdxLicenses' => $vendorDir . '/composer/spdx-licenses/src/SpdxLicenses.php', + 'Composer\\Util\\AuthHelper' => $vendorDir . '/composer/composer/src/Composer/Util/AuthHelper.php', + 'Composer\\Util\\Bitbucket' => $vendorDir . '/composer/composer/src/Composer/Util/Bitbucket.php', + 'Composer\\Util\\ComposerMirror' => $vendorDir . '/composer/composer/src/Composer/Util/ComposerMirror.php', + 'Composer\\Util\\ConfigValidator' => $vendorDir . '/composer/composer/src/Composer/Util/ConfigValidator.php', + 'Composer\\Util\\ErrorHandler' => $vendorDir . '/composer/composer/src/Composer/Util/ErrorHandler.php', + 'Composer\\Util\\Filesystem' => $vendorDir . '/composer/composer/src/Composer/Util/Filesystem.php', + 'Composer\\Util\\Git' => $vendorDir . '/composer/composer/src/Composer/Util/Git.php', + 'Composer\\Util\\GitHub' => $vendorDir . '/composer/composer/src/Composer/Util/GitHub.php', + 'Composer\\Util\\GitLab' => $vendorDir . '/composer/composer/src/Composer/Util/GitLab.php', + 'Composer\\Util\\Hg' => $vendorDir . '/composer/composer/src/Composer/Util/Hg.php', + 'Composer\\Util\\IniHelper' => $vendorDir . '/composer/composer/src/Composer/Util/IniHelper.php', + 'Composer\\Util\\NoProxyPattern' => $vendorDir . '/composer/composer/src/Composer/Util/NoProxyPattern.php', + 'Composer\\Util\\PackageSorter' => $vendorDir . '/composer/composer/src/Composer/Util/PackageSorter.php', + 'Composer\\Util\\Perforce' => $vendorDir . '/composer/composer/src/Composer/Util/Perforce.php', + 'Composer\\Util\\Platform' => $vendorDir . '/composer/composer/src/Composer/Util/Platform.php', + 'Composer\\Util\\ProcessExecutor' => $vendorDir . '/composer/composer/src/Composer/Util/ProcessExecutor.php', + 'Composer\\Util\\RemoteFilesystem' => $vendorDir . '/composer/composer/src/Composer/Util/RemoteFilesystem.php', + 'Composer\\Util\\Silencer' => $vendorDir . '/composer/composer/src/Composer/Util/Silencer.php', + 'Composer\\Util\\SpdxLicense' => $vendorDir . '/composer/composer/src/Composer/Util/SpdxLicense.php', + 'Composer\\Util\\StreamContextFactory' => $vendorDir . '/composer/composer/src/Composer/Util/StreamContextFactory.php', + 'Composer\\Util\\Svn' => $vendorDir . '/composer/composer/src/Composer/Util/Svn.php', + 'Composer\\Util\\TlsHelper' => $vendorDir . '/composer/composer/src/Composer/Util/TlsHelper.php', + 'Composer\\Util\\Url' => $vendorDir . '/composer/composer/src/Composer/Util/Url.php', + 'Composer\\Util\\Zip' => $vendorDir . '/composer/composer/src/Composer/Util/Zip.php', + 'Composer\\XdebugHandler' => $vendorDir . '/composer/composer/src/Composer/XdebugHandler.php', + 'Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php', + 'Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php', + 'Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php', + 'Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php', + 'Config_Command' => $vendorDir . '/wp-cli/config-command/src/Config_Command.php', + 'Core_Command' => $vendorDir . '/wp-cli/core-command/src/Core_Command.php', + 'Core_Command_Namespace' => $vendorDir . '/wp-cli/checksum-command/src/Core_Command_Namespace.php', + 'Core_Language_Command' => $vendorDir . '/wp-cli/language-command/src/Core_Language_Command.php', + 'Cron_Command' => $vendorDir . '/wp-cli/cron-command/src/Cron_Command.php', + 'Cron_Event_Command' => $vendorDir . '/wp-cli/cron-command/src/Cron_Event_Command.php', + 'Cron_Schedule_Command' => $vendorDir . '/wp-cli/cron-command/src/Cron_Schedule_Command.php', + 'DB_Command' => $vendorDir . '/wp-cli/db-command/src/DB_Command.php', + 'DeepCopy\\DeepCopy' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php', + 'DeepCopy\\Exception\\CloneException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php', + 'DeepCopy\\Exception\\PropertyException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php', + 'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', + 'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', + 'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', + 'DeepCopy\\Filter\\Filter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php', + 'DeepCopy\\Filter\\KeepFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php', + 'DeepCopy\\Filter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php', + 'DeepCopy\\Filter\\SetNullFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php', + 'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php', + 'DeepCopy\\Matcher\\Matcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php', + 'DeepCopy\\Matcher\\PropertyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php', + 'DeepCopy\\Matcher\\PropertyNameMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php', + 'DeepCopy\\Matcher\\PropertyTypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php', + 'DeepCopy\\Reflection\\ReflectionHelper' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php', + 'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php', + 'DeepCopy\\TypeFilter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php', + 'DeepCopy\\TypeFilter\\ShallowCopyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php', + 'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php', + 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php', + 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', + 'DeepCopy\\TypeFilter\\TypeFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', + 'DeepCopy\\TypeMatcher\\TypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', + 'Doctrine\\Common\\Inflector\\Inflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php', + 'Doctrine\\Instantiator\\Exception\\ExceptionInterface' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php', + 'Doctrine\\Instantiator\\Exception\\InvalidArgumentException' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php', + 'Doctrine\\Instantiator\\Exception\\UnexpectedValueException' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php', + 'Doctrine\\Instantiator\\Instantiator' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php', + 'Doctrine\\Instantiator\\InstantiatorInterface' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php', + 'Dotenv\\Dotenv' => $vendorDir . '/vlucas/phpdotenv/src/Dotenv.php', + 'Dotenv\\Environment\\AbstractVariables' => $vendorDir . '/vlucas/phpdotenv/src/Environment/AbstractVariables.php', + 'Dotenv\\Environment\\Adapter\\AdapterInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/AdapterInterface.php', + 'Dotenv\\Environment\\Adapter\\ApacheAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ApacheAdapter.php', + 'Dotenv\\Environment\\Adapter\\ArrayAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ArrayAdapter.php', + 'Dotenv\\Environment\\Adapter\\EnvConstAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/EnvConstAdapter.php', + 'Dotenv\\Environment\\Adapter\\PutenvAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/PutenvAdapter.php', + 'Dotenv\\Environment\\Adapter\\ServerConstAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ServerConstAdapter.php', + 'Dotenv\\Environment\\DotenvFactory' => $vendorDir . '/vlucas/phpdotenv/src/Environment/DotenvFactory.php', + 'Dotenv\\Environment\\DotenvVariables' => $vendorDir . '/vlucas/phpdotenv/src/Environment/DotenvVariables.php', + 'Dotenv\\Environment\\FactoryInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/FactoryInterface.php', + 'Dotenv\\Environment\\VariablesInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/VariablesInterface.php', + 'Dotenv\\Exception\\ExceptionInterface' => $vendorDir . '/vlucas/phpdotenv/src/Exception/ExceptionInterface.php', + 'Dotenv\\Exception\\InvalidFileException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidFileException.php', + 'Dotenv\\Exception\\InvalidPathException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidPathException.php', + 'Dotenv\\Exception\\ValidationException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/ValidationException.php', + 'Dotenv\\Lines' => $vendorDir . '/vlucas/phpdotenv/src/Lines.php', + 'Dotenv\\Loader' => $vendorDir . '/vlucas/phpdotenv/src/Loader.php', + 'Dotenv\\Parser' => $vendorDir . '/vlucas/phpdotenv/src/Parser.php', + 'Dotenv\\Regex\\Error' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Error.php', + 'Dotenv\\Regex\\Regex' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Regex.php', + 'Dotenv\\Regex\\Result' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Result.php', + 'Dotenv\\Regex\\Success' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Success.php', + 'Dotenv\\Validator' => $vendorDir . '/vlucas/phpdotenv/src/Validator.php', + 'EvalFile_Command' => $vendorDir . '/wp-cli/eval-command/src/EvalFile_Command.php', + 'Eval_Command' => $vendorDir . '/wp-cli/eval-command/src/Eval_Command.php', + 'Export_Command' => $vendorDir . '/wp-cli/export-command/src/Export_Command.php', + 'Facebook\\WebDriver\\AbstractWebDriverCheckboxOrRadio' => $vendorDir . '/facebook/webdriver/lib/AbstractWebDriverCheckboxOrRadio.php', + 'Facebook\\WebDriver\\Chrome\\ChromeDriver' => $vendorDir . '/facebook/webdriver/lib/Chrome/ChromeDriver.php', + 'Facebook\\WebDriver\\Chrome\\ChromeDriverService' => $vendorDir . '/facebook/webdriver/lib/Chrome/ChromeDriverService.php', + 'Facebook\\WebDriver\\Chrome\\ChromeOptions' => $vendorDir . '/facebook/webdriver/lib/Chrome/ChromeOptions.php', + 'Facebook\\WebDriver\\Cookie' => $vendorDir . '/facebook/webdriver/lib/Cookie.php', + 'Facebook\\WebDriver\\Exception\\ElementNotSelectableException' => $vendorDir . '/facebook/webdriver/lib/Exception/ElementNotSelectableException.php', + 'Facebook\\WebDriver\\Exception\\ElementNotVisibleException' => $vendorDir . '/facebook/webdriver/lib/Exception/ElementNotVisibleException.php', + 'Facebook\\WebDriver\\Exception\\ExpectedException' => $vendorDir . '/facebook/webdriver/lib/Exception/ExpectedException.php', + 'Facebook\\WebDriver\\Exception\\IMEEngineActivationFailedException' => $vendorDir . '/facebook/webdriver/lib/Exception/IMEEngineActivationFailedException.php', + 'Facebook\\WebDriver\\Exception\\IMENotAvailableException' => $vendorDir . '/facebook/webdriver/lib/Exception/IMENotAvailableException.php', + 'Facebook\\WebDriver\\Exception\\IndexOutOfBoundsException' => $vendorDir . '/facebook/webdriver/lib/Exception/IndexOutOfBoundsException.php', + 'Facebook\\WebDriver\\Exception\\InvalidCookieDomainException' => $vendorDir . '/facebook/webdriver/lib/Exception/InvalidCookieDomainException.php', + 'Facebook\\WebDriver\\Exception\\InvalidCoordinatesException' => $vendorDir . '/facebook/webdriver/lib/Exception/InvalidCoordinatesException.php', + 'Facebook\\WebDriver\\Exception\\InvalidElementStateException' => $vendorDir . '/facebook/webdriver/lib/Exception/InvalidElementStateException.php', + 'Facebook\\WebDriver\\Exception\\InvalidSelectorException' => $vendorDir . '/facebook/webdriver/lib/Exception/InvalidSelectorException.php', + 'Facebook\\WebDriver\\Exception\\MoveTargetOutOfBoundsException' => $vendorDir . '/facebook/webdriver/lib/Exception/MoveTargetOutOfBoundsException.php', + 'Facebook\\WebDriver\\Exception\\NoAlertOpenException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoAlertOpenException.php', + 'Facebook\\WebDriver\\Exception\\NoCollectionException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoCollectionException.php', + 'Facebook\\WebDriver\\Exception\\NoScriptResultException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoScriptResultException.php', + 'Facebook\\WebDriver\\Exception\\NoStringException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoStringException.php', + 'Facebook\\WebDriver\\Exception\\NoStringLengthException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoStringLengthException.php', + 'Facebook\\WebDriver\\Exception\\NoStringWrapperException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoStringWrapperException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchCollectionException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchCollectionException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchDocumentException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchDocumentException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchDriverException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchDriverException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchElementException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchElementException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchFrameException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchFrameException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchWindowException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchWindowException.php', + 'Facebook\\WebDriver\\Exception\\NullPointerException' => $vendorDir . '/facebook/webdriver/lib/Exception/NullPointerException.php', + 'Facebook\\WebDriver\\Exception\\ScriptTimeoutException' => $vendorDir . '/facebook/webdriver/lib/Exception/ScriptTimeoutException.php', + 'Facebook\\WebDriver\\Exception\\SessionNotCreatedException' => $vendorDir . '/facebook/webdriver/lib/Exception/SessionNotCreatedException.php', + 'Facebook\\WebDriver\\Exception\\StaleElementReferenceException' => $vendorDir . '/facebook/webdriver/lib/Exception/StaleElementReferenceException.php', + 'Facebook\\WebDriver\\Exception\\TimeOutException' => $vendorDir . '/facebook/webdriver/lib/Exception/TimeOutException.php', + 'Facebook\\WebDriver\\Exception\\UnableToSetCookieException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnableToSetCookieException.php', + 'Facebook\\WebDriver\\Exception\\UnexpectedAlertOpenException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnexpectedAlertOpenException.php', + 'Facebook\\WebDriver\\Exception\\UnexpectedJavascriptException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnexpectedJavascriptException.php', + 'Facebook\\WebDriver\\Exception\\UnexpectedTagNameException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnexpectedTagNameException.php', + 'Facebook\\WebDriver\\Exception\\UnknownCommandException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnknownCommandException.php', + 'Facebook\\WebDriver\\Exception\\UnknownServerException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnknownServerException.php', + 'Facebook\\WebDriver\\Exception\\UnrecognizedExceptionException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnrecognizedExceptionException.php', + 'Facebook\\WebDriver\\Exception\\UnsupportedOperationException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnsupportedOperationException.php', + 'Facebook\\WebDriver\\Exception\\WebDriverCurlException' => $vendorDir . '/facebook/webdriver/lib/Exception/WebDriverCurlException.php', + 'Facebook\\WebDriver\\Exception\\WebDriverException' => $vendorDir . '/facebook/webdriver/lib/Exception/WebDriverException.php', + 'Facebook\\WebDriver\\Exception\\XPathLookupException' => $vendorDir . '/facebook/webdriver/lib/Exception/XPathLookupException.php', + 'Facebook\\WebDriver\\Firefox\\FirefoxDriver' => $vendorDir . '/facebook/webdriver/lib/Firefox/FirefoxDriver.php', + 'Facebook\\WebDriver\\Firefox\\FirefoxPreferences' => $vendorDir . '/facebook/webdriver/lib/Firefox/FirefoxPreferences.php', + 'Facebook\\WebDriver\\Firefox\\FirefoxProfile' => $vendorDir . '/facebook/webdriver/lib/Firefox/FirefoxProfile.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverButtonReleaseAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverButtonReleaseAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverClickAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverClickAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverClickAndHoldAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverClickAndHoldAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverContextClickAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverContextClickAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverCoordinates' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverCoordinates.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverDoubleClickAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverDoubleClickAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeyDownAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeyDownAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeyUpAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeyUpAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeysRelatedAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeysRelatedAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMouseAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMouseAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMouseMoveAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMouseMoveAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMoveToOffsetAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMoveToOffsetAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverSendKeysAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverSendKeysAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverSingleKeyAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverSingleKeyAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverDoubleTapAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverDoubleTapAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverDownAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverDownAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverFlickAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverFlickAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverFlickFromElementAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverFlickFromElementAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverLongPressAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverLongPressAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverMoveAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverMoveAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverScrollAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverScrollAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverScrollFromElementAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverScrollFromElementAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTapAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTapAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTouchAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTouchAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTouchScreen' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTouchScreen.php', + 'Facebook\\WebDriver\\Interactions\\WebDriverActions' => $vendorDir . '/facebook/webdriver/lib/Interactions/WebDriverActions.php', + 'Facebook\\WebDriver\\Interactions\\WebDriverCompositeAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/WebDriverCompositeAction.php', + 'Facebook\\WebDriver\\Interactions\\WebDriverTouchActions' => $vendorDir . '/facebook/webdriver/lib/Interactions/WebDriverTouchActions.php', + 'Facebook\\WebDriver\\Internal\\WebDriverLocatable' => $vendorDir . '/facebook/webdriver/lib/Internal/WebDriverLocatable.php', + 'Facebook\\WebDriver\\JavaScriptExecutor' => $vendorDir . '/facebook/webdriver/lib/JavaScriptExecutor.php', + 'Facebook\\WebDriver\\Net\\URLChecker' => $vendorDir . '/facebook/webdriver/lib/Net/URLChecker.php', + 'Facebook\\WebDriver\\Remote\\DesiredCapabilities' => $vendorDir . '/facebook/webdriver/lib/Remote/DesiredCapabilities.php', + 'Facebook\\WebDriver\\Remote\\DriverCommand' => $vendorDir . '/facebook/webdriver/lib/Remote/DriverCommand.php', + 'Facebook\\WebDriver\\Remote\\ExecuteMethod' => $vendorDir . '/facebook/webdriver/lib/Remote/ExecuteMethod.php', + 'Facebook\\WebDriver\\Remote\\FileDetector' => $vendorDir . '/facebook/webdriver/lib/Remote/FileDetector.php', + 'Facebook\\WebDriver\\Remote\\HttpCommandExecutor' => $vendorDir . '/facebook/webdriver/lib/Remote/HttpCommandExecutor.php', + 'Facebook\\WebDriver\\Remote\\LocalFileDetector' => $vendorDir . '/facebook/webdriver/lib/Remote/LocalFileDetector.php', + 'Facebook\\WebDriver\\Remote\\RemoteExecuteMethod' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteExecuteMethod.php', + 'Facebook\\WebDriver\\Remote\\RemoteKeyboard' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteKeyboard.php', + 'Facebook\\WebDriver\\Remote\\RemoteMouse' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteMouse.php', + 'Facebook\\WebDriver\\Remote\\RemoteTargetLocator' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteTargetLocator.php', + 'Facebook\\WebDriver\\Remote\\RemoteTouchScreen' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteTouchScreen.php', + 'Facebook\\WebDriver\\Remote\\RemoteWebDriver' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteWebDriver.php', + 'Facebook\\WebDriver\\Remote\\RemoteWebElement' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteWebElement.php', + 'Facebook\\WebDriver\\Remote\\Service\\DriverCommandExecutor' => $vendorDir . '/facebook/webdriver/lib/Remote/Service/DriverCommandExecutor.php', + 'Facebook\\WebDriver\\Remote\\Service\\DriverService' => $vendorDir . '/facebook/webdriver/lib/Remote/Service/DriverService.php', + 'Facebook\\WebDriver\\Remote\\UselessFileDetector' => $vendorDir . '/facebook/webdriver/lib/Remote/UselessFileDetector.php', + 'Facebook\\WebDriver\\Remote\\WebDriverBrowserType' => $vendorDir . '/facebook/webdriver/lib/Remote/WebDriverBrowserType.php', + 'Facebook\\WebDriver\\Remote\\WebDriverCapabilityType' => $vendorDir . '/facebook/webdriver/lib/Remote/WebDriverCapabilityType.php', + 'Facebook\\WebDriver\\Remote\\WebDriverCommand' => $vendorDir . '/facebook/webdriver/lib/Remote/WebDriverCommand.php', + 'Facebook\\WebDriver\\Remote\\WebDriverResponse' => $vendorDir . '/facebook/webdriver/lib/Remote/WebDriverResponse.php', + 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebDriver' => $vendorDir . '/facebook/webdriver/lib/Support/Events/EventFiringWebDriver.php', + 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebDriverNavigation' => $vendorDir . '/facebook/webdriver/lib/Support/Events/EventFiringWebDriverNavigation.php', + 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebElement' => $vendorDir . '/facebook/webdriver/lib/Support/Events/EventFiringWebElement.php', + 'Facebook\\WebDriver\\Support\\XPathEscaper' => $vendorDir . '/facebook/webdriver/lib/Support/XPathEscaper.php', + 'Facebook\\WebDriver\\WebDriver' => $vendorDir . '/facebook/webdriver/lib/WebDriver.php', + 'Facebook\\WebDriver\\WebDriverAction' => $vendorDir . '/facebook/webdriver/lib/WebDriverAction.php', + 'Facebook\\WebDriver\\WebDriverAlert' => $vendorDir . '/facebook/webdriver/lib/WebDriverAlert.php', + 'Facebook\\WebDriver\\WebDriverBy' => $vendorDir . '/facebook/webdriver/lib/WebDriverBy.php', + 'Facebook\\WebDriver\\WebDriverCapabilities' => $vendorDir . '/facebook/webdriver/lib/WebDriverCapabilities.php', + 'Facebook\\WebDriver\\WebDriverCheckboxes' => $vendorDir . '/facebook/webdriver/lib/WebDriverCheckboxes.php', + 'Facebook\\WebDriver\\WebDriverCommandExecutor' => $vendorDir . '/facebook/webdriver/lib/WebDriverCommandExecutor.php', + 'Facebook\\WebDriver\\WebDriverDimension' => $vendorDir . '/facebook/webdriver/lib/WebDriverDimension.php', + 'Facebook\\WebDriver\\WebDriverDispatcher' => $vendorDir . '/facebook/webdriver/lib/WebDriverDispatcher.php', + 'Facebook\\WebDriver\\WebDriverElement' => $vendorDir . '/facebook/webdriver/lib/WebDriverElement.php', + 'Facebook\\WebDriver\\WebDriverEventListener' => $vendorDir . '/facebook/webdriver/lib/WebDriverEventListener.php', + 'Facebook\\WebDriver\\WebDriverExpectedCondition' => $vendorDir . '/facebook/webdriver/lib/WebDriverExpectedCondition.php', + 'Facebook\\WebDriver\\WebDriverHasInputDevices' => $vendorDir . '/facebook/webdriver/lib/WebDriverHasInputDevices.php', + 'Facebook\\WebDriver\\WebDriverKeyboard' => $vendorDir . '/facebook/webdriver/lib/WebDriverKeyboard.php', + 'Facebook\\WebDriver\\WebDriverKeys' => $vendorDir . '/facebook/webdriver/lib/WebDriverKeys.php', + 'Facebook\\WebDriver\\WebDriverMouse' => $vendorDir . '/facebook/webdriver/lib/WebDriverMouse.php', + 'Facebook\\WebDriver\\WebDriverNavigation' => $vendorDir . '/facebook/webdriver/lib/WebDriverNavigation.php', + 'Facebook\\WebDriver\\WebDriverOptions' => $vendorDir . '/facebook/webdriver/lib/WebDriverOptions.php', + 'Facebook\\WebDriver\\WebDriverPlatform' => $vendorDir . '/facebook/webdriver/lib/WebDriverPlatform.php', + 'Facebook\\WebDriver\\WebDriverPoint' => $vendorDir . '/facebook/webdriver/lib/WebDriverPoint.php', + 'Facebook\\WebDriver\\WebDriverRadios' => $vendorDir . '/facebook/webdriver/lib/WebDriverRadios.php', + 'Facebook\\WebDriver\\WebDriverSearchContext' => $vendorDir . '/facebook/webdriver/lib/WebDriverSearchContext.php', + 'Facebook\\WebDriver\\WebDriverSelect' => $vendorDir . '/facebook/webdriver/lib/WebDriverSelect.php', + 'Facebook\\WebDriver\\WebDriverSelectInterface' => $vendorDir . '/facebook/webdriver/lib/WebDriverSelectInterface.php', + 'Facebook\\WebDriver\\WebDriverTargetLocator' => $vendorDir . '/facebook/webdriver/lib/WebDriverTargetLocator.php', + 'Facebook\\WebDriver\\WebDriverTimeouts' => $vendorDir . '/facebook/webdriver/lib/WebDriverTimeouts.php', + 'Facebook\\WebDriver\\WebDriverUpAction' => $vendorDir . '/facebook/webdriver/lib/WebDriverUpAction.php', + 'Facebook\\WebDriver\\WebDriverWait' => $vendorDir . '/facebook/webdriver/lib/WebDriverWait.php', + 'Facebook\\WebDriver\\WebDriverWindow' => $vendorDir . '/facebook/webdriver/lib/WebDriverWindow.php', 'Firebase\\JWT\\BeforeValidException' => $vendorDir . '/firebase/php-jwt/src/BeforeValidException.php', 'Firebase\\JWT\\ExpiredException' => $vendorDir . '/firebase/php-jwt/src/ExpiredException.php', 'Firebase\\JWT\\JWT' => $vendorDir . '/firebase/php-jwt/src/JWT.php', 'Firebase\\JWT\\SignatureInvalidException' => $vendorDir . '/firebase/php-jwt/src/SignatureInvalidException.php', + 'Gettext\\BaseTranslator' => $vendorDir . '/gettext/gettext/src/BaseTranslator.php', + 'Gettext\\Extractors\\Blade' => $vendorDir . '/gettext/gettext/src/Extractors/Blade.php', + 'Gettext\\Extractors\\Csv' => $vendorDir . '/gettext/gettext/src/Extractors/Csv.php', + 'Gettext\\Extractors\\CsvDictionary' => $vendorDir . '/gettext/gettext/src/Extractors/CsvDictionary.php', + 'Gettext\\Extractors\\Extractor' => $vendorDir . '/gettext/gettext/src/Extractors/Extractor.php', + 'Gettext\\Extractors\\ExtractorInterface' => $vendorDir . '/gettext/gettext/src/Extractors/ExtractorInterface.php', + 'Gettext\\Extractors\\ExtractorMultiInterface' => $vendorDir . '/gettext/gettext/src/Extractors/ExtractorMultiInterface.php', + 'Gettext\\Extractors\\Jed' => $vendorDir . '/gettext/gettext/src/Extractors/Jed.php', + 'Gettext\\Extractors\\JsCode' => $vendorDir . '/gettext/gettext/src/Extractors/JsCode.php', + 'Gettext\\Extractors\\Json' => $vendorDir . '/gettext/gettext/src/Extractors/Json.php', + 'Gettext\\Extractors\\JsonDictionary' => $vendorDir . '/gettext/gettext/src/Extractors/JsonDictionary.php', + 'Gettext\\Extractors\\Mo' => $vendorDir . '/gettext/gettext/src/Extractors/Mo.php', + 'Gettext\\Extractors\\PhpArray' => $vendorDir . '/gettext/gettext/src/Extractors/PhpArray.php', + 'Gettext\\Extractors\\PhpCode' => $vendorDir . '/gettext/gettext/src/Extractors/PhpCode.php', + 'Gettext\\Extractors\\Po' => $vendorDir . '/gettext/gettext/src/Extractors/Po.php', + 'Gettext\\Extractors\\Twig' => $vendorDir . '/gettext/gettext/src/Extractors/Twig.php', + 'Gettext\\Extractors\\VueJs' => $vendorDir . '/gettext/gettext/src/Extractors/VueJs.php', + 'Gettext\\Extractors\\Xliff' => $vendorDir . '/gettext/gettext/src/Extractors/Xliff.php', + 'Gettext\\Extractors\\Yaml' => $vendorDir . '/gettext/gettext/src/Extractors/Yaml.php', + 'Gettext\\Extractors\\YamlDictionary' => $vendorDir . '/gettext/gettext/src/Extractors/YamlDictionary.php', + 'Gettext\\Generators\\Csv' => $vendorDir . '/gettext/gettext/src/Generators/Csv.php', + 'Gettext\\Generators\\CsvDictionary' => $vendorDir . '/gettext/gettext/src/Generators/CsvDictionary.php', + 'Gettext\\Generators\\Generator' => $vendorDir . '/gettext/gettext/src/Generators/Generator.php', + 'Gettext\\Generators\\GeneratorInterface' => $vendorDir . '/gettext/gettext/src/Generators/GeneratorInterface.php', + 'Gettext\\Generators\\Jed' => $vendorDir . '/gettext/gettext/src/Generators/Jed.php', + 'Gettext\\Generators\\Json' => $vendorDir . '/gettext/gettext/src/Generators/Json.php', + 'Gettext\\Generators\\JsonDictionary' => $vendorDir . '/gettext/gettext/src/Generators/JsonDictionary.php', + 'Gettext\\Generators\\Mo' => $vendorDir . '/gettext/gettext/src/Generators/Mo.php', + 'Gettext\\Generators\\PhpArray' => $vendorDir . '/gettext/gettext/src/Generators/PhpArray.php', + 'Gettext\\Generators\\Po' => $vendorDir . '/gettext/gettext/src/Generators/Po.php', + 'Gettext\\Generators\\Xliff' => $vendorDir . '/gettext/gettext/src/Generators/Xliff.php', + 'Gettext\\Generators\\Yaml' => $vendorDir . '/gettext/gettext/src/Generators/Yaml.php', + 'Gettext\\Generators\\YamlDictionary' => $vendorDir . '/gettext/gettext/src/Generators/YamlDictionary.php', + 'Gettext\\GettextTranslator' => $vendorDir . '/gettext/gettext/src/GettextTranslator.php', + 'Gettext\\Languages\\Category' => $vendorDir . '/gettext/languages/src/Category.php', + 'Gettext\\Languages\\CldrData' => $vendorDir . '/gettext/languages/src/CldrData.php', + 'Gettext\\Languages\\Exporter\\Docs' => $vendorDir . '/gettext/languages/src/Exporter/Docs.php', + 'Gettext\\Languages\\Exporter\\Exporter' => $vendorDir . '/gettext/languages/src/Exporter/Exporter.php', + 'Gettext\\Languages\\Exporter\\Html' => $vendorDir . '/gettext/languages/src/Exporter/Html.php', + 'Gettext\\Languages\\Exporter\\Json' => $vendorDir . '/gettext/languages/src/Exporter/Json.php', + 'Gettext\\Languages\\Exporter\\Php' => $vendorDir . '/gettext/languages/src/Exporter/Php.php', + 'Gettext\\Languages\\Exporter\\Po' => $vendorDir . '/gettext/languages/src/Exporter/Po.php', + 'Gettext\\Languages\\Exporter\\Prettyjson' => $vendorDir . '/gettext/languages/src/Exporter/Prettyjson.php', + 'Gettext\\Languages\\Exporter\\Xml' => $vendorDir . '/gettext/languages/src/Exporter/Xml.php', + 'Gettext\\Languages\\FormulaConverter' => $vendorDir . '/gettext/languages/src/FormulaConverter.php', + 'Gettext\\Languages\\Language' => $vendorDir . '/gettext/languages/src/Language.php', + 'Gettext\\Merge' => $vendorDir . '/gettext/gettext/src/Merge.php', + 'Gettext\\Translation' => $vendorDir . '/gettext/gettext/src/Translation.php', + 'Gettext\\Translations' => $vendorDir . '/gettext/gettext/src/Translations.php', + 'Gettext\\Translator' => $vendorDir . '/gettext/gettext/src/Translator.php', + 'Gettext\\TranslatorInterface' => $vendorDir . '/gettext/gettext/src/TranslatorInterface.php', + 'Gettext\\Utils\\CsvTrait' => $vendorDir . '/gettext/gettext/src/Utils/CsvTrait.php', + 'Gettext\\Utils\\DictionaryTrait' => $vendorDir . '/gettext/gettext/src/Utils/DictionaryTrait.php', + 'Gettext\\Utils\\FunctionsScanner' => $vendorDir . '/gettext/gettext/src/Utils/FunctionsScanner.php', + 'Gettext\\Utils\\HeadersExtractorTrait' => $vendorDir . '/gettext/gettext/src/Utils/HeadersExtractorTrait.php', + 'Gettext\\Utils\\HeadersGeneratorTrait' => $vendorDir . '/gettext/gettext/src/Utils/HeadersGeneratorTrait.php', + 'Gettext\\Utils\\JsFunctionsScanner' => $vendorDir . '/gettext/gettext/src/Utils/JsFunctionsScanner.php', + 'Gettext\\Utils\\MultidimensionalArrayTrait' => $vendorDir . '/gettext/gettext/src/Utils/MultidimensionalArrayTrait.php', + 'Gettext\\Utils\\ParsedComment' => $vendorDir . '/gettext/gettext/src/Utils/ParsedComment.php', + 'Gettext\\Utils\\ParsedFunction' => $vendorDir . '/gettext/gettext/src/Utils/ParsedFunction.php', + 'Gettext\\Utils\\PhpFunctionsScanner' => $vendorDir . '/gettext/gettext/src/Utils/PhpFunctionsScanner.php', + 'Gettext\\Utils\\StringReader' => $vendorDir . '/gettext/gettext/src/Utils/StringReader.php', + 'Gumlet\\ImageResize' => $vendorDir . '/gumlet/php-image-resize/lib/ImageResize.php', + 'Gumlet\\ImageResizeException' => $vendorDir . '/gumlet/php-image-resize/lib/ImageResizeException.php', + 'GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php', + 'GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php', + 'GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', + 'GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', + 'GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', + 'GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', + 'GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', + 'GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', + 'GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php', + 'GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', + 'GuzzleHttp\\Exception\\GuzzleException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', + 'GuzzleHttp\\Exception\\InvalidArgumentException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php', + 'GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php', + 'GuzzleHttp\\Exception\\SeekException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/SeekException.php', + 'GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php', + 'GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', + 'GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php', + 'GuzzleHttp\\HandlerStack' => $vendorDir . '/guzzlehttp/guzzle/src/HandlerStack.php', + 'GuzzleHttp\\Handler\\CurlFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', + 'GuzzleHttp\\Handler\\CurlFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', + 'GuzzleHttp\\Handler\\CurlHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', + 'GuzzleHttp\\Handler\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', + 'GuzzleHttp\\Handler\\EasyHandle' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', + 'GuzzleHttp\\Handler\\MockHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', + 'GuzzleHttp\\Handler\\Proxy' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/Proxy.php', + 'GuzzleHttp\\Handler\\StreamHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', + 'GuzzleHttp\\MessageFormatter' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatter.php', + 'GuzzleHttp\\Middleware' => $vendorDir . '/guzzlehttp/guzzle/src/Middleware.php', + 'GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php', + 'GuzzleHttp\\PrepareBodyMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', + 'GuzzleHttp\\Promise\\AggregateException' => $vendorDir . '/guzzlehttp/promises/src/AggregateException.php', + 'GuzzleHttp\\Promise\\CancellationException' => $vendorDir . '/guzzlehttp/promises/src/CancellationException.php', + 'GuzzleHttp\\Promise\\Coroutine' => $vendorDir . '/guzzlehttp/promises/src/Coroutine.php', + 'GuzzleHttp\\Promise\\EachPromise' => $vendorDir . '/guzzlehttp/promises/src/EachPromise.php', + 'GuzzleHttp\\Promise\\FulfilledPromise' => $vendorDir . '/guzzlehttp/promises/src/FulfilledPromise.php', + 'GuzzleHttp\\Promise\\Promise' => $vendorDir . '/guzzlehttp/promises/src/Promise.php', + 'GuzzleHttp\\Promise\\PromiseInterface' => $vendorDir . '/guzzlehttp/promises/src/PromiseInterface.php', + 'GuzzleHttp\\Promise\\PromisorInterface' => $vendorDir . '/guzzlehttp/promises/src/PromisorInterface.php', + 'GuzzleHttp\\Promise\\RejectedPromise' => $vendorDir . '/guzzlehttp/promises/src/RejectedPromise.php', + 'GuzzleHttp\\Promise\\RejectionException' => $vendorDir . '/guzzlehttp/promises/src/RejectionException.php', + 'GuzzleHttp\\Promise\\TaskQueue' => $vendorDir . '/guzzlehttp/promises/src/TaskQueue.php', + 'GuzzleHttp\\Promise\\TaskQueueInterface' => $vendorDir . '/guzzlehttp/promises/src/TaskQueueInterface.php', + 'GuzzleHttp\\Psr7\\AppendStream' => $vendorDir . '/guzzlehttp/psr7/src/AppendStream.php', + 'GuzzleHttp\\Psr7\\BufferStream' => $vendorDir . '/guzzlehttp/psr7/src/BufferStream.php', + 'GuzzleHttp\\Psr7\\CachingStream' => $vendorDir . '/guzzlehttp/psr7/src/CachingStream.php', + 'GuzzleHttp\\Psr7\\DroppingStream' => $vendorDir . '/guzzlehttp/psr7/src/DroppingStream.php', + 'GuzzleHttp\\Psr7\\FnStream' => $vendorDir . '/guzzlehttp/psr7/src/FnStream.php', + 'GuzzleHttp\\Psr7\\InflateStream' => $vendorDir . '/guzzlehttp/psr7/src/InflateStream.php', + 'GuzzleHttp\\Psr7\\LazyOpenStream' => $vendorDir . '/guzzlehttp/psr7/src/LazyOpenStream.php', + 'GuzzleHttp\\Psr7\\LimitStream' => $vendorDir . '/guzzlehttp/psr7/src/LimitStream.php', + 'GuzzleHttp\\Psr7\\MessageTrait' => $vendorDir . '/guzzlehttp/psr7/src/MessageTrait.php', + 'GuzzleHttp\\Psr7\\MultipartStream' => $vendorDir . '/guzzlehttp/psr7/src/MultipartStream.php', + 'GuzzleHttp\\Psr7\\NoSeekStream' => $vendorDir . '/guzzlehttp/psr7/src/NoSeekStream.php', + 'GuzzleHttp\\Psr7\\PumpStream' => $vendorDir . '/guzzlehttp/psr7/src/PumpStream.php', + 'GuzzleHttp\\Psr7\\Request' => $vendorDir . '/guzzlehttp/psr7/src/Request.php', + 'GuzzleHttp\\Psr7\\Response' => $vendorDir . '/guzzlehttp/psr7/src/Response.php', + 'GuzzleHttp\\Psr7\\Rfc7230' => $vendorDir . '/guzzlehttp/psr7/src/Rfc7230.php', + 'GuzzleHttp\\Psr7\\ServerRequest' => $vendorDir . '/guzzlehttp/psr7/src/ServerRequest.php', + 'GuzzleHttp\\Psr7\\Stream' => $vendorDir . '/guzzlehttp/psr7/src/Stream.php', + 'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', + 'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php', + 'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php', + 'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php', + 'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php', + 'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php', + 'GuzzleHttp\\RedirectMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', + 'GuzzleHttp\\RequestOptions' => $vendorDir . '/guzzlehttp/guzzle/src/RequestOptions.php', + 'GuzzleHttp\\RetryMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RetryMiddleware.php', + 'GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php', + 'GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php', + 'Handlebars\\Arguments' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Arguments.php', + 'Handlebars\\Autoloader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Autoloader.php', + 'Handlebars\\BaseString' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/BaseString.php', + 'Handlebars\\Cache' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Cache.php', + 'Handlebars\\Cache\\APC' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Cache/APC.php', + 'Handlebars\\Cache\\Disk' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Cache/Disk.php', + 'Handlebars\\Cache\\Dummy' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Cache/Dummy.php', + 'Handlebars\\ChildContext' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/ChildContext.php', + 'Handlebars\\Context' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Context.php', + 'Handlebars\\Handlebars' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Handlebars.php', + 'Handlebars\\Helper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper.php', + 'Handlebars\\Helper\\BindAttrHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/BindAttrHelper.php', + 'Handlebars\\Helper\\EachHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/EachHelper.php', + 'Handlebars\\Helper\\IfHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/IfHelper.php', + 'Handlebars\\Helper\\UnlessHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/UnlessHelper.php', + 'Handlebars\\Helper\\WithHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/WithHelper.php', + 'Handlebars\\Helpers' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helpers.php', + 'Handlebars\\Loader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader.php', + 'Handlebars\\Loader\\ArrayLoader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader/ArrayLoader.php', + 'Handlebars\\Loader\\FilesystemLoader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader/FilesystemLoader.php', + 'Handlebars\\Loader\\InlineLoader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader/InlineLoader.php', + 'Handlebars\\Loader\\StringLoader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader/StringLoader.php', + 'Handlebars\\Parser' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Parser.php', + 'Handlebars\\SafeString' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/SafeString.php', + 'Handlebars\\String' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/String.php', + 'Handlebars\\StringWrapper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/StringWrapper.php', + 'Handlebars\\Template' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Template.php', + 'Handlebars\\Tokenizer' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Tokenizer.php', + 'Hautelook\\Phpass\\PasswordHash' => $vendorDir . '/hautelook/phpass/src/Hautelook/Phpass/PasswordHash.php', + 'Illuminate\\Contracts\\Auth\\Access\\Authorizable' => $vendorDir . '/illuminate/contracts/Auth/Access/Authorizable.php', + 'Illuminate\\Contracts\\Auth\\Access\\Gate' => $vendorDir . '/illuminate/contracts/Auth/Access/Gate.php', + 'Illuminate\\Contracts\\Auth\\Authenticatable' => $vendorDir . '/illuminate/contracts/Auth/Authenticatable.php', + 'Illuminate\\Contracts\\Auth\\CanResetPassword' => $vendorDir . '/illuminate/contracts/Auth/CanResetPassword.php', + 'Illuminate\\Contracts\\Auth\\Factory' => $vendorDir . '/illuminate/contracts/Auth/Factory.php', + 'Illuminate\\Contracts\\Auth\\Guard' => $vendorDir . '/illuminate/contracts/Auth/Guard.php', + 'Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => $vendorDir . '/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php', + 'Illuminate\\Contracts\\Auth\\MustVerifyEmail' => $vendorDir . '/illuminate/contracts/Auth/MustVerifyEmail.php', + 'Illuminate\\Contracts\\Auth\\PasswordBroker' => $vendorDir . '/illuminate/contracts/Auth/PasswordBroker.php', + 'Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => $vendorDir . '/illuminate/contracts/Auth/PasswordBrokerFactory.php', + 'Illuminate\\Contracts\\Auth\\StatefulGuard' => $vendorDir . '/illuminate/contracts/Auth/StatefulGuard.php', + 'Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => $vendorDir . '/illuminate/contracts/Auth/SupportsBasicAuth.php', + 'Illuminate\\Contracts\\Auth\\UserProvider' => $vendorDir . '/illuminate/contracts/Auth/UserProvider.php', + 'Illuminate\\Contracts\\Broadcasting\\Broadcaster' => $vendorDir . '/illuminate/contracts/Broadcasting/Broadcaster.php', + 'Illuminate\\Contracts\\Broadcasting\\Factory' => $vendorDir . '/illuminate/contracts/Broadcasting/Factory.php', + 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBroadcast.php', + 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php', + 'Illuminate\\Contracts\\Bus\\Dispatcher' => $vendorDir . '/illuminate/contracts/Bus/Dispatcher.php', + 'Illuminate\\Contracts\\Bus\\QueueingDispatcher' => $vendorDir . '/illuminate/contracts/Bus/QueueingDispatcher.php', + 'Illuminate\\Contracts\\Cache\\Factory' => $vendorDir . '/illuminate/contracts/Cache/Factory.php', + 'Illuminate\\Contracts\\Cache\\Lock' => $vendorDir . '/illuminate/contracts/Cache/Lock.php', + 'Illuminate\\Contracts\\Cache\\LockProvider' => $vendorDir . '/illuminate/contracts/Cache/LockProvider.php', + 'Illuminate\\Contracts\\Cache\\LockTimeoutException' => $vendorDir . '/illuminate/contracts/Cache/LockTimeoutException.php', + 'Illuminate\\Contracts\\Cache\\Repository' => $vendorDir . '/illuminate/contracts/Cache/Repository.php', + 'Illuminate\\Contracts\\Cache\\Store' => $vendorDir . '/illuminate/contracts/Cache/Store.php', + 'Illuminate\\Contracts\\Config\\Repository' => $vendorDir . '/illuminate/contracts/Config/Repository.php', + 'Illuminate\\Contracts\\Console\\Application' => $vendorDir . '/illuminate/contracts/Console/Application.php', + 'Illuminate\\Contracts\\Console\\Kernel' => $vendorDir . '/illuminate/contracts/Console/Kernel.php', + 'Illuminate\\Contracts\\Container\\BindingResolutionException' => $vendorDir . '/illuminate/contracts/Container/BindingResolutionException.php', + 'Illuminate\\Contracts\\Container\\Container' => $vendorDir . '/illuminate/contracts/Container/Container.php', + 'Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => $vendorDir . '/illuminate/contracts/Container/ContextualBindingBuilder.php', + 'Illuminate\\Contracts\\Cookie\\Factory' => $vendorDir . '/illuminate/contracts/Cookie/Factory.php', + 'Illuminate\\Contracts\\Cookie\\QueueingFactory' => $vendorDir . '/illuminate/contracts/Cookie/QueueingFactory.php', + 'Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/CastsAttributes.php', + 'Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php', + 'Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => $vendorDir . '/illuminate/contracts/Database/Events/MigrationEvent.php', + 'Illuminate\\Contracts\\Database\\ModelIdentifier' => $vendorDir . '/illuminate/contracts/Database/ModelIdentifier.php', + 'Illuminate\\Contracts\\Debug\\ExceptionHandler' => $vendorDir . '/illuminate/contracts/Debug/ExceptionHandler.php', + 'Illuminate\\Contracts\\Encryption\\DecryptException' => $vendorDir . '/illuminate/contracts/Encryption/DecryptException.php', + 'Illuminate\\Contracts\\Encryption\\EncryptException' => $vendorDir . '/illuminate/contracts/Encryption/EncryptException.php', + 'Illuminate\\Contracts\\Encryption\\Encrypter' => $vendorDir . '/illuminate/contracts/Encryption/Encrypter.php', + 'Illuminate\\Contracts\\Events\\Dispatcher' => $vendorDir . '/illuminate/contracts/Events/Dispatcher.php', + 'Illuminate\\Contracts\\Filesystem\\Cloud' => $vendorDir . '/illuminate/contracts/Filesystem/Cloud.php', + 'Illuminate\\Contracts\\Filesystem\\Factory' => $vendorDir . '/illuminate/contracts/Filesystem/Factory.php', + 'Illuminate\\Contracts\\Filesystem\\FileExistsException' => $vendorDir . '/illuminate/contracts/Filesystem/FileExistsException.php', + 'Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => $vendorDir . '/illuminate/contracts/Filesystem/FileNotFoundException.php', + 'Illuminate\\Contracts\\Filesystem\\Filesystem' => $vendorDir . '/illuminate/contracts/Filesystem/Filesystem.php', + 'Illuminate\\Contracts\\Foundation\\Application' => $vendorDir . '/illuminate/contracts/Foundation/Application.php', + 'Illuminate\\Contracts\\Foundation\\CachesConfiguration' => $vendorDir . '/illuminate/contracts/Foundation/CachesConfiguration.php', + 'Illuminate\\Contracts\\Foundation\\CachesRoutes' => $vendorDir . '/illuminate/contracts/Foundation/CachesRoutes.php', + 'Illuminate\\Contracts\\Hashing\\Hasher' => $vendorDir . '/illuminate/contracts/Hashing/Hasher.php', + 'Illuminate\\Contracts\\Http\\Kernel' => $vendorDir . '/illuminate/contracts/Http/Kernel.php', + 'Illuminate\\Contracts\\Mail\\Factory' => $vendorDir . '/illuminate/contracts/Mail/Factory.php', + 'Illuminate\\Contracts\\Mail\\MailQueue' => $vendorDir . '/illuminate/contracts/Mail/MailQueue.php', + 'Illuminate\\Contracts\\Mail\\Mailable' => $vendorDir . '/illuminate/contracts/Mail/Mailable.php', + 'Illuminate\\Contracts\\Mail\\Mailer' => $vendorDir . '/illuminate/contracts/Mail/Mailer.php', + 'Illuminate\\Contracts\\Notifications\\Dispatcher' => $vendorDir . '/illuminate/contracts/Notifications/Dispatcher.php', + 'Illuminate\\Contracts\\Notifications\\Factory' => $vendorDir . '/illuminate/contracts/Notifications/Factory.php', + 'Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => $vendorDir . '/illuminate/contracts/Pagination/LengthAwarePaginator.php', + 'Illuminate\\Contracts\\Pagination\\Paginator' => $vendorDir . '/illuminate/contracts/Pagination/Paginator.php', + 'Illuminate\\Contracts\\Pipeline\\Hub' => $vendorDir . '/illuminate/contracts/Pipeline/Hub.php', + 'Illuminate\\Contracts\\Pipeline\\Pipeline' => $vendorDir . '/illuminate/contracts/Pipeline/Pipeline.php', + 'Illuminate\\Contracts\\Queue\\EntityNotFoundException' => $vendorDir . '/illuminate/contracts/Queue/EntityNotFoundException.php', + 'Illuminate\\Contracts\\Queue\\EntityResolver' => $vendorDir . '/illuminate/contracts/Queue/EntityResolver.php', + 'Illuminate\\Contracts\\Queue\\Factory' => $vendorDir . '/illuminate/contracts/Queue/Factory.php', + 'Illuminate\\Contracts\\Queue\\Job' => $vendorDir . '/illuminate/contracts/Queue/Job.php', + 'Illuminate\\Contracts\\Queue\\Monitor' => $vendorDir . '/illuminate/contracts/Queue/Monitor.php', + 'Illuminate\\Contracts\\Queue\\Queue' => $vendorDir . '/illuminate/contracts/Queue/Queue.php', + 'Illuminate\\Contracts\\Queue\\QueueableCollection' => $vendorDir . '/illuminate/contracts/Queue/QueueableCollection.php', + 'Illuminate\\Contracts\\Queue\\QueueableEntity' => $vendorDir . '/illuminate/contracts/Queue/QueueableEntity.php', + 'Illuminate\\Contracts\\Queue\\ShouldQueue' => $vendorDir . '/illuminate/contracts/Queue/ShouldQueue.php', + 'Illuminate\\Contracts\\Redis\\Connection' => $vendorDir . '/illuminate/contracts/Redis/Connection.php', + 'Illuminate\\Contracts\\Redis\\Connector' => $vendorDir . '/illuminate/contracts/Redis/Connector.php', + 'Illuminate\\Contracts\\Redis\\Factory' => $vendorDir . '/illuminate/contracts/Redis/Factory.php', + 'Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => $vendorDir . '/illuminate/contracts/Redis/LimiterTimeoutException.php', + 'Illuminate\\Contracts\\Routing\\BindingRegistrar' => $vendorDir . '/illuminate/contracts/Routing/BindingRegistrar.php', + 'Illuminate\\Contracts\\Routing\\Registrar' => $vendorDir . '/illuminate/contracts/Routing/Registrar.php', + 'Illuminate\\Contracts\\Routing\\ResponseFactory' => $vendorDir . '/illuminate/contracts/Routing/ResponseFactory.php', + 'Illuminate\\Contracts\\Routing\\UrlGenerator' => $vendorDir . '/illuminate/contracts/Routing/UrlGenerator.php', + 'Illuminate\\Contracts\\Routing\\UrlRoutable' => $vendorDir . '/illuminate/contracts/Routing/UrlRoutable.php', + 'Illuminate\\Contracts\\Session\\Session' => $vendorDir . '/illuminate/contracts/Session/Session.php', + 'Illuminate\\Contracts\\Support\\Arrayable' => $vendorDir . '/illuminate/contracts/Support/Arrayable.php', + 'Illuminate\\Contracts\\Support\\DeferrableProvider' => $vendorDir . '/illuminate/contracts/Support/DeferrableProvider.php', + 'Illuminate\\Contracts\\Support\\Htmlable' => $vendorDir . '/illuminate/contracts/Support/Htmlable.php', + 'Illuminate\\Contracts\\Support\\Jsonable' => $vendorDir . '/illuminate/contracts/Support/Jsonable.php', + 'Illuminate\\Contracts\\Support\\MessageBag' => $vendorDir . '/illuminate/contracts/Support/MessageBag.php', + 'Illuminate\\Contracts\\Support\\MessageProvider' => $vendorDir . '/illuminate/contracts/Support/MessageProvider.php', + 'Illuminate\\Contracts\\Support\\Renderable' => $vendorDir . '/illuminate/contracts/Support/Renderable.php', + 'Illuminate\\Contracts\\Support\\Responsable' => $vendorDir . '/illuminate/contracts/Support/Responsable.php', + 'Illuminate\\Contracts\\Translation\\HasLocalePreference' => $vendorDir . '/illuminate/contracts/Translation/HasLocalePreference.php', + 'Illuminate\\Contracts\\Translation\\Loader' => $vendorDir . '/illuminate/contracts/Translation/Loader.php', + 'Illuminate\\Contracts\\Translation\\Translator' => $vendorDir . '/illuminate/contracts/Translation/Translator.php', + 'Illuminate\\Contracts\\Validation\\Factory' => $vendorDir . '/illuminate/contracts/Validation/Factory.php', + 'Illuminate\\Contracts\\Validation\\ImplicitRule' => $vendorDir . '/illuminate/contracts/Validation/ImplicitRule.php', + 'Illuminate\\Contracts\\Validation\\Rule' => $vendorDir . '/illuminate/contracts/Validation/Rule.php', + 'Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => $vendorDir . '/illuminate/contracts/Validation/ValidatesWhenResolved.php', + 'Illuminate\\Contracts\\Validation\\Validator' => $vendorDir . '/illuminate/contracts/Validation/Validator.php', + 'Illuminate\\Contracts\\View\\Engine' => $vendorDir . '/illuminate/contracts/View/Engine.php', + 'Illuminate\\Contracts\\View\\Factory' => $vendorDir . '/illuminate/contracts/View/Factory.php', + 'Illuminate\\Contracts\\View\\View' => $vendorDir . '/illuminate/contracts/View/View.php', + 'Illuminate\\Support\\AggregateServiceProvider' => $vendorDir . '/illuminate/support/AggregateServiceProvider.php', + 'Illuminate\\Support\\Arr' => $vendorDir . '/illuminate/support/Arr.php', + 'Illuminate\\Support\\Carbon' => $vendorDir . '/illuminate/support/Carbon.php', + 'Illuminate\\Support\\Collection' => $vendorDir . '/illuminate/support/Collection.php', + 'Illuminate\\Support\\Composer' => $vendorDir . '/illuminate/support/Composer.php', + 'Illuminate\\Support\\ConfigurationUrlParser' => $vendorDir . '/illuminate/support/ConfigurationUrlParser.php', + 'Illuminate\\Support\\DateFactory' => $vendorDir . '/illuminate/support/DateFactory.php', + 'Illuminate\\Support\\Enumerable' => $vendorDir . '/illuminate/support/Enumerable.php', + 'Illuminate\\Support\\Env' => $vendorDir . '/illuminate/support/Env.php', + 'Illuminate\\Support\\Facades\\App' => $vendorDir . '/illuminate/support/Facades/App.php', + 'Illuminate\\Support\\Facades\\Artisan' => $vendorDir . '/illuminate/support/Facades/Artisan.php', + 'Illuminate\\Support\\Facades\\Auth' => $vendorDir . '/illuminate/support/Facades/Auth.php', + 'Illuminate\\Support\\Facades\\Blade' => $vendorDir . '/illuminate/support/Facades/Blade.php', + 'Illuminate\\Support\\Facades\\Broadcast' => $vendorDir . '/illuminate/support/Facades/Broadcast.php', + 'Illuminate\\Support\\Facades\\Bus' => $vendorDir . '/illuminate/support/Facades/Bus.php', + 'Illuminate\\Support\\Facades\\Cache' => $vendorDir . '/illuminate/support/Facades/Cache.php', + 'Illuminate\\Support\\Facades\\Config' => $vendorDir . '/illuminate/support/Facades/Config.php', + 'Illuminate\\Support\\Facades\\Cookie' => $vendorDir . '/illuminate/support/Facades/Cookie.php', + 'Illuminate\\Support\\Facades\\Crypt' => $vendorDir . '/illuminate/support/Facades/Crypt.php', + 'Illuminate\\Support\\Facades\\DB' => $vendorDir . '/illuminate/support/Facades/DB.php', + 'Illuminate\\Support\\Facades\\Date' => $vendorDir . '/illuminate/support/Facades/Date.php', + 'Illuminate\\Support\\Facades\\Event' => $vendorDir . '/illuminate/support/Facades/Event.php', + 'Illuminate\\Support\\Facades\\Facade' => $vendorDir . '/illuminate/support/Facades/Facade.php', + 'Illuminate\\Support\\Facades\\File' => $vendorDir . '/illuminate/support/Facades/File.php', + 'Illuminate\\Support\\Facades\\Gate' => $vendorDir . '/illuminate/support/Facades/Gate.php', + 'Illuminate\\Support\\Facades\\Hash' => $vendorDir . '/illuminate/support/Facades/Hash.php', + 'Illuminate\\Support\\Facades\\Http' => $vendorDir . '/illuminate/support/Facades/Http.php', + 'Illuminate\\Support\\Facades\\Lang' => $vendorDir . '/illuminate/support/Facades/Lang.php', + 'Illuminate\\Support\\Facades\\Log' => $vendorDir . '/illuminate/support/Facades/Log.php', + 'Illuminate\\Support\\Facades\\Mail' => $vendorDir . '/illuminate/support/Facades/Mail.php', + 'Illuminate\\Support\\Facades\\Notification' => $vendorDir . '/illuminate/support/Facades/Notification.php', + 'Illuminate\\Support\\Facades\\Password' => $vendorDir . '/illuminate/support/Facades/Password.php', + 'Illuminate\\Support\\Facades\\Queue' => $vendorDir . '/illuminate/support/Facades/Queue.php', + 'Illuminate\\Support\\Facades\\Redirect' => $vendorDir . '/illuminate/support/Facades/Redirect.php', + 'Illuminate\\Support\\Facades\\Redis' => $vendorDir . '/illuminate/support/Facades/Redis.php', + 'Illuminate\\Support\\Facades\\Request' => $vendorDir . '/illuminate/support/Facades/Request.php', + 'Illuminate\\Support\\Facades\\Response' => $vendorDir . '/illuminate/support/Facades/Response.php', + 'Illuminate\\Support\\Facades\\Route' => $vendorDir . '/illuminate/support/Facades/Route.php', + 'Illuminate\\Support\\Facades\\Schema' => $vendorDir . '/illuminate/support/Facades/Schema.php', + 'Illuminate\\Support\\Facades\\Session' => $vendorDir . '/illuminate/support/Facades/Session.php', + 'Illuminate\\Support\\Facades\\Storage' => $vendorDir . '/illuminate/support/Facades/Storage.php', + 'Illuminate\\Support\\Facades\\URL' => $vendorDir . '/illuminate/support/Facades/URL.php', + 'Illuminate\\Support\\Facades\\Validator' => $vendorDir . '/illuminate/support/Facades/Validator.php', + 'Illuminate\\Support\\Facades\\View' => $vendorDir . '/illuminate/support/Facades/View.php', + 'Illuminate\\Support\\Fluent' => $vendorDir . '/illuminate/support/Fluent.php', + 'Illuminate\\Support\\HigherOrderCollectionProxy' => $vendorDir . '/illuminate/support/HigherOrderCollectionProxy.php', + 'Illuminate\\Support\\HigherOrderTapProxy' => $vendorDir . '/illuminate/support/HigherOrderTapProxy.php', + 'Illuminate\\Support\\HtmlString' => $vendorDir . '/illuminate/support/HtmlString.php', + 'Illuminate\\Support\\InteractsWithTime' => $vendorDir . '/illuminate/support/InteractsWithTime.php', + 'Illuminate\\Support\\LazyCollection' => $vendorDir . '/illuminate/support/LazyCollection.php', + 'Illuminate\\Support\\Manager' => $vendorDir . '/illuminate/support/Manager.php', + 'Illuminate\\Support\\MessageBag' => $vendorDir . '/illuminate/support/MessageBag.php', + 'Illuminate\\Support\\NamespacedItemResolver' => $vendorDir . '/illuminate/support/NamespacedItemResolver.php', + 'Illuminate\\Support\\Optional' => $vendorDir . '/illuminate/support/Optional.php', + 'Illuminate\\Support\\Pluralizer' => $vendorDir . '/illuminate/support/Pluralizer.php', + 'Illuminate\\Support\\ProcessUtils' => $vendorDir . '/illuminate/support/ProcessUtils.php', + 'Illuminate\\Support\\ServiceProvider' => $vendorDir . '/illuminate/support/ServiceProvider.php', + 'Illuminate\\Support\\Str' => $vendorDir . '/illuminate/support/Str.php', + 'Illuminate\\Support\\Stringable' => $vendorDir . '/illuminate/support/Stringable.php', + 'Illuminate\\Support\\Testing\\Fakes\\BusFake' => $vendorDir . '/illuminate/support/Testing/Fakes/BusFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\EventFake' => $vendorDir . '/illuminate/support/Testing/Fakes/EventFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\MailFake' => $vendorDir . '/illuminate/support/Testing/Fakes/MailFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\NotificationFake' => $vendorDir . '/illuminate/support/Testing/Fakes/NotificationFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\PendingMailFake' => $vendorDir . '/illuminate/support/Testing/Fakes/PendingMailFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\QueueFake' => $vendorDir . '/illuminate/support/Testing/Fakes/QueueFake.php', + 'Illuminate\\Support\\Traits\\CapsuleManagerTrait' => $vendorDir . '/illuminate/support/Traits/CapsuleManagerTrait.php', + 'Illuminate\\Support\\Traits\\EnumeratesValues' => $vendorDir . '/illuminate/support/Traits/EnumeratesValues.php', + 'Illuminate\\Support\\Traits\\ForwardsCalls' => $vendorDir . '/illuminate/support/Traits/ForwardsCalls.php', + 'Illuminate\\Support\\Traits\\Localizable' => $vendorDir . '/illuminate/support/Traits/Localizable.php', + 'Illuminate\\Support\\Traits\\Macroable' => $vendorDir . '/illuminate/support/Traits/Macroable.php', + 'Illuminate\\Support\\Traits\\Tappable' => $vendorDir . '/illuminate/support/Traits/Tappable.php', + 'Illuminate\\Support\\ViewErrorBag' => $vendorDir . '/illuminate/support/ViewErrorBag.php', + 'Import_Command' => $vendorDir . '/wp-cli/import-command/src/Import_Command.php', + 'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', + 'JsonSchema\\Constraints\\BaseConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php', + 'JsonSchema\\Constraints\\CollectionConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php', + 'JsonSchema\\Constraints\\Constraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php', + 'JsonSchema\\Constraints\\ConstraintInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php', + 'JsonSchema\\Constraints\\EnumConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php', + 'JsonSchema\\Constraints\\Factory' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php', + 'JsonSchema\\Constraints\\FormatConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php', + 'JsonSchema\\Constraints\\NumberConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php', + 'JsonSchema\\Constraints\\ObjectConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php', + 'JsonSchema\\Constraints\\SchemaConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php', + 'JsonSchema\\Constraints\\StringConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php', + 'JsonSchema\\Constraints\\TypeCheck\\LooseTypeCheck' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php', + 'JsonSchema\\Constraints\\TypeCheck\\StrictTypeCheck' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php', + 'JsonSchema\\Constraints\\TypeCheck\\TypeCheckInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php', + 'JsonSchema\\Constraints\\TypeConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php', + 'JsonSchema\\Constraints\\UndefinedConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php', + 'JsonSchema\\Entity\\JsonPointer' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php', + 'JsonSchema\\Exception\\ExceptionInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php', + 'JsonSchema\\Exception\\InvalidArgumentException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php', + 'JsonSchema\\Exception\\InvalidConfigException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php', + 'JsonSchema\\Exception\\InvalidSchemaException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php', + 'JsonSchema\\Exception\\InvalidSchemaMediaTypeException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php', + 'JsonSchema\\Exception\\InvalidSourceUriException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php', + 'JsonSchema\\Exception\\JsonDecodingException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php', + 'JsonSchema\\Exception\\ResourceNotFoundException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php', + 'JsonSchema\\Exception\\RuntimeException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php', + 'JsonSchema\\Exception\\UnresolvableJsonPointerException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php', + 'JsonSchema\\Exception\\UriResolverException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php', + 'JsonSchema\\Exception\\ValidationException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php', + 'JsonSchema\\Iterator\\ObjectIterator' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php', + 'JsonSchema\\Rfc3339' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php', + 'JsonSchema\\SchemaStorage' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php', + 'JsonSchema\\SchemaStorageInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php', + 'JsonSchema\\UriResolverInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php', + 'JsonSchema\\UriRetrieverInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php', + 'JsonSchema\\Uri\\Retrievers\\AbstractRetriever' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php', + 'JsonSchema\\Uri\\Retrievers\\Curl' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php', + 'JsonSchema\\Uri\\Retrievers\\FileGetContents' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php', + 'JsonSchema\\Uri\\Retrievers\\PredefinedArray' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php', + 'JsonSchema\\Uri\\Retrievers\\UriRetrieverInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php', + 'JsonSchema\\Uri\\UriResolver' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php', + 'JsonSchema\\Uri\\UriRetriever' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php', + 'JsonSchema\\Validator' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Validator.php', + 'Language_Namespace' => $vendorDir . '/wp-cli/language-command/src/Language_Namespace.php', + 'Media_Command' => $vendorDir . '/wp-cli/media-command/src/Media_Command.php', + 'Menu_Command' => $vendorDir . '/wp-cli/entity-command/src/Menu_Command.php', + 'Menu_Item_Command' => $vendorDir . '/wp-cli/entity-command/src/Menu_Item_Command.php', + 'Menu_Location_Command' => $vendorDir . '/wp-cli/entity-command/src/Menu_Location_Command.php', + 'MikeMcLin\\WpPassword\\Contracts\\WpPassword' => $vendorDir . '/mikemclin/laravel-wp-password/src/Contracts/WpPassword.php', + 'MikeMcLin\\WpPassword\\Facades\\WpPassword' => $vendorDir . '/mikemclin/laravel-wp-password/src/Facades/WpPassword.php', + 'MikeMcLin\\WpPassword\\WpPassword' => $vendorDir . '/mikemclin/laravel-wp-password/src/WpPassword.php', + 'MikeMcLin\\WpPassword\\WpPasswordProvider' => $vendorDir . '/mikemclin/laravel-wp-password/src/WpPasswordProvider.php', + 'Mustache_Autoloader' => $vendorDir . '/mustache/mustache/src/Mustache/Autoloader.php', + 'Mustache_Cache' => $vendorDir . '/mustache/mustache/src/Mustache/Cache.php', + 'Mustache_Cache_AbstractCache' => $vendorDir . '/mustache/mustache/src/Mustache/Cache/AbstractCache.php', + 'Mustache_Cache_FilesystemCache' => $vendorDir . '/mustache/mustache/src/Mustache/Cache/FilesystemCache.php', + 'Mustache_Cache_NoopCache' => $vendorDir . '/mustache/mustache/src/Mustache/Cache/NoopCache.php', + 'Mustache_Compiler' => $vendorDir . '/mustache/mustache/src/Mustache/Compiler.php', + 'Mustache_Context' => $vendorDir . '/mustache/mustache/src/Mustache/Context.php', + 'Mustache_Engine' => $vendorDir . '/mustache/mustache/src/Mustache/Engine.php', + 'Mustache_Exception' => $vendorDir . '/mustache/mustache/src/Mustache/Exception.php', + 'Mustache_Exception_InvalidArgumentException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php', + 'Mustache_Exception_LogicException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/LogicException.php', + 'Mustache_Exception_RuntimeException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/RuntimeException.php', + 'Mustache_Exception_SyntaxException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/SyntaxException.php', + 'Mustache_Exception_UnknownFilterException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php', + 'Mustache_Exception_UnknownHelperException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php', + 'Mustache_Exception_UnknownTemplateException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php', + 'Mustache_HelperCollection' => $vendorDir . '/mustache/mustache/src/Mustache/HelperCollection.php', + 'Mustache_LambdaHelper' => $vendorDir . '/mustache/mustache/src/Mustache/LambdaHelper.php', + 'Mustache_Loader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader.php', + 'Mustache_Loader_ArrayLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/ArrayLoader.php', + 'Mustache_Loader_CascadingLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/CascadingLoader.php', + 'Mustache_Loader_FilesystemLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php', + 'Mustache_Loader_InlineLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/InlineLoader.php', + 'Mustache_Loader_MutableLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/MutableLoader.php', + 'Mustache_Loader_ProductionFilesystemLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/ProductionFilesystemLoader.php', + 'Mustache_Loader_StringLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/StringLoader.php', + 'Mustache_Logger' => $vendorDir . '/mustache/mustache/src/Mustache/Logger.php', + 'Mustache_Logger_AbstractLogger' => $vendorDir . '/mustache/mustache/src/Mustache/Logger/AbstractLogger.php', + 'Mustache_Logger_StreamLogger' => $vendorDir . '/mustache/mustache/src/Mustache/Logger/StreamLogger.php', + 'Mustache_Parser' => $vendorDir . '/mustache/mustache/src/Mustache/Parser.php', + 'Mustache_Source' => $vendorDir . '/mustache/mustache/src/Mustache/Source.php', + 'Mustache_Source_FilesystemSource' => $vendorDir . '/mustache/mustache/src/Mustache/Source/FilesystemSource.php', + 'Mustache_Template' => $vendorDir . '/mustache/mustache/src/Mustache/Template.php', + 'Mustache_Tokenizer' => $vendorDir . '/mustache/mustache/src/Mustache/Tokenizer.php', + 'Mustangostang\\Spyc' => $vendorDir . '/wp-cli/mustangostang-spyc/src/Spyc.php', + 'MySQLDump' => $vendorDir . '/dg/mysql-dump/src/MySQLDump.php', + 'MySQLImport' => $vendorDir . '/dg/mysql-dump/src/MySQLImport.php', + 'Network_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Network_Meta_Command.php', + 'Network_Namespace' => $vendorDir . '/wp-cli/entity-command/src/Network_Namespace.php', + 'Option_Command' => $vendorDir . '/wp-cli/entity-command/src/Option_Command.php', + 'Oxymel' => $vendorDir . '/nb/oxymel/Oxymel.php', + 'OxymelException' => $vendorDir . '/nb/oxymel/Oxymel.php', + 'OxymelTest' => $vendorDir . '/nb/oxymel/OxymelTest.php', + 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', + 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', + 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', + 'PHPUnit\\Framework\\Constraint\\ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', + 'PHPUnit\\Framework\\Constraint\\Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', + 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', + 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', + 'PHPUnit\\Framework\\Constraint\\Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', + 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php', + 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php', + 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php', + 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php', + 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', + 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', + 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', + 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', + 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', + 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', + 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', + 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', + 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', + 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', + 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', + 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', + 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', + 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php', + 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', + 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', + 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php', + 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', + 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php', + 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', + 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php', + 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php', + 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php', + 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php', + 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php', + 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', + 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', + 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', + 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php', + 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php', + 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', + 'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', + 'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php', + 'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php', + 'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php', + 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php', + 'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', + 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php', + 'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', + 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', + 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', + 'PHPUnit\\Framework\\InvalidParameterGroupException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php', + 'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php', + 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\Match' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Match.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/NamespaceMatch.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', + 'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator.php', + 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation/Invocation.php', + 'PHPUnit\\Framework\\MockObject\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/InvocationMocker.php', + 'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation/ObjectInvocation.php', + 'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation/StaticInvocation.php', + 'PHPUnit\\Framework\\MockObject\\Invokable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invokable.php', + 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/AnyInvokedCount.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/AnyParameters.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\DeferredError' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/DeferredError.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/Invocation.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtIndex.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedCount.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedRecorder.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/MethodName.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/Parameters.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/StatelessInvocation.php', + 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', + 'PHPUnit\\Framework\\MockObject\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php', + 'PHPUnit\\Framework\\MockObject\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php', + 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ForwardCompatibility/MockObject.php', + 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/MatcherCollection.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php', + 'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php', + 'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php', + 'PHPUnit\\Framework\\RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php', + 'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php', + 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', + 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php', + 'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', + 'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php', + 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', + 'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php', + 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php', + 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php', + 'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php', + 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php', + 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php', + 'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php', + 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', + 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', + 'PHPUnit\\Framework\\UnexpectedValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/UnexpectedValueException.php', + 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', + 'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php', + 'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php', + 'PHPUnit\\Runner\\AfterIncompleteTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php', + 'PHPUnit\\Runner\\AfterLastTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php', + 'PHPUnit\\Runner\\AfterRiskyTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php', + 'PHPUnit\\Runner\\AfterSkippedTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php', + 'PHPUnit\\Runner\\AfterSuccessfulTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php', + 'PHPUnit\\Runner\\AfterTestErrorHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php', + 'PHPUnit\\Runner\\AfterTestFailureHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php', + 'PHPUnit\\Runner\\AfterTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php', + 'PHPUnit\\Runner\\AfterTestWarningHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php', + 'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', + 'PHPUnit\\Runner\\BeforeFirstTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php', + 'PHPUnit\\Runner\\BeforeTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php', + 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php', + 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php', + 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php', + 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php', + 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php', + 'PHPUnit\\Runner\\Hook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/Hook.php', + 'PHPUnit\\Runner\\NullTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Util/NullTestResultCache.php', + 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php', + 'PHPUnit\\Runner\\ResultCacheExtension' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php', + 'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', + 'PHPUnit\\Runner\\TestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestHook.php', + 'PHPUnit\\Runner\\TestListenerAdapter' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php', + 'PHPUnit\\Runner\\TestResultCache' => $vendorDir . '/phpunit/phpunit/src/Util/TestResultCache.php', + 'PHPUnit\\Runner\\TestResultCacheInterface' => $vendorDir . '/phpunit/phpunit/src/Util/TestResultCacheInterface.php', + 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', + 'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', + 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php', + 'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit\\Util\\Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit\\Util\\ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php', + 'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php', + 'PHPUnit\\Util\\FileLoader' => $vendorDir . '/phpunit/phpunit/src/Util/FileLoader.php', + 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', + 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php', + 'PHPUnit\\Util\\Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php', + 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php', + 'PHPUnit\\Util\\InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', + 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php', + 'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php', + 'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php', + 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php', + 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php', + 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php', + 'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php', + 'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php', + 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', + 'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php', + 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php', + 'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', + 'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', + 'PHPUnit\\Util\\TestDox\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TestResult.php', + 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php', + 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php', + 'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php', + 'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php', + 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php', + 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php', + 'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php', + 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php', + 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php', + 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', + 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Util' => $vendorDir . '/phpunit/php-token-stream/src/Token/Util.php', + 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'Package_Command' => $vendorDir . '/wp-cli/package-command/src/Package_Command.php', + 'Peast\\Formatter\\Base' => $vendorDir . '/mck89/peast/lib/Peast/Formatter/Base.php', + 'Peast\\Formatter\\Compact' => $vendorDir . '/mck89/peast/lib/Peast/Formatter/Compact.php', + 'Peast\\Formatter\\Expanded' => $vendorDir . '/mck89/peast/lib/Peast/Formatter/Expanded.php', + 'Peast\\Formatter\\PrettyPrint' => $vendorDir . '/mck89/peast/lib/Peast/Formatter/PrettyPrint.php', + 'Peast\\Peast' => $vendorDir . '/mck89/peast/lib/Peast/Peast.php', + 'Peast\\Renderer' => $vendorDir . '/mck89/peast/lib/Peast/Renderer.php', + 'Peast\\Syntax\\CommentsRegistry' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/CommentsRegistry.php', + 'Peast\\Syntax\\ES2015\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2015/Features.php', + 'Peast\\Syntax\\ES2016\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2016/Features.php', + 'Peast\\Syntax\\ES2017\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2017/Features.php', + 'Peast\\Syntax\\ES2018\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2018/Features.php', + 'Peast\\Syntax\\ES2019\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2019/Features.php', + 'Peast\\Syntax\\ES2020\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2020/Features.php', + 'Peast\\Syntax\\EncodingException' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/EncodingException.php', + 'Peast\\Syntax\\EventsEmitter' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/EventsEmitter.php', + 'Peast\\Syntax\\Exception' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Exception.php', + 'Peast\\Syntax\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Features.php', + 'Peast\\Syntax\\JSX\\Parser' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/JSX/Parser.php', + 'Peast\\Syntax\\JSX\\Scanner' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/JSX/Scanner.php', + 'Peast\\Syntax\\LSM' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/LSM.php', + 'Peast\\Syntax\\Node\\ArrayExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ArrayExpression.php', + 'Peast\\Syntax\\Node\\ArrayPattern' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ArrayPattern.php', + 'Peast\\Syntax\\Node\\ArrowFunctionExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ArrowFunctionExpression.php', + 'Peast\\Syntax\\Node\\AssignmentExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentExpression.php', + 'Peast\\Syntax\\Node\\AssignmentPattern' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentPattern.php', + 'Peast\\Syntax\\Node\\AssignmentProperty' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentProperty.php', + 'Peast\\Syntax\\Node\\AwaitExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/AwaitExpression.php', + 'Peast\\Syntax\\Node\\BigIntLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BigIntLiteral.php', + 'Peast\\Syntax\\Node\\BinaryExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BinaryExpression.php', + 'Peast\\Syntax\\Node\\BlockStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BlockStatement.php', + 'Peast\\Syntax\\Node\\BooleanLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BooleanLiteral.php', + 'Peast\\Syntax\\Node\\BreakStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BreakStatement.php', + 'Peast\\Syntax\\Node\\CallExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/CallExpression.php', + 'Peast\\Syntax\\Node\\CatchClause' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/CatchClause.php', + 'Peast\\Syntax\\Node\\ClassBody' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ClassBody.php', + 'Peast\\Syntax\\Node\\ClassDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ClassDeclaration.php', + 'Peast\\Syntax\\Node\\ClassExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ClassExpression.php', + 'Peast\\Syntax\\Node\\Class_' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Class_.php', + 'Peast\\Syntax\\Node\\Comment' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Comment.php', + 'Peast\\Syntax\\Node\\ConditionalExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ConditionalExpression.php', + 'Peast\\Syntax\\Node\\ContinueStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ContinueStatement.php', + 'Peast\\Syntax\\Node\\DebuggerStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/DebuggerStatement.php', + 'Peast\\Syntax\\Node\\Declaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Declaration.php', + 'Peast\\Syntax\\Node\\DoWhileStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/DoWhileStatement.php', + 'Peast\\Syntax\\Node\\EmptyStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/EmptyStatement.php', + 'Peast\\Syntax\\Node\\ExportAllDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExportAllDeclaration.php', + 'Peast\\Syntax\\Node\\ExportDefaultDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExportDefaultDeclaration.php', + 'Peast\\Syntax\\Node\\ExportNamedDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExportNamedDeclaration.php', + 'Peast\\Syntax\\Node\\ExportSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExportSpecifier.php', + 'Peast\\Syntax\\Node\\Expression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Expression.php', + 'Peast\\Syntax\\Node\\ExpressionStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExpressionStatement.php', + 'Peast\\Syntax\\Node\\ForInStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ForInStatement.php', + 'Peast\\Syntax\\Node\\ForOfStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ForOfStatement.php', + 'Peast\\Syntax\\Node\\ForStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ForStatement.php', + 'Peast\\Syntax\\Node\\FunctionDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/FunctionDeclaration.php', + 'Peast\\Syntax\\Node\\FunctionExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/FunctionExpression.php', + 'Peast\\Syntax\\Node\\Function_' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Function_.php', + 'Peast\\Syntax\\Node\\Identifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Identifier.php', + 'Peast\\Syntax\\Node\\IfStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/IfStatement.php', + 'Peast\\Syntax\\Node\\ImportDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportDeclaration.php', + 'Peast\\Syntax\\Node\\ImportDefaultSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportDefaultSpecifier.php', + 'Peast\\Syntax\\Node\\ImportExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportExpression.php', + 'Peast\\Syntax\\Node\\ImportNamespaceSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportNamespaceSpecifier.php', + 'Peast\\Syntax\\Node\\ImportSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportSpecifier.php', + 'Peast\\Syntax\\Node\\JSX\\JSXAttribute' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXAttribute.php', + 'Peast\\Syntax\\Node\\JSX\\JSXBoundaryElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXBoundaryElement.php', + 'Peast\\Syntax\\Node\\JSX\\JSXClosingElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingElement.php', + 'Peast\\Syntax\\Node\\JSX\\JSXClosingFragment' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingFragment.php', + 'Peast\\Syntax\\Node\\JSX\\JSXElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXElement.php', + 'Peast\\Syntax\\Node\\JSX\\JSXEmptyExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXEmptyExpression.php', + 'Peast\\Syntax\\Node\\JSX\\JSXExpressionContainer' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXExpressionContainer.php', + 'Peast\\Syntax\\Node\\JSX\\JSXFragment' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXFragment.php', + 'Peast\\Syntax\\Node\\JSX\\JSXIdentifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXIdentifier.php', + 'Peast\\Syntax\\Node\\JSX\\JSXMemberExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXMemberExpression.php', + 'Peast\\Syntax\\Node\\JSX\\JSXNamespacedName' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXNamespacedName.php', + 'Peast\\Syntax\\Node\\JSX\\JSXOpeningElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningElement.php', + 'Peast\\Syntax\\Node\\JSX\\JSXOpeningFragment' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningFragment.php', + 'Peast\\Syntax\\Node\\JSX\\JSXSpreadAttribute' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadAttribute.php', + 'Peast\\Syntax\\Node\\JSX\\JSXSpreadChild' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadChild.php', + 'Peast\\Syntax\\Node\\JSX\\JSXText' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXText.php', + 'Peast\\Syntax\\Node\\LabeledStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/LabeledStatement.php', + 'Peast\\Syntax\\Node\\Literal' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Literal.php', + 'Peast\\Syntax\\Node\\LogicalExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/LogicalExpression.php', + 'Peast\\Syntax\\Node\\MemberExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/MemberExpression.php', + 'Peast\\Syntax\\Node\\MetaProperty' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/MetaProperty.php', + 'Peast\\Syntax\\Node\\MethodDefinition' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/MethodDefinition.php', + 'Peast\\Syntax\\Node\\ModuleDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ModuleDeclaration.php', + 'Peast\\Syntax\\Node\\ModuleSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ModuleSpecifier.php', + 'Peast\\Syntax\\Node\\NewExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/NewExpression.php', + 'Peast\\Syntax\\Node\\Node' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Node.php', + 'Peast\\Syntax\\Node\\NullLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/NullLiteral.php', + 'Peast\\Syntax\\Node\\NumericLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/NumericLiteral.php', + 'Peast\\Syntax\\Node\\ObjectExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ObjectExpression.php', + 'Peast\\Syntax\\Node\\ObjectPattern' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ObjectPattern.php', + 'Peast\\Syntax\\Node\\ParenthesizedExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ParenthesizedExpression.php', + 'Peast\\Syntax\\Node\\Pattern' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Pattern.php', + 'Peast\\Syntax\\Node\\Program' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Program.php', + 'Peast\\Syntax\\Node\\Property' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Property.php', + 'Peast\\Syntax\\Node\\RegExpLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/RegExpLiteral.php', + 'Peast\\Syntax\\Node\\RestElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/RestElement.php', + 'Peast\\Syntax\\Node\\ReturnStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ReturnStatement.php', + 'Peast\\Syntax\\Node\\SequenceExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/SequenceExpression.php', + 'Peast\\Syntax\\Node\\SpreadElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/SpreadElement.php', + 'Peast\\Syntax\\Node\\Statement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Statement.php', + 'Peast\\Syntax\\Node\\StringLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/StringLiteral.php', + 'Peast\\Syntax\\Node\\Super' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Super.php', + 'Peast\\Syntax\\Node\\SwitchCase' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/SwitchCase.php', + 'Peast\\Syntax\\Node\\SwitchStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/SwitchStatement.php', + 'Peast\\Syntax\\Node\\TaggedTemplateExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/TaggedTemplateExpression.php', + 'Peast\\Syntax\\Node\\TemplateElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/TemplateElement.php', + 'Peast\\Syntax\\Node\\TemplateLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/TemplateLiteral.php', + 'Peast\\Syntax\\Node\\ThisExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ThisExpression.php', + 'Peast\\Syntax\\Node\\ThrowStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ThrowStatement.php', + 'Peast\\Syntax\\Node\\TryStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/TryStatement.php', + 'Peast\\Syntax\\Node\\UnaryExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/UnaryExpression.php', + 'Peast\\Syntax\\Node\\UpdateExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/UpdateExpression.php', + 'Peast\\Syntax\\Node\\VariableDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/VariableDeclaration.php', + 'Peast\\Syntax\\Node\\VariableDeclarator' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/VariableDeclarator.php', + 'Peast\\Syntax\\Node\\WhileStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/WhileStatement.php', + 'Peast\\Syntax\\Node\\WithStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/WithStatement.php', + 'Peast\\Syntax\\Node\\YieldExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/YieldExpression.php', + 'Peast\\Syntax\\Parser' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Parser.php', + 'Peast\\Syntax\\ParserAbstract' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ParserAbstract.php', + 'Peast\\Syntax\\Position' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Position.php', + 'Peast\\Syntax\\Scanner' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Scanner.php', + 'Peast\\Syntax\\SourceLocation' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/SourceLocation.php', + 'Peast\\Syntax\\Token' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Token.php', + 'Peast\\Syntax\\Utils' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Utils.php', + 'Peast\\Traverser' => $vendorDir . '/mck89/peast/lib/Peast/Traverser.php', + 'Peast\\test\\PeastTest' => $vendorDir . '/mck89/peast/test/Peast/PeastTest.php', + 'Peast\\test\\Syntax\\CommentsRegistryTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/CommentsRegistryTest.php', + 'Peast\\test\\Syntax\\ES2015\\ES2015Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2015/ES2015Test.php', + 'Peast\\test\\Syntax\\ES2016\\ES2016Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2016/ES2016Test.php', + 'Peast\\test\\Syntax\\ES2017\\ES2017Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2017/ES2017Test.php', + 'Peast\\test\\Syntax\\ES2018\\ES2018Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2018/ES2018Test.php', + 'Peast\\test\\Syntax\\ES2019\\ES2019Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2019/ES2019Test.php', + 'Peast\\test\\Syntax\\ES2020\\ES2020Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2020/ES2020Test.php', + 'Peast\\test\\Syntax\\Node\\BooleanLiteralTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/BooleanLiteralTest.php', + 'Peast\\test\\Syntax\\Node\\CommentTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/CommentTest.php', + 'Peast\\test\\Syntax\\Node\\NullLiteralTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/NullLiteralTest.php', + 'Peast\\test\\Syntax\\Node\\NumericLiteralTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/NumericLiteralTest.php', + 'Peast\\test\\Syntax\\Node\\StringLiteralTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/StringLiteralTest.php', + 'Peast\\test\\Syntax\\ScannerTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ScannerTest.php', + 'Peast\\test\\TestBase' => $vendorDir . '/mck89/peast/test/Peast/TestBase.php', + 'Peast\\test\\TestCaseBase' => $vendorDir . '/mck89/peast/test/Peast/TestCaseBase.php', + 'Peast\\test\\TestParser' => $vendorDir . '/mck89/peast/test/Peast/TestParser.php', + 'Peast\\test\\Traverser\\RendererTest' => $vendorDir . '/mck89/peast/test/Peast/RendererTest.php', + 'Peast\\test\\Traverser\\TraverserTest' => $vendorDir . '/mck89/peast/test/Peast/TraverserTest.php', + 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php', + 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php', + 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php', + 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php', + 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php', + 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php', + 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php', + 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php', + 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php', + 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php', + 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php', + 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php', + 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php', + 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php', + 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php', + 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php', + 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php', + 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php', + 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php', + 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php', + 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php', + 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php', + 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php', + 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php', + 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php', + 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php', + 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php', + 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php', + 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php', + 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php', + 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php', + 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php', + 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php', + 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php', + 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php', + 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php', + 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php', + 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php', + 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php', + 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php', + 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php', + 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php', + 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php', + 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php', + 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php', + 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php', + 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php', + 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php', + 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php', + 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AbstractVersionConstraint.php', + 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php', + 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AnyVersionConstraint.php', + 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/ExactVersionConstraint.php', + 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/exceptions/Exception.php', + 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php', + 'PharIo\\Version\\InvalidPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php', + 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidVersionException.php', + 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php', + 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php', + 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', + 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php', + 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php', + 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php', + 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/VersionConstraint.php', + 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php', + 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php', + 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php', + 'PhpOption\\LazyOption' => $vendorDir . '/phpoption/phpoption/src/PhpOption/LazyOption.php', + 'PhpOption\\None' => $vendorDir . '/phpoption/phpoption/src/PhpOption/None.php', + 'PhpOption\\Option' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Option.php', + 'PhpOption\\Some' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Some.php', + 'Plugin_Command' => $vendorDir . '/wp-cli/extension-command/src/Plugin_Command.php', + 'Plugin_Command_Namespace' => $vendorDir . '/wp-cli/checksum-command/src/Plugin_Command_Namespace.php', + 'Plugin_Language_Command' => $vendorDir . '/wp-cli/language-command/src/Plugin_Language_Command.php', + 'Post_Command' => $vendorDir . '/wp-cli/entity-command/src/Post_Command.php', + 'Post_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Post_Meta_Command.php', + 'Post_Term_Command' => $vendorDir . '/wp-cli/entity-command/src/Post_Term_Command.php', + 'Post_Type_Command' => $vendorDir . '/wp-cli/entity-command/src/Post_Type_Command.php', + 'Prophecy\\Argument' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument.php', + 'Prophecy\\Argument\\ArgumentsWildcard' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php', + 'Prophecy\\Argument\\Token\\AnyValueToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php', + 'Prophecy\\Argument\\Token\\AnyValuesToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php', + 'Prophecy\\Argument\\Token\\ApproximateValueToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php', + 'Prophecy\\Argument\\Token\\ArrayCountToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php', + 'Prophecy\\Argument\\Token\\ArrayEntryToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php', + 'Prophecy\\Argument\\Token\\ArrayEveryEntryToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php', + 'Prophecy\\Argument\\Token\\CallbackToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php', + 'Prophecy\\Argument\\Token\\ExactValueToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php', + 'Prophecy\\Argument\\Token\\IdenticalValueToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php', + 'Prophecy\\Argument\\Token\\LogicalAndToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php', + 'Prophecy\\Argument\\Token\\LogicalNotToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php', + 'Prophecy\\Argument\\Token\\ObjectStateToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php', + 'Prophecy\\Argument\\Token\\StringContainsToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php', + 'Prophecy\\Argument\\Token\\TokenInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php', + 'Prophecy\\Argument\\Token\\TypeToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php', + 'Prophecy\\Call\\Call' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Call/Call.php', + 'Prophecy\\Call\\CallCenter' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Call/CallCenter.php', + 'Prophecy\\Comparator\\ClosureComparator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php', + 'Prophecy\\Comparator\\Factory' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Comparator/Factory.php', + 'Prophecy\\Comparator\\ProphecyComparator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php', + 'Prophecy\\Doubler\\CachedDoubler' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php', + 'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php', + 'Prophecy\\Doubler\\ClassPatch\\DisableConstructorPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\HhvmExceptionPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\KeywordPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\MagicCallPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\ProphecySubjectPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\ReflectionClassNewInstancePatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php', + 'Prophecy\\Doubler\\ClassPatch\\SplFileInfoPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\ThrowablePatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php', + 'Prophecy\\Doubler\\ClassPatch\\TraversablePatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php', + 'Prophecy\\Doubler\\DoubleInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php', + 'Prophecy\\Doubler\\Doubler' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php', + 'Prophecy\\Doubler\\Generator\\ClassCodeGenerator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php', + 'Prophecy\\Doubler\\Generator\\ClassCreator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php', + 'Prophecy\\Doubler\\Generator\\ClassMirror' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php', + 'Prophecy\\Doubler\\Generator\\Node\\ArgumentNode' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php', + 'Prophecy\\Doubler\\Generator\\Node\\ClassNode' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php', + 'Prophecy\\Doubler\\Generator\\Node\\MethodNode' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php', + 'Prophecy\\Doubler\\Generator\\ReflectionInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php', + 'Prophecy\\Doubler\\Generator\\TypeHintReference' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php', + 'Prophecy\\Doubler\\LazyDouble' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php', + 'Prophecy\\Doubler\\NameGenerator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php', + 'Prophecy\\Exception\\Call\\UnexpectedCallException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php', + 'Prophecy\\Exception\\Doubler\\ClassCreatorException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php', + 'Prophecy\\Exception\\Doubler\\ClassMirrorException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php', + 'Prophecy\\Exception\\Doubler\\ClassNotFoundException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php', + 'Prophecy\\Exception\\Doubler\\DoubleException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php', + 'Prophecy\\Exception\\Doubler\\DoublerException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php', + 'Prophecy\\Exception\\Doubler\\InterfaceNotFoundException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php', + 'Prophecy\\Exception\\Doubler\\MethodNotExtendableException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php', + 'Prophecy\\Exception\\Doubler\\MethodNotFoundException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php', + 'Prophecy\\Exception\\Doubler\\ReturnByReferenceException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php', + 'Prophecy\\Exception\\Exception' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Exception.php', + 'Prophecy\\Exception\\InvalidArgumentException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php', + 'Prophecy\\Exception\\Prediction\\AggregateException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php', + 'Prophecy\\Exception\\Prediction\\FailedPredictionException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php', + 'Prophecy\\Exception\\Prediction\\NoCallsException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php', + 'Prophecy\\Exception\\Prediction\\PredictionException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php', + 'Prophecy\\Exception\\Prediction\\UnexpectedCallsCountException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php', + 'Prophecy\\Exception\\Prediction\\UnexpectedCallsException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php', + 'Prophecy\\Exception\\Prophecy\\MethodProphecyException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php', + 'Prophecy\\Exception\\Prophecy\\ObjectProphecyException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php', + 'Prophecy\\Exception\\Prophecy\\ProphecyException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php', + 'Prophecy\\PhpDocumentor\\ClassAndInterfaceTagRetriever' => $vendorDir . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php', + 'Prophecy\\PhpDocumentor\\ClassTagRetriever' => $vendorDir . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php', + 'Prophecy\\PhpDocumentor\\LegacyClassTagRetriever' => $vendorDir . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php', + 'Prophecy\\PhpDocumentor\\MethodTagRetrieverInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php', + 'Prophecy\\Prediction\\CallPrediction' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php', + 'Prophecy\\Prediction\\CallTimesPrediction' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php', + 'Prophecy\\Prediction\\CallbackPrediction' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php', + 'Prophecy\\Prediction\\NoCallsPrediction' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php', + 'Prophecy\\Prediction\\PredictionInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php', + 'Prophecy\\Promise\\CallbackPromise' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php', + 'Prophecy\\Promise\\PromiseInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php', + 'Prophecy\\Promise\\ReturnArgumentPromise' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php', + 'Prophecy\\Promise\\ReturnPromise' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php', + 'Prophecy\\Promise\\ThrowPromise' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php', + 'Prophecy\\Prophecy\\MethodProphecy' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php', + 'Prophecy\\Prophecy\\ObjectProphecy' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php', + 'Prophecy\\Prophecy\\ProphecyInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php', + 'Prophecy\\Prophecy\\ProphecySubjectInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php', + 'Prophecy\\Prophecy\\Revealer' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php', + 'Prophecy\\Prophecy\\RevealerInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php', + 'Prophecy\\Prophet' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophet.php', + 'Prophecy\\Util\\ExportUtil' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php', + 'Prophecy\\Util\\StringUtil' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Util/StringUtil.php', + 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', + 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', + 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', + 'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', + 'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', + 'Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', + 'Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', + 'Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', + 'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', + 'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', + 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php', + 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php', + 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php', + 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php', + 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php', + 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php', + 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php', + 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php', + 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', + 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', + 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php', + 'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php', + 'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php', + 'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php', + 'Requests' => $vendorDir . '/rmccue/requests/library/Requests.php', + 'Requests_Auth' => $vendorDir . '/rmccue/requests/library/Requests/Auth.php', + 'Requests_Auth_Basic' => $vendorDir . '/rmccue/requests/library/Requests/Auth/Basic.php', + 'Requests_Cookie' => $vendorDir . '/rmccue/requests/library/Requests/Cookie.php', + 'Requests_Cookie_Jar' => $vendorDir . '/rmccue/requests/library/Requests/Cookie/Jar.php', + 'Requests_Exception' => $vendorDir . '/rmccue/requests/library/Requests/Exception.php', + 'Requests_Exception_HTTP' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP.php', + 'Requests_Exception_HTTP_304' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/304.php', + 'Requests_Exception_HTTP_305' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/305.php', + 'Requests_Exception_HTTP_306' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/306.php', + 'Requests_Exception_HTTP_400' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/400.php', + 'Requests_Exception_HTTP_401' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/401.php', + 'Requests_Exception_HTTP_402' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/402.php', + 'Requests_Exception_HTTP_403' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/403.php', + 'Requests_Exception_HTTP_404' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/404.php', + 'Requests_Exception_HTTP_405' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/405.php', + 'Requests_Exception_HTTP_406' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/406.php', + 'Requests_Exception_HTTP_407' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/407.php', + 'Requests_Exception_HTTP_408' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/408.php', + 'Requests_Exception_HTTP_409' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/409.php', + 'Requests_Exception_HTTP_410' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/410.php', + 'Requests_Exception_HTTP_411' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/411.php', + 'Requests_Exception_HTTP_412' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/412.php', + 'Requests_Exception_HTTP_413' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/413.php', + 'Requests_Exception_HTTP_414' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/414.php', + 'Requests_Exception_HTTP_415' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/415.php', + 'Requests_Exception_HTTP_416' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/416.php', + 'Requests_Exception_HTTP_417' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/417.php', + 'Requests_Exception_HTTP_418' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/418.php', + 'Requests_Exception_HTTP_428' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/428.php', + 'Requests_Exception_HTTP_429' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/429.php', + 'Requests_Exception_HTTP_431' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/431.php', + 'Requests_Exception_HTTP_500' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/500.php', + 'Requests_Exception_HTTP_501' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/501.php', + 'Requests_Exception_HTTP_502' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/502.php', + 'Requests_Exception_HTTP_503' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/503.php', + 'Requests_Exception_HTTP_504' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/504.php', + 'Requests_Exception_HTTP_505' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/505.php', + 'Requests_Exception_HTTP_511' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/511.php', + 'Requests_Exception_HTTP_Unknown' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/Unknown.php', + 'Requests_Exception_Transport' => $vendorDir . '/rmccue/requests/library/Requests/Exception/Transport.php', + 'Requests_Exception_Transport_cURL' => $vendorDir . '/rmccue/requests/library/Requests/Exception/Transport/cURL.php', + 'Requests_Hooker' => $vendorDir . '/rmccue/requests/library/Requests/Hooker.php', + 'Requests_Hooks' => $vendorDir . '/rmccue/requests/library/Requests/Hooks.php', + 'Requests_IDNAEncoder' => $vendorDir . '/rmccue/requests/library/Requests/IDNAEncoder.php', + 'Requests_IPv6' => $vendorDir . '/rmccue/requests/library/Requests/IPv6.php', + 'Requests_IRI' => $vendorDir . '/rmccue/requests/library/Requests/IRI.php', + 'Requests_Proxy' => $vendorDir . '/rmccue/requests/library/Requests/Proxy.php', + 'Requests_Proxy_HTTP' => $vendorDir . '/rmccue/requests/library/Requests/Proxy/HTTP.php', + 'Requests_Response' => $vendorDir . '/rmccue/requests/library/Requests/Response.php', + 'Requests_Response_Headers' => $vendorDir . '/rmccue/requests/library/Requests/Response/Headers.php', + 'Requests_SSL' => $vendorDir . '/rmccue/requests/library/Requests/SSL.php', + 'Requests_Session' => $vendorDir . '/rmccue/requests/library/Requests/Session.php', + 'Requests_Transport' => $vendorDir . '/rmccue/requests/library/Requests/Transport.php', + 'Requests_Transport_cURL' => $vendorDir . '/rmccue/requests/library/Requests/Transport/cURL.php', + 'Requests_Transport_fsockopen' => $vendorDir . '/rmccue/requests/library/Requests/Transport/fsockopen.php', + 'Requests_Utility_CaseInsensitiveDictionary' => $vendorDir . '/rmccue/requests/library/Requests/Utility/CaseInsensitiveDictionary.php', + 'Requests_Utility_FilteredIterator' => $vendorDir . '/rmccue/requests/library/Requests/Utility/FilteredIterator.php', + 'Rewrite_Command' => $vendorDir . '/wp-cli/rewrite-command/src/Rewrite_Command.php', + 'Role_Command' => $vendorDir . '/wp-cli/role-command/src/Role_Command.php', + 'Scaffold_Command' => $vendorDir . '/wp-cli/scaffold-command/src/Scaffold_Command.php', + 'Search_Replace_Command' => $vendorDir . '/wp-cli/search-replace-command/src/Search_Replace_Command.php', + 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', + 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', + 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php', + 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php', + 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', + 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', + 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', + 'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php', + 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', + 'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php', + 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php', + 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', + 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', + 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', + 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', + 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', + 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', + 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', + 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', + 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', + 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', + 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', + 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', + 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', + 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php', + 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php', + 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', + 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', + 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', + 'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php', + 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', + 'SebastianBergmann\\FileIterator\\Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', + 'SebastianBergmann\\FileIterator\\Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', + 'SebastianBergmann\\FileIterator\\Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', + 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php', + 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', + 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php', + 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', + 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php', + 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php', + 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php', + 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php', + 'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php', + 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php', + 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php', + 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', + 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php', + 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php', + 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php', + 'SebastianBergmann\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/Exception.php', + 'SebastianBergmann\\Timer\\RuntimeException' => $vendorDir . '/phpunit/php-timer/src/RuntimeException.php', + 'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', + 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', + 'Seld\\JsonLint\\DuplicateKeyException' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php', + 'Seld\\JsonLint\\JsonParser' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/JsonParser.php', + 'Seld\\JsonLint\\Lexer' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/Lexer.php', + 'Seld\\JsonLint\\ParsingException' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/ParsingException.php', + 'Seld\\JsonLint\\Undefined' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/Undefined.php', + 'Seld\\PharUtils\\Linter' => $vendorDir . '/seld/phar-utils/src/Linter.php', + 'Seld\\PharUtils\\Timestamps' => $vendorDir . '/seld/phar-utils/src/Timestamps.php', + 'Server_Command' => $vendorDir . '/wp-cli/server-command/src/Server_Command.php', + 'Shell_Command' => $vendorDir . '/wp-cli/shell-command/src/Shell_Command.php', + 'Sidebar_Command' => $vendorDir . '/wp-cli/widget-command/src/Sidebar_Command.php', + 'Site_Command' => $vendorDir . '/wp-cli/entity-command/src/Site_Command.php', + 'Site_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Site_Meta_Command.php', + 'Site_Option_Command' => $vendorDir . '/wp-cli/entity-command/src/Site_Option_Command.php', + 'Site_Switch_Language_Command' => $vendorDir . '/wp-cli/language-command/src/Site_Switch_Language_Command.php', + 'Super_Admin_Command' => $vendorDir . '/wp-cli/super-admin-command/src/Super_Admin_Command.php', + 'Symfony\\Component\\BrowserKit\\AbstractBrowser' => $vendorDir . '/symfony/browser-kit/AbstractBrowser.php', + 'Symfony\\Component\\BrowserKit\\Client' => $vendorDir . '/symfony/browser-kit/Client.php', + 'Symfony\\Component\\BrowserKit\\Cookie' => $vendorDir . '/symfony/browser-kit/Cookie.php', + 'Symfony\\Component\\BrowserKit\\CookieJar' => $vendorDir . '/symfony/browser-kit/CookieJar.php', + 'Symfony\\Component\\BrowserKit\\Exception\\BadMethodCallException' => $vendorDir . '/symfony/browser-kit/Exception/BadMethodCallException.php', + 'Symfony\\Component\\BrowserKit\\History' => $vendorDir . '/symfony/browser-kit/History.php', + 'Symfony\\Component\\BrowserKit\\HttpBrowser' => $vendorDir . '/symfony/browser-kit/HttpBrowser.php', + 'Symfony\\Component\\BrowserKit\\Request' => $vendorDir . '/symfony/browser-kit/Request.php', + 'Symfony\\Component\\BrowserKit\\Response' => $vendorDir . '/symfony/browser-kit/Response.php', + 'Symfony\\Component\\BrowserKit\\Test\\Constraint\\BrowserCookieValueSame' => $vendorDir . '/symfony/browser-kit/Test/Constraint/BrowserCookieValueSame.php', + 'Symfony\\Component\\BrowserKit\\Test\\Constraint\\BrowserHasCookie' => $vendorDir . '/symfony/browser-kit/Test/Constraint/BrowserHasCookie.php', + 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', + 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php', + 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php', + 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php', + 'Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php', + 'Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php', + 'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php', + 'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php', + 'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php', + 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', + 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php', + 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php', + 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php', + 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php', + 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => $vendorDir . '/symfony/console/Event/ConsoleCommandEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => $vendorDir . '/symfony/console/Event/ConsoleErrorEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => $vendorDir . '/symfony/console/Event/ConsoleEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => $vendorDir . '/symfony/console/Event/ConsoleTerminateEvent.php', + 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php', + 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php', + 'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php', + 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php', + 'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php', + 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', + 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php', + 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php', + 'Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php', + 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php', + 'Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php', + 'Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php', + 'Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php', + 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php', + 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php', + 'Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php', + 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php', + 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php', + 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php', + 'Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php', + 'Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php', + 'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php', + 'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php', + 'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php', + 'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php', + 'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php', + 'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php', + 'Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php', + 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php', + 'Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php', + 'Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php', + 'Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php', + 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php', + 'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php', + 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php', + 'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php', + 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php', + 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php', + 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php', + 'Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php', + 'Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php', + 'Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php', + 'Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php', + 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php', + 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php', + 'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php', + 'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php', + 'Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php', + 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php', + 'Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php', + 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => $vendorDir . '/symfony/console/Tester/ApplicationTester.php', + 'Symfony\\Component\\Console\\Tester\\CommandTester' => $vendorDir . '/symfony/console/Tester/CommandTester.php', + 'Symfony\\Component\\Console\\Tester\\TesterTrait' => $vendorDir . '/symfony/console/Tester/TesterTrait.php', + 'Symfony\\Component\\CssSelector\\CssSelectorConverter' => $vendorDir . '/symfony/css-selector/CssSelectorConverter.php', + 'Symfony\\Component\\CssSelector\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/css-selector/Exception/ExceptionInterface.php', + 'Symfony\\Component\\CssSelector\\Exception\\ExpressionErrorException' => $vendorDir . '/symfony/css-selector/Exception/ExpressionErrorException.php', + 'Symfony\\Component\\CssSelector\\Exception\\InternalErrorException' => $vendorDir . '/symfony/css-selector/Exception/InternalErrorException.php', + 'Symfony\\Component\\CssSelector\\Exception\\ParseException' => $vendorDir . '/symfony/css-selector/Exception/ParseException.php', + 'Symfony\\Component\\CssSelector\\Exception\\SyntaxErrorException' => $vendorDir . '/symfony/css-selector/Exception/SyntaxErrorException.php', + 'Symfony\\Component\\CssSelector\\Node\\AbstractNode' => $vendorDir . '/symfony/css-selector/Node/AbstractNode.php', + 'Symfony\\Component\\CssSelector\\Node\\AttributeNode' => $vendorDir . '/symfony/css-selector/Node/AttributeNode.php', + 'Symfony\\Component\\CssSelector\\Node\\ClassNode' => $vendorDir . '/symfony/css-selector/Node/ClassNode.php', + 'Symfony\\Component\\CssSelector\\Node\\CombinedSelectorNode' => $vendorDir . '/symfony/css-selector/Node/CombinedSelectorNode.php', + 'Symfony\\Component\\CssSelector\\Node\\ElementNode' => $vendorDir . '/symfony/css-selector/Node/ElementNode.php', + 'Symfony\\Component\\CssSelector\\Node\\FunctionNode' => $vendorDir . '/symfony/css-selector/Node/FunctionNode.php', + 'Symfony\\Component\\CssSelector\\Node\\HashNode' => $vendorDir . '/symfony/css-selector/Node/HashNode.php', + 'Symfony\\Component\\CssSelector\\Node\\NegationNode' => $vendorDir . '/symfony/css-selector/Node/NegationNode.php', + 'Symfony\\Component\\CssSelector\\Node\\NodeInterface' => $vendorDir . '/symfony/css-selector/Node/NodeInterface.php', + 'Symfony\\Component\\CssSelector\\Node\\PseudoNode' => $vendorDir . '/symfony/css-selector/Node/PseudoNode.php', + 'Symfony\\Component\\CssSelector\\Node\\SelectorNode' => $vendorDir . '/symfony/css-selector/Node/SelectorNode.php', + 'Symfony\\Component\\CssSelector\\Node\\Specificity' => $vendorDir . '/symfony/css-selector/Node/Specificity.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\CommentHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/CommentHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HandlerInterface' => $vendorDir . '/symfony/css-selector/Parser/Handler/HandlerInterface.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HashHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/HashHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\IdentifierHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/IdentifierHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\NumberHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/NumberHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\StringHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/StringHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\WhitespaceHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/WhitespaceHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Parser' => $vendorDir . '/symfony/css-selector/Parser/Parser.php', + 'Symfony\\Component\\CssSelector\\Parser\\ParserInterface' => $vendorDir . '/symfony/css-selector/Parser/ParserInterface.php', + 'Symfony\\Component\\CssSelector\\Parser\\Reader' => $vendorDir . '/symfony/css-selector/Parser/Reader.php', + 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ClassParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/ClassParser.php', + 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ElementParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/ElementParser.php', + 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\EmptyStringParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php', + 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\HashParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/HashParser.php', + 'Symfony\\Component\\CssSelector\\Parser\\Token' => $vendorDir . '/symfony/css-selector/Parser/Token.php', + 'Symfony\\Component\\CssSelector\\Parser\\TokenStream' => $vendorDir . '/symfony/css-selector/Parser/TokenStream.php', + 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\Tokenizer' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/Tokenizer.php', + 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerEscaping' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php', + 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerPatterns' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AbstractExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/AbstractExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AttributeMatchingExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\CombinationExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/CombinationExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\ExtensionInterface' => $vendorDir . '/symfony/css-selector/XPath/Extension/ExtensionInterface.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\FunctionExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/FunctionExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\HtmlExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/HtmlExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\NodeExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/NodeExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\PseudoClassExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/PseudoClassExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Translator' => $vendorDir . '/symfony/css-selector/XPath/Translator.php', + 'Symfony\\Component\\CssSelector\\XPath\\TranslatorInterface' => $vendorDir . '/symfony/css-selector/XPath/TranslatorInterface.php', + 'Symfony\\Component\\CssSelector\\XPath\\XPathExpr' => $vendorDir . '/symfony/css-selector/XPath/XPathExpr.php', + 'Symfony\\Component\\DomCrawler\\AbstractUriElement' => $vendorDir . '/symfony/dom-crawler/AbstractUriElement.php', + 'Symfony\\Component\\DomCrawler\\Crawler' => $vendorDir . '/symfony/dom-crawler/Crawler.php', + 'Symfony\\Component\\DomCrawler\\Field\\ChoiceFormField' => $vendorDir . '/symfony/dom-crawler/Field/ChoiceFormField.php', + 'Symfony\\Component\\DomCrawler\\Field\\FileFormField' => $vendorDir . '/symfony/dom-crawler/Field/FileFormField.php', + 'Symfony\\Component\\DomCrawler\\Field\\FormField' => $vendorDir . '/symfony/dom-crawler/Field/FormField.php', + 'Symfony\\Component\\DomCrawler\\Field\\InputFormField' => $vendorDir . '/symfony/dom-crawler/Field/InputFormField.php', + 'Symfony\\Component\\DomCrawler\\Field\\TextareaFormField' => $vendorDir . '/symfony/dom-crawler/Field/TextareaFormField.php', + 'Symfony\\Component\\DomCrawler\\Form' => $vendorDir . '/symfony/dom-crawler/Form.php', + 'Symfony\\Component\\DomCrawler\\FormFieldRegistry' => $vendorDir . '/symfony/dom-crawler/FormFieldRegistry.php', + 'Symfony\\Component\\DomCrawler\\Image' => $vendorDir . '/symfony/dom-crawler/Image.php', + 'Symfony\\Component\\DomCrawler\\Link' => $vendorDir . '/symfony/dom-crawler/Link.php', + 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorAttributeValueSame' => $vendorDir . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorAttributeValueSame.php', + 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorExists' => $vendorDir . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorExists.php', + 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorTextContains' => $vendorDir . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorTextContains.php', + 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorTextSame' => $vendorDir . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorTextSame.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => $vendorDir . '/symfony/event-dispatcher/Debug/WrappedListener.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\ExtractingEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', + 'Symfony\\Component\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher/Event.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/EventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/EventDispatcherInterface.php', + 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php', + 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php', + 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\LegacyEventDispatcherProxy' => $vendorDir . '/symfony/event-dispatcher/LegacyEventDispatcherProxy.php', + 'Symfony\\Component\\EventDispatcher\\LegacyEventProxy' => $vendorDir . '/symfony/event-dispatcher/LegacyEventProxy.php', + 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php', + 'Symfony\\Component\\Filesystem\\LockHandler' => $vendorDir . '/symfony/filesystem/LockHandler.php', + 'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php', + 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php', + 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php', + 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php', + 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php', + 'Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php', + 'Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php', + 'Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php', + 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php', + 'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php', + 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php', + 'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php', + 'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php', + 'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php', + 'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php', + 'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php', + 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php', + 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php', + 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php', + 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php', + 'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php', + 'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php', + 'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php', + 'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => $vendorDir . '/symfony/translation/Catalogue/MergeOperation.php', + 'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => $vendorDir . '/symfony/translation/Catalogue/OperationInterface.php', + 'Symfony\\Component\\Translation\\Catalogue\\TargetOperation' => $vendorDir . '/symfony/translation/Catalogue/TargetOperation.php', + 'Symfony\\Component\\Translation\\Command\\XliffLintCommand' => $vendorDir . '/symfony/translation/Command/XliffLintCommand.php', + 'Symfony\\Component\\Translation\\DataCollectorTranslator' => $vendorDir . '/symfony/translation/DataCollectorTranslator.php', + 'Symfony\\Component\\Translation\\DataCollector\\TranslationDataCollector' => $vendorDir . '/symfony/translation/DataCollector/TranslationDataCollector.php', + 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationDumperPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslationDumperPass.php', + 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationExtractorPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslationExtractorPass.php', + 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslatorPass.php', + 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPathsPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslatorPathsPass.php', + 'Symfony\\Component\\Translation\\Dumper\\CsvFileDumper' => $vendorDir . '/symfony/translation/Dumper/CsvFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\DumperInterface' => $vendorDir . '/symfony/translation/Dumper/DumperInterface.php', + 'Symfony\\Component\\Translation\\Dumper\\FileDumper' => $vendorDir . '/symfony/translation/Dumper/FileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\IcuResFileDumper' => $vendorDir . '/symfony/translation/Dumper/IcuResFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\IniFileDumper' => $vendorDir . '/symfony/translation/Dumper/IniFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\JsonFileDumper' => $vendorDir . '/symfony/translation/Dumper/JsonFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\MoFileDumper' => $vendorDir . '/symfony/translation/Dumper/MoFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\PhpFileDumper' => $vendorDir . '/symfony/translation/Dumper/PhpFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\PoFileDumper' => $vendorDir . '/symfony/translation/Dumper/PoFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\QtFileDumper' => $vendorDir . '/symfony/translation/Dumper/QtFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\XliffFileDumper' => $vendorDir . '/symfony/translation/Dumper/XliffFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\YamlFileDumper' => $vendorDir . '/symfony/translation/Dumper/YamlFileDumper.php', + 'Symfony\\Component\\Translation\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/translation/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Translation\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/translation/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Translation\\Exception\\InvalidResourceException' => $vendorDir . '/symfony/translation/Exception/InvalidResourceException.php', + 'Symfony\\Component\\Translation\\Exception\\LogicException' => $vendorDir . '/symfony/translation/Exception/LogicException.php', + 'Symfony\\Component\\Translation\\Exception\\NotFoundResourceException' => $vendorDir . '/symfony/translation/Exception/NotFoundResourceException.php', + 'Symfony\\Component\\Translation\\Exception\\RuntimeException' => $vendorDir . '/symfony/translation/Exception/RuntimeException.php', + 'Symfony\\Component\\Translation\\Extractor\\AbstractFileExtractor' => $vendorDir . '/symfony/translation/Extractor/AbstractFileExtractor.php', + 'Symfony\\Component\\Translation\\Extractor\\ChainExtractor' => $vendorDir . '/symfony/translation/Extractor/ChainExtractor.php', + 'Symfony\\Component\\Translation\\Extractor\\ExtractorInterface' => $vendorDir . '/symfony/translation/Extractor/ExtractorInterface.php', + 'Symfony\\Component\\Translation\\Extractor\\PhpExtractor' => $vendorDir . '/symfony/translation/Extractor/PhpExtractor.php', + 'Symfony\\Component\\Translation\\Extractor\\PhpStringTokenParser' => $vendorDir . '/symfony/translation/Extractor/PhpStringTokenParser.php', + 'Symfony\\Component\\Translation\\Formatter\\IntlFormatter' => $vendorDir . '/symfony/translation/Formatter/IntlFormatter.php', + 'Symfony\\Component\\Translation\\Formatter\\IntlFormatterInterface' => $vendorDir . '/symfony/translation/Formatter/IntlFormatterInterface.php', + 'Symfony\\Component\\Translation\\Formatter\\MessageFormatter' => $vendorDir . '/symfony/translation/Formatter/MessageFormatter.php', + 'Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface' => $vendorDir . '/symfony/translation/Formatter/MessageFormatterInterface.php', + 'Symfony\\Component\\Translation\\IdentityTranslator' => $vendorDir . '/symfony/translation/IdentityTranslator.php', + 'Symfony\\Component\\Translation\\Loader\\ArrayLoader' => $vendorDir . '/symfony/translation/Loader/ArrayLoader.php', + 'Symfony\\Component\\Translation\\Loader\\CsvFileLoader' => $vendorDir . '/symfony/translation/Loader/CsvFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\FileLoader' => $vendorDir . '/symfony/translation/Loader/FileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\IcuDatFileLoader' => $vendorDir . '/symfony/translation/Loader/IcuDatFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\IcuResFileLoader' => $vendorDir . '/symfony/translation/Loader/IcuResFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\IniFileLoader' => $vendorDir . '/symfony/translation/Loader/IniFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\JsonFileLoader' => $vendorDir . '/symfony/translation/Loader/JsonFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\LoaderInterface' => $vendorDir . '/symfony/translation/Loader/LoaderInterface.php', + 'Symfony\\Component\\Translation\\Loader\\MoFileLoader' => $vendorDir . '/symfony/translation/Loader/MoFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\PhpFileLoader' => $vendorDir . '/symfony/translation/Loader/PhpFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\PoFileLoader' => $vendorDir . '/symfony/translation/Loader/PoFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\QtFileLoader' => $vendorDir . '/symfony/translation/Loader/QtFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\XliffFileLoader' => $vendorDir . '/symfony/translation/Loader/XliffFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\YamlFileLoader' => $vendorDir . '/symfony/translation/Loader/YamlFileLoader.php', + 'Symfony\\Component\\Translation\\LoggingTranslator' => $vendorDir . '/symfony/translation/LoggingTranslator.php', + 'Symfony\\Component\\Translation\\MessageCatalogue' => $vendorDir . '/symfony/translation/MessageCatalogue.php', + 'Symfony\\Component\\Translation\\MessageCatalogueInterface' => $vendorDir . '/symfony/translation/MessageCatalogueInterface.php', + 'Symfony\\Component\\Translation\\MetadataAwareInterface' => $vendorDir . '/symfony/translation/MetadataAwareInterface.php', + 'Symfony\\Component\\Translation\\Reader\\TranslationReader' => $vendorDir . '/symfony/translation/Reader/TranslationReader.php', + 'Symfony\\Component\\Translation\\Reader\\TranslationReaderInterface' => $vendorDir . '/symfony/translation/Reader/TranslationReaderInterface.php', + 'Symfony\\Component\\Translation\\Translator' => $vendorDir . '/symfony/translation/Translator.php', + 'Symfony\\Component\\Translation\\TranslatorBagInterface' => $vendorDir . '/symfony/translation/TranslatorBagInterface.php', + 'Symfony\\Component\\Translation\\Util\\ArrayConverter' => $vendorDir . '/symfony/translation/Util/ArrayConverter.php', + 'Symfony\\Component\\Translation\\Util\\XliffUtils' => $vendorDir . '/symfony/translation/Util/XliffUtils.php', + 'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => $vendorDir . '/symfony/translation/Writer/TranslationWriter.php', + 'Symfony\\Component\\Translation\\Writer\\TranslationWriterInterface' => $vendorDir . '/symfony/translation/Writer/TranslationWriterInterface.php', + 'Symfony\\Component\\Yaml\\Command\\LintCommand' => $vendorDir . '/symfony/yaml/Command/LintCommand.php', + 'Symfony\\Component\\Yaml\\Dumper' => $vendorDir . '/symfony/yaml/Dumper.php', + 'Symfony\\Component\\Yaml\\Escaper' => $vendorDir . '/symfony/yaml/Escaper.php', + 'Symfony\\Component\\Yaml\\Exception\\DumpException' => $vendorDir . '/symfony/yaml/Exception/DumpException.php', + 'Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/yaml/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Yaml\\Exception\\ParseException' => $vendorDir . '/symfony/yaml/Exception/ParseException.php', + 'Symfony\\Component\\Yaml\\Exception\\RuntimeException' => $vendorDir . '/symfony/yaml/Exception/RuntimeException.php', + 'Symfony\\Component\\Yaml\\Inline' => $vendorDir . '/symfony/yaml/Inline.php', + 'Symfony\\Component\\Yaml\\Parser' => $vendorDir . '/symfony/yaml/Parser.php', + 'Symfony\\Component\\Yaml\\Tag\\TaggedValue' => $vendorDir . '/symfony/yaml/Tag/TaggedValue.php', + 'Symfony\\Component\\Yaml\\Unescaper' => $vendorDir . '/symfony/yaml/Unescaper.php', + 'Symfony\\Component\\Yaml\\Yaml' => $vendorDir . '/symfony/yaml/Yaml.php', + 'Symfony\\Contracts\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher-contracts/Event.php', + 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', + 'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php', + 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php', + 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php', + 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php', + 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php', + 'Symfony\\Contracts\\Service\\Test\\ServiceLocatorTest' => $vendorDir . '/symfony/service-contracts/Test/ServiceLocatorTest.php', + 'Symfony\\Contracts\\Translation\\LocaleAwareInterface' => $vendorDir . '/symfony/translation-contracts/LocaleAwareInterface.php', + 'Symfony\\Contracts\\Translation\\Test\\TranslatorTest' => $vendorDir . '/symfony/translation-contracts/Test/TranslatorTest.php', + 'Symfony\\Contracts\\Translation\\TranslatorInterface' => $vendorDir . '/symfony/translation-contracts/TranslatorInterface.php', + 'Symfony\\Contracts\\Translation\\TranslatorTrait' => $vendorDir . '/symfony/translation-contracts/TranslatorTrait.php', + 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', + 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', + 'Symfony\\Polyfill\\Php73\\Php73' => $vendorDir . '/symfony/polyfill-php73/Php73.php', + 'Taxonomy_Command' => $vendorDir . '/wp-cli/entity-command/src/Taxonomy_Command.php', + 'Term_Command' => $vendorDir . '/wp-cli/entity-command/src/Term_Command.php', + 'Term_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Term_Meta_Command.php', + 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', + 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php', + 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php', + 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php', + 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php', + 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php', + 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php', + 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php', + 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php', + 'Theme_Command' => $vendorDir . '/wp-cli/extension-command/src/Theme_Command.php', + 'Theme_Language_Command' => $vendorDir . '/wp-cli/language-command/src/Theme_Language_Command.php', + 'Theme_Mod_Command' => $vendorDir . '/wp-cli/extension-command/src/Theme_Mod_Command.php', + 'Transient_Command' => $vendorDir . '/wp-cli/cache-command/src/Transient_Command.php', + 'User_Command' => $vendorDir . '/wp-cli/entity-command/src/User_Command.php', + 'User_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/User_Meta_Command.php', + 'User_Session_Command' => $vendorDir . '/wp-cli/entity-command/src/User_Session_Command.php', + 'User_Term_Command' => $vendorDir . '/wp-cli/entity-command/src/User_Term_Command.php', 'WPGraphQL\\JWT_Authentication\\Auth' => $baseDir . '/src/Auth.php', 'WPGraphQL\\JWT_Authentication\\Login' => $baseDir . '/src/Login.php', 'WPGraphQL\\JWT_Authentication\\ManageTokens' => $baseDir . '/src/ManageTokens.php', 'WPGraphQL\\JWT_Authentication\\RefreshToken' => $baseDir . '/src/RefreshToken.php', + 'WP_CLI' => $vendorDir . '/wp-cli/wp-cli/php/class-wp-cli.php', + 'WP_CLI\\Autoloader' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Autoloader.php', + 'WP_CLI\\Bootstrap\\AutoloaderStep' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/AutoloaderStep.php', + 'WP_CLI\\Bootstrap\\BootstrapState' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapState.php', + 'WP_CLI\\Bootstrap\\BootstrapStep' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapStep.php', + 'WP_CLI\\Bootstrap\\ConfigureRunner' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/ConfigureRunner.php', + 'WP_CLI\\Bootstrap\\DeclareAbstractBaseCommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareAbstractBaseCommand.php', + 'WP_CLI\\Bootstrap\\DeclareMainClass' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareMainClass.php', + 'WP_CLI\\Bootstrap\\DefineProtectedCommands' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DefineProtectedCommands.php', + 'WP_CLI\\Bootstrap\\IncludeFallbackAutoloader' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFallbackAutoloader.php', + 'WP_CLI\\Bootstrap\\IncludeFrameworkAutoloader' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFrameworkAutoloader.php', + 'WP_CLI\\Bootstrap\\IncludePackageAutoloader' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludePackageAutoloader.php', + 'WP_CLI\\Bootstrap\\InitializeColorization' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeColorization.php', + 'WP_CLI\\Bootstrap\\InitializeLogger' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeLogger.php', + 'WP_CLI\\Bootstrap\\LaunchRunner' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php', + 'WP_CLI\\Bootstrap\\LoadDispatcher' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadDispatcher.php', + 'WP_CLI\\Bootstrap\\LoadRequiredCommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadRequiredCommand.php', + 'WP_CLI\\Bootstrap\\LoadUtilityFunctions' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadUtilityFunctions.php', + 'WP_CLI\\Bootstrap\\RegisterDeferredCommands' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterDeferredCommands.php', + 'WP_CLI\\Bootstrap\\RegisterFrameworkCommands' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterFrameworkCommands.php', + 'WP_CLI\\Bootstrap\\RunnerInstance' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RunnerInstance.php', + 'WP_CLI\\CommandWithDBObject' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/CommandWithDBObject.php', + 'WP_CLI\\CommandWithMeta' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/CommandWithMeta.php', + 'WP_CLI\\CommandWithTerms' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/CommandWithTerms.php', + 'WP_CLI\\CommandWithTranslation' => $vendorDir . '/wp-cli/language-command/src/WP_CLI/CommandWithTranslation.php', + 'WP_CLI\\CommandWithUpgrade' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/CommandWithUpgrade.php', + 'WP_CLI\\Compat\\FeedbackMethodTrait' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Compat/FeedbackMethodTrait.php', + 'WP_CLI\\Compat\\Min_PHP_5_4\\FeedbackMethodTrait' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_4/FeedbackMethodTrait.php', + 'WP_CLI\\Compat\\Min_PHP_5_6\\FeedbackMethodTrait' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_6/FeedbackMethodTrait.php', + 'WP_CLI\\Completions' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Completions.php', + 'WP_CLI\\ComposerIO' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/ComposerIO.php', + 'WP_CLI\\Configurator' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Configurator.php', + 'WP_CLI\\Core\\CoreUpgrader' => $vendorDir . '/wp-cli/core-command/src/WP_CLI/Core/CoreUpgrader.php', + 'WP_CLI\\Core\\NonDestructiveCoreUpgrader' => $vendorDir . '/wp-cli/core-command/src/WP_CLI/Core/NonDestructiveCoreUpgrader.php', + 'WP_CLI\\DestructivePluginUpgrader' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/DestructivePluginUpgrader.php', + 'WP_CLI\\DestructiveThemeUpgrader' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/DestructiveThemeUpgrader.php', + 'WP_CLI\\Dispatcher\\CommandAddition' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandAddition.php', + 'WP_CLI\\Dispatcher\\CommandFactory' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php', + 'WP_CLI\\Dispatcher\\CommandNamespace' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandNamespace.php', + 'WP_CLI\\Dispatcher\\CompositeCommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CompositeCommand.php', + 'WP_CLI\\Dispatcher\\RootCommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/RootCommand.php', + 'WP_CLI\\Dispatcher\\Subcommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.php', + 'WP_CLI\\DocParser' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/DocParser.php', + 'WP_CLI\\Embeds\\Cache_Command' => $vendorDir . '/wp-cli/embed-command/src/Cache_Command.php', + 'WP_CLI\\Embeds\\Embeds_Namespace' => $vendorDir . '/wp-cli/embed-command/src/Embeds_Namespace.php', + 'WP_CLI\\Embeds\\Fetch_Command' => $vendorDir . '/wp-cli/embed-command/src/Fetch_Command.php', + 'WP_CLI\\Embeds\\Handler_Command' => $vendorDir . '/wp-cli/embed-command/src/Handler_Command.php', + 'WP_CLI\\Embeds\\Provider_Command' => $vendorDir . '/wp-cli/embed-command/src/Provider_Command.php', + 'WP_CLI\\Embeds\\oEmbed' => $vendorDir . '/wp-cli/embed-command/src/oEmbed.php', + 'WP_CLI\\Entity\\NonExistentKeyException' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Entity/NonExistentKeyException.php', + 'WP_CLI\\Entity\\RecursiveDataStructureTraverser' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Entity/RecursiveDataStructureTraverser.php', + 'WP_CLI\\Entity\\Utils' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Entity/Utils.php', + 'WP_CLI\\ExitException' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/ExitException.php', + 'WP_CLI\\Extractor' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Extractor.php', + 'WP_CLI\\Fetchers\\Base' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Fetchers/Base.php', + 'WP_CLI\\Fetchers\\Comment' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Comment.php', + 'WP_CLI\\Fetchers\\Plugin' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/Fetchers/Plugin.php', + 'WP_CLI\\Fetchers\\Post' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Post.php', + 'WP_CLI\\Fetchers\\Site' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Site.php', + 'WP_CLI\\Fetchers\\Theme' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/Fetchers/Theme.php', + 'WP_CLI\\Fetchers\\UnfilteredPlugin' => $vendorDir . '/wp-cli/checksum-command/src/WP_CLI/Fetchers/UnfilteredPlugin.php', + 'WP_CLI\\Fetchers\\User' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Fetchers/User.php', + 'WP_CLI\\FileCache' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/FileCache.php', + 'WP_CLI\\Formatter' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Formatter.php', + 'WP_CLI\\I18n\\CommandNamespace' => $vendorDir . '/wp-cli/i18n-command/src/CommandNamespace.php', + 'WP_CLI\\I18n\\IterableCodeExtractor' => $vendorDir . '/wp-cli/i18n-command/src/IterableCodeExtractor.php', + 'WP_CLI\\I18n\\JedGenerator' => $vendorDir . '/wp-cli/i18n-command/src/JedGenerator.php', + 'WP_CLI\\I18n\\JsCodeExtractor' => $vendorDir . '/wp-cli/i18n-command/src/JsCodeExtractor.php', + 'WP_CLI\\I18n\\JsFunctionsScanner' => $vendorDir . '/wp-cli/i18n-command/src/JsFunctionsScanner.php', + 'WP_CLI\\I18n\\MakeJsonCommand' => $vendorDir . '/wp-cli/i18n-command/src/MakeJsonCommand.php', + 'WP_CLI\\I18n\\MakePotCommand' => $vendorDir . '/wp-cli/i18n-command/src/MakePotCommand.php', + 'WP_CLI\\I18n\\MapCodeExtractor' => $vendorDir . '/wp-cli/i18n-command/src/MapCodeExtractor.php', + 'WP_CLI\\I18n\\PhpCodeExtractor' => $vendorDir . '/wp-cli/i18n-command/src/PhpCodeExtractor.php', + 'WP_CLI\\I18n\\PhpFunctionsScanner' => $vendorDir . '/wp-cli/i18n-command/src/PhpFunctionsScanner.php', + 'WP_CLI\\I18n\\PotGenerator' => $vendorDir . '/wp-cli/i18n-command/src/PotGenerator.php', + 'WP_CLI\\Inflector' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Inflector.php', + 'WP_CLI\\Iterators\\CSV' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/CSV.php', + 'WP_CLI\\Iterators\\Exception' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Exception.php', + 'WP_CLI\\Iterators\\Query' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Query.php', + 'WP_CLI\\Iterators\\Table' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Table.php', + 'WP_CLI\\Iterators\\Transform' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Transform.php', + 'WP_CLI\\JsonManipulator' => $vendorDir . '/wp-cli/package-command/src/WP_CLI/JsonManipulator.php', + 'WP_CLI\\LanguagePackUpgrader' => $vendorDir . '/wp-cli/language-command/src/WP_CLI/LanguagePackUpgrader.php', + 'WP_CLI\\Loggers\\Base' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Base.php', + 'WP_CLI\\Loggers\\Execution' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Execution.php', + 'WP_CLI\\Loggers\\Quiet' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Quiet.php', + 'WP_CLI\\Loggers\\Regular' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Regular.php', + 'WP_CLI\\MaintenanceMode\\MaintenanceModeCommand' => $vendorDir . '/wp-cli/maintenance-mode-command/src/MaintenanceModeCommand.php', + 'WP_CLI\\NoOp' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/NoOp.php', + 'WP_CLI\\PackageManagerEventSubscriber' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/PackageManagerEventSubscriber.php', + 'WP_CLI\\Process' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Process.php', + 'WP_CLI\\ProcessRun' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/ProcessRun.php', + 'WP_CLI\\Runner' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Runner.php', + 'WP_CLI\\SearchReplacer' => $vendorDir . '/wp-cli/search-replace-command/src/WP_CLI/SearchReplacer.php', + 'WP_CLI\\Shell\\REPL' => $vendorDir . '/wp-cli/shell-command/src/WP_CLI/Shell/REPL.php', + 'WP_CLI\\SynopsisParser' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/SynopsisParser.php', + 'WP_CLI\\SynopsisValidator' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/SynopsisValidator.php', + 'WP_CLI\\UpgraderSkin' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/UpgraderSkin.php', + 'WP_CLI\\WpHttpCacheManager' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/WpHttpCacheManager.php', + 'WP_CLI_Command' => $vendorDir . '/wp-cli/wp-cli/php/class-wp-cli-command.php', + 'WP_Export_Base_Writer' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Base_Writer.php', + 'WP_Export_Exception' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Exception.php', + 'WP_Export_File_Writer' => $vendorDir . '/wp-cli/export-command/src/WP_Export_File_Writer.php', + 'WP_Export_Oxymel' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Oxymel.php', + 'WP_Export_Query' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Query.php', + 'WP_Export_Returner' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Returner.php', + 'WP_Export_Split_Files_Writer' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Split_Files_Writer.php', + 'WP_Export_Term_Exception' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Term_Exception.php', + 'WP_Export_WXR_Formatter' => $vendorDir . '/wp-cli/export-command/src/WP_Export_WXR_Formatter.php', + 'WP_Export_XML_Over_HTTP' => $vendorDir . '/wp-cli/export-command/src/WP_Export_XML_Over_HTTP.php', + 'WP_Iterator_Exception' => $vendorDir . '/wp-cli/export-command/src/WP_Iterator_Exception.php', + 'WP_Map_Iterator' => $vendorDir . '/wp-cli/export-command/src/WP_Map_Iterator.php', + 'WP_Post_IDs_Iterator' => $vendorDir . '/wp-cli/export-command/src/WP_Post_IDs_Iterator.php', + 'Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php', + 'Widget_Command' => $vendorDir . '/wp-cli/widget-command/src/Widget_Command.php', + 'cli\\Arguments' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Arguments.php', + 'cli\\Colors' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Colors.php', + 'cli\\Memoize' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Memoize.php', + 'cli\\Notify' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Notify.php', + 'cli\\Progress' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Progress.php', + 'cli\\Shell' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Shell.php', + 'cli\\Streams' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Streams.php', + 'cli\\Table' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Table.php', + 'cli\\Tree' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Tree.php', + 'cli\\arguments\\Argument' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/arguments/Argument.php', + 'cli\\arguments\\HelpScreen' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/arguments/HelpScreen.php', + 'cli\\arguments\\InvalidArguments' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/arguments/InvalidArguments.php', + 'cli\\arguments\\Lexer' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/arguments/Lexer.php', + 'cli\\notify\\Dots' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/notify/Dots.php', + 'cli\\notify\\Spinner' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/notify/Spinner.php', + 'cli\\progress\\Bar' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/progress/Bar.php', + 'cli\\table\\Ascii' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/table/Ascii.php', + 'cli\\table\\Renderer' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/table/Renderer.php', + 'cli\\table\\Tabular' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/table/Tabular.php', + 'cli\\tree\\Ascii' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/tree/Ascii.php', + 'cli\\tree\\Markdown' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/tree/Markdown.php', + 'cli\\tree\\Renderer' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/tree/Renderer.php', + 'cweagans\\Composer\\PatchEvent' => $vendorDir . '/cweagans/composer-patches/src/PatchEvent.php', + 'cweagans\\Composer\\PatchEvents' => $vendorDir . '/cweagans/composer-patches/src/PatchEvents.php', + 'cweagans\\Composer\\Patches' => $vendorDir . '/cweagans/composer-patches/src/Patches.php', + 'phpDocumentor\\Reflection\\DocBlock' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock.php', + 'phpDocumentor\\Reflection\\DocBlockFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlockFactory.php', + 'phpDocumentor\\Reflection\\DocBlockFactoryInterface' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php', + 'phpDocumentor\\Reflection\\DocBlock\\Description' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Description.php', + 'phpDocumentor\\Reflection\\DocBlock\\DescriptionFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php', + 'phpDocumentor\\Reflection\\DocBlock\\ExampleFinder' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php', + 'phpDocumentor\\Reflection\\DocBlock\\Serializer' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php', + 'phpDocumentor\\Reflection\\DocBlock\\StandardTagFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php', + 'phpDocumentor\\Reflection\\DocBlock\\TagFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Author' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\BaseTag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Covers' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Deprecated' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Example' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Factory\\StaticMethod' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\AlignFormatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\PassthroughFormatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Generic' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\InvalidTag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Link' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Method' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Param' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Property' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyRead' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyWrite' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Fqsen' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Reference' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Url' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Return_' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\See' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Since' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Source' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\TagWithType' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Throws' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Uses' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Var_' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Version' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php', + 'phpDocumentor\\Reflection\\Element' => $vendorDir . '/phpdocumentor/reflection-common/src/Element.php', + 'phpDocumentor\\Reflection\\File' => $vendorDir . '/phpdocumentor/reflection-common/src/File.php', + 'phpDocumentor\\Reflection\\Fqsen' => $vendorDir . '/phpdocumentor/reflection-common/src/Fqsen.php', + 'phpDocumentor\\Reflection\\FqsenResolver' => $vendorDir . '/phpdocumentor/type-resolver/src/FqsenResolver.php', + 'phpDocumentor\\Reflection\\Location' => $vendorDir . '/phpdocumentor/reflection-common/src/Location.php', + 'phpDocumentor\\Reflection\\Project' => $vendorDir . '/phpdocumentor/reflection-common/src/Project.php', + 'phpDocumentor\\Reflection\\ProjectFactory' => $vendorDir . '/phpdocumentor/reflection-common/src/ProjectFactory.php', + 'phpDocumentor\\Reflection\\Type' => $vendorDir . '/phpdocumentor/type-resolver/src/Type.php', + 'phpDocumentor\\Reflection\\TypeResolver' => $vendorDir . '/phpdocumentor/type-resolver/src/TypeResolver.php', + 'phpDocumentor\\Reflection\\Types\\AbstractList' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/AbstractList.php', + 'phpDocumentor\\Reflection\\Types\\Array_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Array_.php', + 'phpDocumentor\\Reflection\\Types\\Boolean' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Boolean.php', + 'phpDocumentor\\Reflection\\Types\\Callable_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Callable_.php', + 'phpDocumentor\\Reflection\\Types\\ClassString' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/ClassString.php', + 'phpDocumentor\\Reflection\\Types\\Collection' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Collection.php', + 'phpDocumentor\\Reflection\\Types\\Compound' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Compound.php', + 'phpDocumentor\\Reflection\\Types\\Context' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Context.php', + 'phpDocumentor\\Reflection\\Types\\ContextFactory' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/ContextFactory.php', + 'phpDocumentor\\Reflection\\Types\\Float_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Float_.php', + 'phpDocumentor\\Reflection\\Types\\Integer' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Integer.php', + 'phpDocumentor\\Reflection\\Types\\Iterable_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Iterable_.php', + 'phpDocumentor\\Reflection\\Types\\Mixed_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Mixed_.php', + 'phpDocumentor\\Reflection\\Types\\Null_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Null_.php', + 'phpDocumentor\\Reflection\\Types\\Nullable' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Nullable.php', + 'phpDocumentor\\Reflection\\Types\\Object_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Object_.php', + 'phpDocumentor\\Reflection\\Types\\Parent_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Parent_.php', + 'phpDocumentor\\Reflection\\Types\\Resource_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Resource_.php', + 'phpDocumentor\\Reflection\\Types\\Scalar' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Scalar.php', + 'phpDocumentor\\Reflection\\Types\\Self_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Self_.php', + 'phpDocumentor\\Reflection\\Types\\Static_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Static_.php', + 'phpDocumentor\\Reflection\\Types\\String_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/String_.php', + 'phpDocumentor\\Reflection\\Types\\This' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/This.php', + 'phpDocumentor\\Reflection\\Types\\Void_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Void_.php', + 'tad\\WPBrowser\\Adapters\\WP' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Adapters/WP.php', + 'tad\\WPBrowser\\Connector\\WordPress' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Connector/WordPress.php', + 'tad\\WPBrowser\\Documentation\\TableGenerator' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Documentation/TableGenerator.php', + 'tad\\WPBrowser\\Environment\\Constants' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/Constants.php', + 'tad\\WPBrowser\\Environment\\Executor' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/Executor.php', + 'tad\\WPBrowser\\Environment\\System' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/System.php', + 'tad\\WPBrowser\\Extension\\Copier' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Extension/Copier.php', + 'tad\\WPBrowser\\Extension\\Symlinker' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Extension/Symlinker.php', + 'tad\\WPBrowser\\Filesystem\\FileReplacers\\AbstractFileReplacer' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/AbstractFileReplacer.php', + 'tad\\WPBrowser\\Filesystem\\FileReplacers\\HtaccesReplacer' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/HtaccesReplacer.php', + 'tad\\WPBrowser\\Filesystem\\FileReplacers\\WPConfigReplacer' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/WPConfigReplacer.php', + 'tad\\WPBrowser\\Filesystem\\Filesystem' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/Filesystem.php', + 'tad\\WPBrowser\\Filesystem\\Utils' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/Utils.php', + 'tad\\WPBrowser\\Generators\\Blog' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Blog.php', + 'tad\\WPBrowser\\Generators\\Comment' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Comment.php', + 'tad\\WPBrowser\\Generators\\Date' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Date.php', + 'tad\\WPBrowser\\Generators\\Links' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Links.php', + 'tad\\WPBrowser\\Generators\\Post' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Post.php', + 'tad\\WPBrowser\\Generators\\RedirectingWPConfig' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/RedirectingWPConfig.php', + 'tad\\WPBrowser\\Generators\\SubdomainHtaccess' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/SubdomainHtaccess.php', + 'tad\\WPBrowser\\Generators\\SubfolderHtaccess' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/SubfolderHtaccess.php', + 'tad\\WPBrowser\\Generators\\Tables' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Tables.php', + 'tad\\WPBrowser\\Generators\\TemplateProviderInterface' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/TemplateProviderInterface.php', + 'tad\\WPBrowser\\Generators\\User' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/User.php', + 'tad\\WPBrowser\\Generators\\User\\Roles' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/User/Roles.php', + 'tad\\WPBrowser\\Generators\\WpPassword' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/WpPassword.php', + 'tad\\WPBrowser\\Iterators\\Filters\\ActionsQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/ActionsQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\ClassMethodQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/ClassMethodQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\FactoryQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FactoryQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\FiltersQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FiltersQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\FunctionQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FunctionQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\MainStatementQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/MainStatementQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\QueriesCallerBasedFilterIterator' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/QueriesCallerBasedFilterIterator.php', + 'tad\\WPBrowser\\Iterators\\Filters\\QueriesCallerBasedKeepingFilterIterator' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/QueriesCallerBasedKeepingFilterIterator.php', + 'tad\\WPBrowser\\Iterators\\Filters\\SetupTearDownQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/SetupTearDownQueriesFilter.php', + 'tad\\WPBrowser\\Module\\Support\\DbDump' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/Support/DbDump.php', + 'tad\\WPBrowser\\Module\\Support\\UriToIndexMapper' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/Support/UriToIndexMapper.php', + 'tad\\WPBrowser\\Module\\WPLoader\\FactoryStore' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/FactoryStore.php', + 'tad\\WPBrowser\\Module\\WPLoader\\Filters' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/Filters.php', + 'tad\\WPBrowser\\Module\\WPLoader\\FiltersGroup' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/FiltersGroup.php', + 'tad\\WPBrowser\\Services\\Db\\MySQLDumpFactory' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpFactory.php', + 'tad\\WPBrowser\\Services\\Db\\MySQLDumpFactoryInterface' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpFactoryInterface.php', + 'tad\\WPBrowser\\Services\\Db\\MySQLDumpInterface' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpInterface.php', + 'tad\\WPBrowser\\Services\\WP\\Bootstrapper' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/WP/Bootstrapper.php', + 'tad\\WPBrowser\\Template\\Data' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Template/Data.php', + 'voku\\helper\\ASCII' => $vendorDir . '/voku/portable-ascii/src/voku/helper/ASCII.php', ); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php new file mode 100644 index 0000000..363da39 --- /dev/null +++ b/vendor/composer/autoload_files.php @@ -0,0 +1,47 @@ + $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', + '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', + 'ba366f96f4fddbdef61ad7a862b44f61' => $vendorDir . '/wp-cli/package-command/package-command.php', + '3937806105cc8e221b8fa8db5b70d2f2' => $vendorDir . '/wp-cli/mustangostang-spyc/includes/functions.php', + 'be01b9b16925dcb22165c40b46681ac6' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/cli.php', + '8a0ad02df6a5087f2c380f8fd52db273' => $vendorDir . '/wp-cli/cache-command/cache-command.php', + 'f3f0199a3ecd9f501d0a3b361bd2f61c' => $vendorDir . '/wp-cli/entity-command/entity-command.php', + '3f201033d5aceb2293314273be88f7c6' => $vendorDir . '/wp-cli/extension-command/extension-command.php', + 'c65f753375faee349b7adc48c2ee7cc2' => $vendorDir . '/wp-cli/db-command/db-command.php', + '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', + 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', + 'd979c11fe80ba96ae3037b43429fe546' => $vendorDir . '/wp-cli/scaffold-command/scaffold-command.php', + '5c6ec5cff8f9d625772c8ed147f6b894' => $vendorDir . '/wp-cli/export-command/export-command.php', + 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', + 'b66d29757fcb2fb7a9608d068e3716b0' => $vendorDir . '/wp-cli/checksum-command/checksum-command.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', + '72579e7bd17821bb1321b87411366eae' => $vendorDir . '/illuminate/support/helpers.php', + '30cbb6e4122dc988e494c6b9c0438233' => $vendorDir . '/wp-cli/import-command/import-command.php', + '5e099d3cac677dd2bec1003ea7707745' => $vendorDir . '/wp-cli/media-command/media-command.php', + 'ac949ce40a981819ba132473518a9a31' => $vendorDir . '/wp-cli/wp-config-transformer/src/WPConfigTransformer.php', + '5deaf6ce9c8bbdfb65104c7e938d5875' => $vendorDir . '/wp-cli/config-command/config-command.php', + '68c39b88215b6cf7a0da164166670ef9' => $vendorDir . '/wp-cli/core-command/core-command.php', + '7654e00bf0e632580764400bd8293a9c' => $vendorDir . '/wp-cli/cron-command/cron-command.php', + '021d3a13471556f0b57038d679f7f8ea' => $vendorDir . '/wp-cli/embed-command/embed-command.php', + 'f958dca3f412fd7975da1700912a9321' => $vendorDir . '/wp-cli/eval-command/eval-command.php', + 'ffb465a494c3101218c4417180c2c9a2' => $vendorDir . '/wp-cli/i18n-command/i18n-command.php', + 'ace0d205db7f4135ec32132a0076d555' => $vendorDir . '/wp-cli/language-command/language-command.php', + '1c88c1eff05217a8cac80c64c9ac2080' => $vendorDir . '/wp-cli/maintenance-mode-command/maintenance-mode-command.php', + 'f399c1c8d0c787d5c94c09884cdd9762' => $vendorDir . '/wp-cli/rewrite-command/rewrite-command.php', + '080fadd667195d055c5a23386f270261' => $vendorDir . '/wp-cli/role-command/role-command.php', + '8ecb13f8bbc22b1b34d12b14ec01077a' => $vendorDir . '/wp-cli/search-replace-command/search-replace-command.php', + '9f04dd0aa5d67ec75a75c88c345a079e' => $vendorDir . '/wp-cli/server-command/server-command.php', + '129d58fa8151374aceb8571bcaa97504' => $vendorDir . '/wp-cli/shell-command/shell-command.php', + '8519779bbb65eeb842af2f629ce7b6f8' => $vendorDir . '/wp-cli/super-admin-command/super-admin-command.php', + '1f05372afcc7d0c51a305cef1d56dd01' => $vendorDir . '/wp-cli/widget-command/widget-command.php', + '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', + 'e2b8090921f5e293ca4eb0c107749811' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/functions.php', +); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index b7fc012..423a2d5 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -6,4 +6,13 @@ $baseDir = dirname($vendorDir); return array( + 'cli' => array($vendorDir . '/wp-cli/php-cli-tools/lib'), + 'WP_CLI' => array($vendorDir . '/wp-cli/wp-cli/php'), + 'Requests' => array($vendorDir . '/rmccue/requests/library'), + 'Oxymel' => array($vendorDir . '/nb/oxymel'), + 'Mustache' => array($vendorDir . '/mustache/mustache/src'), + 'Hautelook' => array($vendorDir . '/hautelook/phpass/src'), + 'Handlebars' => array($vendorDir . '/xamin/handlebars.php/src'), + 'Behat\\Gherkin' => array($vendorDir . '/behat/gherkin/src'), + 'BaconStringUtils' => array($vendorDir . '/bacon/bacon-string-utils/src'), ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 46c149b..f4e9dc4 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,6 +6,68 @@ $baseDir = dirname($vendorDir); return array( + 'voku\\tests\\' => array($vendorDir . '/voku/portable-ascii/tests'), + 'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku'), + 'tad\\' => array($vendorDir . '/lucatume/wp-browser/src/tad', $vendorDir . '/lucatume/wp-browser-commons/src/tad'), + 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'), + 'cweagans\\Composer\\' => array($vendorDir . '/cweagans/composer-patches/src'), + 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), + 'WP_CLI\\MaintenanceMode\\' => array($vendorDir . '/wp-cli/maintenance-mode-command/src'), + 'WP_CLI\\I18n\\' => array($vendorDir . '/wp-cli/i18n-command/src'), + 'WP_CLI\\Embeds\\' => array($vendorDir . '/wp-cli/embed-command/src'), + 'WP_CLI\\' => array($vendorDir . '/wp-cli/entity-command/src/WP_CLI', $vendorDir . '/wp-cli/shell-command/src/WP_CLI'), 'WPGraphQL\\JWT_Authentication\\' => array($baseDir . '/src'), + 'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'), + 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), + 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), + 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'), + 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), + 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), + 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), + 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), + 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), + 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), + 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), + 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), + 'Symfony\\Component\\DomCrawler\\' => array($vendorDir . '/symfony/dom-crawler'), + 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'), + 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), + 'Symfony\\Component\\BrowserKit\\' => array($vendorDir . '/symfony/browser-kit'), + 'Seld\\PharUtils\\' => array($vendorDir . '/seld/phar-utils/src'), + 'Seld\\JsonLint\\' => array($vendorDir . '/seld/jsonlint/src/Seld/JsonLint'), + 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), + 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), + 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), + 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), + 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'), + 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), + 'Peast\\test\\' => array($vendorDir . '/mck89/peast/test/Peast'), + 'Peast\\' => array($vendorDir . '/mck89/peast/lib/Peast'), + 'Mustangostang\\' => array($vendorDir . '/wp-cli/mustangostang-spyc/src'), + 'MikeMcLin\\WpPassword\\' => array($vendorDir . '/mikemclin/laravel-wp-password/src'), + 'JsonSchema\\' => array($vendorDir . '/justinrainbow/json-schema/src/JsonSchema'), + 'Illuminate\\Support\\' => array($vendorDir . '/illuminate/support'), + 'Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'), + 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), + 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), + 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), + 'Gumlet\\' => array($vendorDir . '/gumlet/php-image-resize/lib'), + 'Gettext\\Languages\\' => array($vendorDir . '/gettext/languages/src'), + 'Gettext\\' => array($vendorDir . '/gettext/gettext/src'), 'Firebase\\JWT\\' => array($vendorDir . '/firebase/php-jwt/src'), + 'Facebook\\WebDriver\\' => array($vendorDir . '/facebook/webdriver/lib'), + 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), + 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), + 'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Common/Inflector'), + 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), + 'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), + 'Composer\\Spdx\\' => array($vendorDir . '/composer/spdx-licenses/src'), + 'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), + 'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), + 'Composer\\' => array($vendorDir . '/composer/composer/src/Composer'), + 'Codeception\\PHPUnit\\' => array($vendorDir . '/codeception/phpunit-wrapper/src'), + 'Codeception\\Extension\\' => array($vendorDir . '/codeception/codeception/ext'), + 'Codeception\\' => array($vendorDir . '/codeception/codeception/src/Codeception', $vendorDir . '/codeception/stub/src', $vendorDir . '/lucatume/wp-browser/src/Codeception'), + 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), + '' => array($vendorDir . '/wp-cli/cache-command/src', $vendorDir . '/wp-cli/checksum-command/src', $vendorDir . '/wp-cli/config-command/src', $vendorDir . '/wp-cli/core-command/src', $vendorDir . '/wp-cli/cron-command/src', $vendorDir . '/wp-cli/db-command/src', $vendorDir . '/wp-cli/entity-command/src', $vendorDir . '/wp-cli/eval-command/src', $vendorDir . '/wp-cli/export-command/src', $vendorDir . '/wp-cli/extension-command/src', $vendorDir . '/wp-cli/import-command/src', $vendorDir . '/wp-cli/language-command/src', $vendorDir . '/wp-cli/media-command/src', $vendorDir . '/wp-cli/package-command/src', $vendorDir . '/wp-cli/rewrite-command/src', $vendorDir . '/wp-cli/role-command/src', $vendorDir . '/wp-cli/scaffold-command/src', $vendorDir . '/wp-cli/search-replace-command/src', $vendorDir . '/wp-cli/server-command/src', $vendorDir . '/wp-cli/shell-command/src', $vendorDir . '/wp-cli/super-admin-command/src', $vendorDir . '/wp-cli/widget-command/src'), ); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 456cf78..2db1e73 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -47,6 +47,24 @@ public static function getLoader() $loader->register(true); + if ($useStaticLoader) { + $includeFiles = Composer\Autoload\ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$files; + } else { + $includeFiles = require __DIR__ . '/autoload_files.php'; + } + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequire2bca884894f5dad38a04fb4589efa493($fileIdentifier, $file); + } + return $loader; } } + +function composerRequire2bca884894f5dad38a04fb4589efa493($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + require $file; + + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + } +} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index b5786ee..1688a1b 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -6,37 +6,3303 @@ class ComposerStaticInit2bca884894f5dad38a04fb4589efa493 { + public static $files = array ( + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', + '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', + 'ba366f96f4fddbdef61ad7a862b44f61' => __DIR__ . '/..' . '/wp-cli/package-command/package-command.php', + '3937806105cc8e221b8fa8db5b70d2f2' => __DIR__ . '/..' . '/wp-cli/mustangostang-spyc/includes/functions.php', + 'be01b9b16925dcb22165c40b46681ac6' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/cli.php', + '8a0ad02df6a5087f2c380f8fd52db273' => __DIR__ . '/..' . '/wp-cli/cache-command/cache-command.php', + 'f3f0199a3ecd9f501d0a3b361bd2f61c' => __DIR__ . '/..' . '/wp-cli/entity-command/entity-command.php', + '3f201033d5aceb2293314273be88f7c6' => __DIR__ . '/..' . '/wp-cli/extension-command/extension-command.php', + 'c65f753375faee349b7adc48c2ee7cc2' => __DIR__ . '/..' . '/wp-cli/db-command/db-command.php', + '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', + 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', + 'd979c11fe80ba96ae3037b43429fe546' => __DIR__ . '/..' . '/wp-cli/scaffold-command/scaffold-command.php', + '5c6ec5cff8f9d625772c8ed147f6b894' => __DIR__ . '/..' . '/wp-cli/export-command/export-command.php', + 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', + 'b66d29757fcb2fb7a9608d068e3716b0' => __DIR__ . '/..' . '/wp-cli/checksum-command/checksum-command.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + '72579e7bd17821bb1321b87411366eae' => __DIR__ . '/..' . '/illuminate/support/helpers.php', + '30cbb6e4122dc988e494c6b9c0438233' => __DIR__ . '/..' . '/wp-cli/import-command/import-command.php', + '5e099d3cac677dd2bec1003ea7707745' => __DIR__ . '/..' . '/wp-cli/media-command/media-command.php', + 'ac949ce40a981819ba132473518a9a31' => __DIR__ . '/..' . '/wp-cli/wp-config-transformer/src/WPConfigTransformer.php', + '5deaf6ce9c8bbdfb65104c7e938d5875' => __DIR__ . '/..' . '/wp-cli/config-command/config-command.php', + '68c39b88215b6cf7a0da164166670ef9' => __DIR__ . '/..' . '/wp-cli/core-command/core-command.php', + '7654e00bf0e632580764400bd8293a9c' => __DIR__ . '/..' . '/wp-cli/cron-command/cron-command.php', + '021d3a13471556f0b57038d679f7f8ea' => __DIR__ . '/..' . '/wp-cli/embed-command/embed-command.php', + 'f958dca3f412fd7975da1700912a9321' => __DIR__ . '/..' . '/wp-cli/eval-command/eval-command.php', + 'ffb465a494c3101218c4417180c2c9a2' => __DIR__ . '/..' . '/wp-cli/i18n-command/i18n-command.php', + 'ace0d205db7f4135ec32132a0076d555' => __DIR__ . '/..' . '/wp-cli/language-command/language-command.php', + '1c88c1eff05217a8cac80c64c9ac2080' => __DIR__ . '/..' . '/wp-cli/maintenance-mode-command/maintenance-mode-command.php', + 'f399c1c8d0c787d5c94c09884cdd9762' => __DIR__ . '/..' . '/wp-cli/rewrite-command/rewrite-command.php', + '080fadd667195d055c5a23386f270261' => __DIR__ . '/..' . '/wp-cli/role-command/role-command.php', + '8ecb13f8bbc22b1b34d12b14ec01077a' => __DIR__ . '/..' . '/wp-cli/search-replace-command/search-replace-command.php', + '9f04dd0aa5d67ec75a75c88c345a079e' => __DIR__ . '/..' . '/wp-cli/server-command/server-command.php', + '129d58fa8151374aceb8571bcaa97504' => __DIR__ . '/..' . '/wp-cli/shell-command/shell-command.php', + '8519779bbb65eeb842af2f629ce7b6f8' => __DIR__ . '/..' . '/wp-cli/super-admin-command/super-admin-command.php', + '1f05372afcc7d0c51a305cef1d56dd01' => __DIR__ . '/..' . '/wp-cli/widget-command/widget-command.php', + '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', + 'e2b8090921f5e293ca4eb0c107749811' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/functions.php', + ); + public static $prefixLengthsPsr4 = array ( + 'v' => + array ( + 'voku\\tests\\' => 11, + 'voku\\' => 5, + ), + 't' => + array ( + 'tad\\' => 4, + ), + 'p' => + array ( + 'phpDocumentor\\Reflection\\' => 25, + ), + 'c' => + array ( + 'cweagans\\Composer\\' => 18, + ), 'W' => array ( + 'Webmozart\\Assert\\' => 17, + 'WP_CLI\\MaintenanceMode\\' => 23, + 'WP_CLI\\I18n\\' => 12, + 'WP_CLI\\Embeds\\' => 14, + 'WP_CLI\\' => 7, 'WPGraphQL\\JWT_Authentication\\' => 29, ), + 'S' => + array ( + 'Symfony\\Polyfill\\Php73\\' => 23, + 'Symfony\\Polyfill\\Mbstring\\' => 26, + 'Symfony\\Polyfill\\Ctype\\' => 23, + 'Symfony\\Contracts\\Translation\\' => 30, + 'Symfony\\Contracts\\Service\\' => 26, + 'Symfony\\Contracts\\EventDispatcher\\' => 34, + 'Symfony\\Component\\Yaml\\' => 23, + 'Symfony\\Component\\Translation\\' => 30, + 'Symfony\\Component\\Process\\' => 26, + 'Symfony\\Component\\Finder\\' => 25, + 'Symfony\\Component\\Filesystem\\' => 29, + 'Symfony\\Component\\EventDispatcher\\' => 34, + 'Symfony\\Component\\DomCrawler\\' => 29, + 'Symfony\\Component\\CssSelector\\' => 30, + 'Symfony\\Component\\Console\\' => 26, + 'Symfony\\Component\\BrowserKit\\' => 29, + 'Seld\\PharUtils\\' => 15, + 'Seld\\JsonLint\\' => 14, + ), + 'P' => + array ( + 'Psr\\SimpleCache\\' => 16, + 'Psr\\Log\\' => 8, + 'Psr\\Http\\Message\\' => 17, + 'Psr\\Container\\' => 14, + 'Prophecy\\' => 9, + 'PhpOption\\' => 10, + 'Peast\\test\\' => 11, + 'Peast\\' => 6, + ), + 'M' => + array ( + 'Mustangostang\\' => 14, + 'MikeMcLin\\WpPassword\\' => 21, + ), + 'J' => + array ( + 'JsonSchema\\' => 11, + ), + 'I' => + array ( + 'Illuminate\\Support\\' => 19, + 'Illuminate\\Contracts\\' => 21, + ), + 'G' => + array ( + 'GuzzleHttp\\Psr7\\' => 16, + 'GuzzleHttp\\Promise\\' => 19, + 'GuzzleHttp\\' => 11, + 'Gumlet\\' => 7, + 'Gettext\\Languages\\' => 18, + 'Gettext\\' => 8, + ), 'F' => array ( 'Firebase\\JWT\\' => 13, + 'Facebook\\WebDriver\\' => 19, + ), + 'D' => + array ( + 'Dotenv\\' => 7, + 'Doctrine\\Instantiator\\' => 22, + 'Doctrine\\Common\\Inflector\\' => 26, + 'DeepCopy\\' => 9, + ), + 'C' => + array ( + 'Composer\\XdebugHandler\\' => 23, + 'Composer\\Spdx\\' => 14, + 'Composer\\Semver\\' => 16, + 'Composer\\CaBundle\\' => 18, + 'Composer\\' => 9, + 'Codeception\\PHPUnit\\' => 20, + 'Codeception\\Extension\\' => 22, + 'Codeception\\' => 12, + 'Carbon\\' => 7, ), ); public static $prefixDirsPsr4 = array ( + 'voku\\tests\\' => + array ( + 0 => __DIR__ . '/..' . '/voku/portable-ascii/tests', + ), + 'voku\\' => + array ( + 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku', + ), + 'tad\\' => + array ( + 0 => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad', + 1 => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad', + ), + 'phpDocumentor\\Reflection\\' => + array ( + 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', + 1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', + 2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', + ), + 'cweagans\\Composer\\' => + array ( + 0 => __DIR__ . '/..' . '/cweagans/composer-patches/src', + ), + 'Webmozart\\Assert\\' => + array ( + 0 => __DIR__ . '/..' . '/webmozart/assert/src', + ), + 'WP_CLI\\MaintenanceMode\\' => + array ( + 0 => __DIR__ . '/..' . '/wp-cli/maintenance-mode-command/src', + ), + 'WP_CLI\\I18n\\' => + array ( + 0 => __DIR__ . '/..' . '/wp-cli/i18n-command/src', + ), + 'WP_CLI\\Embeds\\' => + array ( + 0 => __DIR__ . '/..' . '/wp-cli/embed-command/src', + ), + 'WP_CLI\\' => + array ( + 0 => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI', + 1 => __DIR__ . '/..' . '/wp-cli/shell-command/src/WP_CLI', + ), 'WPGraphQL\\JWT_Authentication\\' => array ( 0 => __DIR__ . '/../..' . '/src', ), + 'Symfony\\Polyfill\\Php73\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-php73', + ), + 'Symfony\\Polyfill\\Mbstring\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', + ), + 'Symfony\\Polyfill\\Ctype\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', + ), + 'Symfony\\Contracts\\Translation\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/translation-contracts', + ), + 'Symfony\\Contracts\\Service\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/service-contracts', + ), + 'Symfony\\Contracts\\EventDispatcher\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', + ), + 'Symfony\\Component\\Yaml\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/yaml', + ), + 'Symfony\\Component\\Translation\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/translation', + ), + 'Symfony\\Component\\Process\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/process', + ), + 'Symfony\\Component\\Finder\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/finder', + ), + 'Symfony\\Component\\Filesystem\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/filesystem', + ), + 'Symfony\\Component\\EventDispatcher\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', + ), + 'Symfony\\Component\\DomCrawler\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/dom-crawler', + ), + 'Symfony\\Component\\CssSelector\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/css-selector', + ), + 'Symfony\\Component\\Console\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/console', + ), + 'Symfony\\Component\\BrowserKit\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/browser-kit', + ), + 'Seld\\PharUtils\\' => + array ( + 0 => __DIR__ . '/..' . '/seld/phar-utils/src', + ), + 'Seld\\JsonLint\\' => + array ( + 0 => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint', + ), + 'Psr\\SimpleCache\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/simple-cache/src', + ), + 'Psr\\Log\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/log/Psr/Log', + ), + 'Psr\\Http\\Message\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/http-message/src', + ), + 'Psr\\Container\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/container/src', + ), + 'Prophecy\\' => + array ( + 0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy', + ), + 'PhpOption\\' => + array ( + 0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption', + ), + 'Peast\\test\\' => + array ( + 0 => __DIR__ . '/..' . '/mck89/peast/test/Peast', + ), + 'Peast\\' => + array ( + 0 => __DIR__ . '/..' . '/mck89/peast/lib/Peast', + ), + 'Mustangostang\\' => + array ( + 0 => __DIR__ . '/..' . '/wp-cli/mustangostang-spyc/src', + ), + 'MikeMcLin\\WpPassword\\' => + array ( + 0 => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src', + ), + 'JsonSchema\\' => + array ( + 0 => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema', + ), + 'Illuminate\\Support\\' => + array ( + 0 => __DIR__ . '/..' . '/illuminate/support', + ), + 'Illuminate\\Contracts\\' => + array ( + 0 => __DIR__ . '/..' . '/illuminate/contracts', + ), + 'GuzzleHttp\\Psr7\\' => + array ( + 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', + ), + 'GuzzleHttp\\Promise\\' => + array ( + 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', + ), + 'GuzzleHttp\\' => + array ( + 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', + ), + 'Gumlet\\' => + array ( + 0 => __DIR__ . '/..' . '/gumlet/php-image-resize/lib', + ), + 'Gettext\\Languages\\' => + array ( + 0 => __DIR__ . '/..' . '/gettext/languages/src', + ), + 'Gettext\\' => + array ( + 0 => __DIR__ . '/..' . '/gettext/gettext/src', + ), 'Firebase\\JWT\\' => array ( 0 => __DIR__ . '/..' . '/firebase/php-jwt/src', ), + 'Facebook\\WebDriver\\' => + array ( + 0 => __DIR__ . '/..' . '/facebook/webdriver/lib', + ), + 'Dotenv\\' => + array ( + 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', + ), + 'Doctrine\\Instantiator\\' => + array ( + 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator', + ), + 'Doctrine\\Common\\Inflector\\' => + array ( + 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Common/Inflector', + ), + 'DeepCopy\\' => + array ( + 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', + ), + 'Composer\\XdebugHandler\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', + ), + 'Composer\\Spdx\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/spdx-licenses/src', + ), + 'Composer\\Semver\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/semver/src', + ), + 'Composer\\CaBundle\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', + ), + 'Composer\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/composer/src/Composer', + ), + 'Codeception\\PHPUnit\\' => + array ( + 0 => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src', + ), + 'Codeception\\Extension\\' => + array ( + 0 => __DIR__ . '/..' . '/codeception/codeception/ext', + ), + 'Codeception\\' => + array ( + 0 => __DIR__ . '/..' . '/codeception/codeception/src/Codeception', + 1 => __DIR__ . '/..' . '/codeception/stub/src', + 2 => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception', + ), + 'Carbon\\' => + array ( + 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', + ), + ); + + public static $fallbackDirsPsr4 = array ( + 0 => __DIR__ . '/..' . '/wp-cli/cache-command/src', + 1 => __DIR__ . '/..' . '/wp-cli/checksum-command/src', + 2 => __DIR__ . '/..' . '/wp-cli/config-command/src', + 3 => __DIR__ . '/..' . '/wp-cli/core-command/src', + 4 => __DIR__ . '/..' . '/wp-cli/cron-command/src', + 5 => __DIR__ . '/..' . '/wp-cli/db-command/src', + 6 => __DIR__ . '/..' . '/wp-cli/entity-command/src', + 7 => __DIR__ . '/..' . '/wp-cli/eval-command/src', + 8 => __DIR__ . '/..' . '/wp-cli/export-command/src', + 9 => __DIR__ . '/..' . '/wp-cli/extension-command/src', + 10 => __DIR__ . '/..' . '/wp-cli/import-command/src', + 11 => __DIR__ . '/..' . '/wp-cli/language-command/src', + 12 => __DIR__ . '/..' . '/wp-cli/media-command/src', + 13 => __DIR__ . '/..' . '/wp-cli/package-command/src', + 14 => __DIR__ . '/..' . '/wp-cli/rewrite-command/src', + 15 => __DIR__ . '/..' . '/wp-cli/role-command/src', + 16 => __DIR__ . '/..' . '/wp-cli/scaffold-command/src', + 17 => __DIR__ . '/..' . '/wp-cli/search-replace-command/src', + 18 => __DIR__ . '/..' . '/wp-cli/server-command/src', + 19 => __DIR__ . '/..' . '/wp-cli/shell-command/src', + 20 => __DIR__ . '/..' . '/wp-cli/super-admin-command/src', + 21 => __DIR__ . '/..' . '/wp-cli/widget-command/src', + ); + + public static $prefixesPsr0 = array ( + 'c' => + array ( + 'cli' => + array ( + 0 => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib', + ), + ), + 'W' => + array ( + 'WP_CLI' => + array ( + 0 => __DIR__ . '/..' . '/wp-cli/wp-cli/php', + ), + ), + 'R' => + array ( + 'Requests' => + array ( + 0 => __DIR__ . '/..' . '/rmccue/requests/library', + ), + ), + 'O' => + array ( + 'Oxymel' => + array ( + 0 => __DIR__ . '/..' . '/nb/oxymel', + ), + ), + 'M' => + array ( + 'Mustache' => + array ( + 0 => __DIR__ . '/..' . '/mustache/mustache/src', + ), + ), + 'H' => + array ( + 'Hautelook' => + array ( + 0 => __DIR__ . '/..' . '/hautelook/phpass/src', + ), + 'Handlebars' => + array ( + 0 => __DIR__ . '/..' . '/xamin/handlebars.php/src', + ), + ), + 'B' => + array ( + 'Behat\\Gherkin' => + array ( + 0 => __DIR__ . '/..' . '/behat/gherkin/src', + ), + 'BaconStringUtils' => + array ( + 0 => __DIR__ . '/..' . '/bacon/bacon-string-utils/src', + ), + ), ); public static $classMap = array ( + 'BaconStringUtils\\Filter\\Slugify' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/Filter/Slugify.php', + 'BaconStringUtils\\Filter\\SlugifyFactory' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/Filter/SlugifyFactory.php', + 'BaconStringUtils\\Module' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/Module.php', + 'BaconStringUtils\\Slugifier' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/Slugifier.php', + 'BaconStringUtils\\SlugifierFactory' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/SlugifierFactory.php', + 'BaconStringUtils\\UniDecoder' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/UniDecoder.php', + 'Behat\\Gherkin\\Cache\\CacheInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Cache/CacheInterface.php', + 'Behat\\Gherkin\\Cache\\FileCache' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Cache/FileCache.php', + 'Behat\\Gherkin\\Cache\\MemoryCache' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Cache/MemoryCache.php', + 'Behat\\Gherkin\\Exception\\CacheException' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/CacheException.php', + 'Behat\\Gherkin\\Exception\\Exception' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/Exception.php', + 'Behat\\Gherkin\\Exception\\LexerException' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/LexerException.php', + 'Behat\\Gherkin\\Exception\\NodeException' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/NodeException.php', + 'Behat\\Gherkin\\Exception\\ParserException' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/ParserException.php', + 'Behat\\Gherkin\\Filter\\ComplexFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/ComplexFilter.php', + 'Behat\\Gherkin\\Filter\\ComplexFilterInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/ComplexFilterInterface.php', + 'Behat\\Gherkin\\Filter\\FeatureFilterInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/FeatureFilterInterface.php', + 'Behat\\Gherkin\\Filter\\FilterInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/FilterInterface.php', + 'Behat\\Gherkin\\Filter\\LineFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/LineFilter.php', + 'Behat\\Gherkin\\Filter\\LineRangeFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/LineRangeFilter.php', + 'Behat\\Gherkin\\Filter\\NameFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/NameFilter.php', + 'Behat\\Gherkin\\Filter\\NarrativeFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/NarrativeFilter.php', + 'Behat\\Gherkin\\Filter\\PathsFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/PathsFilter.php', + 'Behat\\Gherkin\\Filter\\RoleFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/RoleFilter.php', + 'Behat\\Gherkin\\Filter\\SimpleFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/SimpleFilter.php', + 'Behat\\Gherkin\\Filter\\TagFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/TagFilter.php', + 'Behat\\Gherkin\\Gherkin' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Gherkin.php', + 'Behat\\Gherkin\\Keywords\\ArrayKeywords' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/ArrayKeywords.php', + 'Behat\\Gherkin\\Keywords\\CachedArrayKeywords' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/CachedArrayKeywords.php', + 'Behat\\Gherkin\\Keywords\\CucumberKeywords' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/CucumberKeywords.php', + 'Behat\\Gherkin\\Keywords\\KeywordsDumper' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/KeywordsDumper.php', + 'Behat\\Gherkin\\Keywords\\KeywordsInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/KeywordsInterface.php', + 'Behat\\Gherkin\\Lexer' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Lexer.php', + 'Behat\\Gherkin\\Loader\\AbstractFileLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/AbstractFileLoader.php', + 'Behat\\Gherkin\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/ArrayLoader.php', + 'Behat\\Gherkin\\Loader\\DirectoryLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/DirectoryLoader.php', + 'Behat\\Gherkin\\Loader\\FileLoaderInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/FileLoaderInterface.php', + 'Behat\\Gherkin\\Loader\\GherkinFileLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/GherkinFileLoader.php', + 'Behat\\Gherkin\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/LoaderInterface.php', + 'Behat\\Gherkin\\Loader\\YamlFileLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/YamlFileLoader.php', + 'Behat\\Gherkin\\Node\\ArgumentInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ArgumentInterface.php', + 'Behat\\Gherkin\\Node\\BackgroundNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/BackgroundNode.php', + 'Behat\\Gherkin\\Node\\ExampleNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ExampleNode.php', + 'Behat\\Gherkin\\Node\\ExampleTableNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ExampleTableNode.php', + 'Behat\\Gherkin\\Node\\FeatureNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/FeatureNode.php', + 'Behat\\Gherkin\\Node\\KeywordNodeInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/KeywordNodeInterface.php', + 'Behat\\Gherkin\\Node\\NodeInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/NodeInterface.php', + 'Behat\\Gherkin\\Node\\OutlineNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/OutlineNode.php', + 'Behat\\Gherkin\\Node\\PyStringNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/PyStringNode.php', + 'Behat\\Gherkin\\Node\\ScenarioInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioInterface.php', + 'Behat\\Gherkin\\Node\\ScenarioLikeInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioLikeInterface.php', + 'Behat\\Gherkin\\Node\\ScenarioNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioNode.php', + 'Behat\\Gherkin\\Node\\StepContainerInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/StepContainerInterface.php', + 'Behat\\Gherkin\\Node\\StepNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/StepNode.php', + 'Behat\\Gherkin\\Node\\TableNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/TableNode.php', + 'Behat\\Gherkin\\Node\\TaggedNodeInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/TaggedNodeInterface.php', + 'Behat\\Gherkin\\Parser' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Parser.php', + 'Cache_Command' => __DIR__ . '/..' . '/wp-cli/cache-command/src/Cache_Command.php', + 'Capabilities_Command' => __DIR__ . '/..' . '/wp-cli/role-command/src/Capabilities_Command.php', + 'Carbon\\Carbon' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Carbon.php', + 'Carbon\\CarbonImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonImmutable.php', + 'Carbon\\CarbonInterface' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterface.php', + 'Carbon\\CarbonInterval' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterval.php', + 'Carbon\\CarbonPeriod' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonPeriod.php', + 'Carbon\\CarbonTimeZone' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php', + 'Carbon\\Cli\\Invoker' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Cli/Invoker.php', + 'Carbon\\Exceptions\\BadUnitException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/BadUnitException.php', + 'Carbon\\Exceptions\\InvalidDateException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php', + 'Carbon\\Exceptions\\NotAPeriodException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php', + 'Carbon\\Exceptions\\NotLocaleAwareException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php', + 'Carbon\\Exceptions\\ParseErrorException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php', + 'Carbon\\Factory' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Factory.php', + 'Carbon\\FactoryImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/FactoryImmutable.php', + 'Carbon\\Language' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Language.php', + 'Carbon\\Laravel\\ServiceProvider' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php', + 'Carbon\\Traits\\Boundaries' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Boundaries.php', + 'Carbon\\Traits\\Cast' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Cast.php', + 'Carbon\\Traits\\Comparison' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Comparison.php', + 'Carbon\\Traits\\Converter' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Converter.php', + 'Carbon\\Traits\\Creator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Creator.php', + 'Carbon\\Traits\\Date' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Date.php', + 'Carbon\\Traits\\Difference' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Difference.php', + 'Carbon\\Traits\\Localization' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Localization.php', + 'Carbon\\Traits\\Macro' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Macro.php', + 'Carbon\\Traits\\Mixin' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Mixin.php', + 'Carbon\\Traits\\Modifiers' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Modifiers.php', + 'Carbon\\Traits\\Mutability' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Mutability.php', + 'Carbon\\Traits\\ObjectInitialisation' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php', + 'Carbon\\Traits\\Options' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Options.php', + 'Carbon\\Traits\\Rounding' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Rounding.php', + 'Carbon\\Traits\\Serialization' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Serialization.php', + 'Carbon\\Traits\\Test' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Test.php', + 'Carbon\\Traits\\Timestamp' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Timestamp.php', + 'Carbon\\Traits\\Units' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Units.php', + 'Carbon\\Traits\\Week' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Week.php', + 'Carbon\\Translator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Translator.php', + 'Checksum_Base_Command' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Checksum_Base_Command.php', + 'Checksum_Core_Command' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Checksum_Core_Command.php', + 'Checksum_Plugin_Command' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Checksum_Plugin_Command.php', + 'Codeception\\Actor' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Actor.php', + 'Codeception\\Application' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Application.php', + 'Codeception\\Codecept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Codecept.php', + 'Codeception\\Command\\Bootstrap' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Bootstrap.php', + 'Codeception\\Command\\Build' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Build.php', + 'Codeception\\Command\\Clean' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Clean.php', + 'Codeception\\Command\\Completion' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Completion.php', + 'Codeception\\Command\\CompletionFallback' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/CompletionFallback.php', + 'Codeception\\Command\\ConfigValidate' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/ConfigValidate.php', + 'Codeception\\Command\\Console' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Console.php', + 'Codeception\\Command\\DryRun' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/DryRun.php', + 'Codeception\\Command\\GenerateCept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateCept.php', + 'Codeception\\Command\\GenerateCest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateCest.php', + 'Codeception\\Command\\GenerateEnvironment' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateEnvironment.php', + 'Codeception\\Command\\GenerateFeature' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateFeature.php', + 'Codeception\\Command\\GenerateGroup' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateGroup.php', + 'Codeception\\Command\\GenerateHelper' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateHelper.php', + 'Codeception\\Command\\GeneratePageObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GeneratePageObject.php', + 'Codeception\\Command\\GenerateScenarios' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateScenarios.php', + 'Codeception\\Command\\GenerateSnapshot' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateSnapshot.php', + 'Codeception\\Command\\GenerateStepObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateStepObject.php', + 'Codeception\\Command\\GenerateSuite' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateSuite.php', + 'Codeception\\Command\\GenerateTest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateTest.php', + 'Codeception\\Command\\GenerateWPAjax' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPAjax.php', + 'Codeception\\Command\\GenerateWPCanonical' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPCanonical.php', + 'Codeception\\Command\\GenerateWPRestApi' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestApi.php', + 'Codeception\\Command\\GenerateWPRestController' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestController.php', + 'Codeception\\Command\\GenerateWPRestPostTypeController' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestPostTypeController.php', + 'Codeception\\Command\\GenerateWPUnit' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPUnit.php', + 'Codeception\\Command\\GenerateWPXMLRPC' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPXMLRPC.php', + 'Codeception\\Command\\GherkinSnippets' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GherkinSnippets.php', + 'Codeception\\Command\\GherkinSteps' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GherkinSteps.php', + 'Codeception\\Command\\Init' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Init.php', + 'Codeception\\Command\\Run' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Run.php', + 'Codeception\\Command\\SelfUpdate' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/SelfUpdate.php', + 'Codeception\\Command\\Shared\\Config' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Shared/Config.php', + 'Codeception\\Command\\Shared\\FileSystem' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Shared/FileSystem.php', + 'Codeception\\Command\\Shared\\Style' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Shared/Style.php', + 'Codeception\\Configuration' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Configuration.php', + 'Codeception\\Coverage\\Filter' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Filter.php', + 'Codeception\\Coverage\\Subscriber\\Local' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Subscriber/Local.php', + 'Codeception\\Coverage\\Subscriber\\LocalServer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Subscriber/LocalServer.php', + 'Codeception\\Coverage\\Subscriber\\Printer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Subscriber/Printer.php', + 'Codeception\\Coverage\\Subscriber\\RemoteServer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Subscriber/RemoteServer.php', + 'Codeception\\Coverage\\SuiteSubscriber' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/SuiteSubscriber.php', + 'Codeception\\CustomCommandInterface' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/CustomCommandInterface.php', + 'Codeception\\Event\\FailEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/FailEvent.php', + 'Codeception\\Event\\PrintResultEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/PrintResultEvent.php', + 'Codeception\\Event\\StepEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/StepEvent.php', + 'Codeception\\Event\\SuiteEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/SuiteEvent.php', + 'Codeception\\Event\\TestEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/TestEvent.php', + 'Codeception\\Events' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Events.php', + 'Codeception\\Example' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Example.php', + 'Codeception\\Exception\\ConditionalAssertionFailed' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ConditionalAssertionFailed.php', + 'Codeception\\Exception\\ConfigurationException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ConfigurationException.php', + 'Codeception\\Exception\\ConnectionException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ConnectionException.php', + 'Codeception\\Exception\\ContentNotFound' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ContentNotFound.php', + 'Codeception\\Exception\\ElementNotFound' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ElementNotFound.php', + 'Codeception\\Exception\\ExtensionException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ExtensionException.php', + 'Codeception\\Exception\\ExternalUrlException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ExternalUrlException.php', + 'Codeception\\Exception\\Fail' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/Fail.php', + 'Codeception\\Exception\\Incomplete' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/Incomplete.php', + 'Codeception\\Exception\\InjectionException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/InjectionException.php', + 'Codeception\\Exception\\MalformedLocatorException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/MalformedLocatorException.php', + 'Codeception\\Exception\\ModuleConfigException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ModuleConfigException.php', + 'Codeception\\Exception\\ModuleConflictException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ModuleConflictException.php', + 'Codeception\\Exception\\ModuleException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ModuleException.php', + 'Codeception\\Exception\\ModuleRequireException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ModuleRequireException.php', + 'Codeception\\Exception\\ParseException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ParseException.php', + 'Codeception\\Exception\\RemoteException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/RemoteException.php', + 'Codeception\\Exception\\Skip' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/Skip.php', + 'Codeception\\Exception\\TestParseException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/TestParseException.php', + 'Codeception\\Exception\\TestRuntimeException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/TestRuntimeException.php', + 'Codeception\\Extension' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Extension.php', + 'Codeception\\Extension\\DotReporter' => __DIR__ . '/..' . '/codeception/codeception/ext/DotReporter.php', + 'Codeception\\Extension\\Logger' => __DIR__ . '/..' . '/codeception/codeception/ext/Logger.php', + 'Codeception\\Extension\\Recorder' => __DIR__ . '/..' . '/codeception/codeception/ext/Recorder.php', + 'Codeception\\Extension\\RunBefore' => __DIR__ . '/..' . '/codeception/codeception/ext/RunBefore.php', + 'Codeception\\Extension\\RunFailed' => __DIR__ . '/..' . '/codeception/codeception/ext/RunFailed.php', + 'Codeception\\Extension\\RunProcess' => __DIR__ . '/..' . '/codeception/codeception/ext/RunProcess.php', + 'Codeception\\Extension\\SimpleReporter' => __DIR__ . '/..' . '/codeception/codeception/ext/SimpleReporter.php', + 'Codeception\\GroupObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/GroupObject.php', + 'Codeception\\InitTemplate' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/InitTemplate.php', + 'Codeception\\Lib\\Actor\\Shared\\Comment' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Actor/Shared/Comment.php', + 'Codeception\\Lib\\Actor\\Shared\\Friend' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Actor/Shared/Friend.php', + 'Codeception\\Lib\\Connector\\Guzzle' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Guzzle.php', + 'Codeception\\Lib\\Connector\\Guzzle6' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Guzzle6.php', + 'Codeception\\Lib\\Connector\\Laravel5' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Laravel5.php', + 'Codeception\\Lib\\Connector\\Laravel5\\ExceptionHandlerDecorator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Laravel5/ExceptionHandlerDecorator.php', + 'Codeception\\Lib\\Connector\\Lumen' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Lumen.php', + 'Codeception\\Lib\\Connector\\Lumen\\DummyKernel' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Lumen/DummyKernel.php', + 'Codeception\\Lib\\Connector\\Phalcon' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Phalcon.php', + 'Codeception\\Lib\\Connector\\Phalcon\\MemorySession' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Phalcon/MemorySession.php', + 'Codeception\\Lib\\Connector\\Shared\\LaravelCommon' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Shared/LaravelCommon.php', + 'Codeception\\Lib\\Connector\\Shared\\PhpSuperGlobalsConverter' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Shared/PhpSuperGlobalsConverter.php', + 'Codeception\\Lib\\Connector\\Symfony' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Symfony.php', + 'Codeception\\Lib\\Connector\\Universal' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Universal.php', + 'Codeception\\Lib\\Connector\\Yii1' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii1.php', + 'Codeception\\Lib\\Connector\\Yii2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2.php', + 'Codeception\\Lib\\Connector\\Yii2\\ConnectionWatcher' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/ConnectionWatcher.php', + 'Codeception\\Lib\\Connector\\Yii2\\FixturesStore' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/FixturesStore.php', + 'Codeception\\Lib\\Connector\\Yii2\\Logger' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/Logger.php', + 'Codeception\\Lib\\Connector\\Yii2\\TestMailer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/TestMailer.php', + 'Codeception\\Lib\\Connector\\Yii2\\TransactionForcer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/TransactionForcer.php', + 'Codeception\\Lib\\Connector\\ZF1' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZF1.php', + 'Codeception\\Lib\\Connector\\ZF2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZF2.php', + 'Codeception\\Lib\\Connector\\ZF2\\PersistentServiceManager' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZF2/PersistentServiceManager.php', + 'Codeception\\Lib\\Connector\\ZendExpressive' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZendExpressive.php', + 'Codeception\\Lib\\Connector\\ZendExpressive\\ResponseCollector' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZendExpressive/ResponseCollector.php', + 'Codeception\\Lib\\Console\\Colorizer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/Colorizer.php', + 'Codeception\\Lib\\Console\\DiffFactory' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/DiffFactory.php', + 'Codeception\\Lib\\Console\\Message' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/Message.php', + 'Codeception\\Lib\\Console\\MessageFactory' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/MessageFactory.php', + 'Codeception\\Lib\\Console\\Output' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/Output.php', + 'Codeception\\Lib\\DbPopulator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/DbPopulator.php', + 'Codeception\\Lib\\Di' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Di.php', + 'Codeception\\Lib\\Driver\\AmazonSQS' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/AmazonSQS.php', + 'Codeception\\Lib\\Driver\\Beanstalk' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Beanstalk.php', + 'Codeception\\Lib\\Driver\\Db' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Db.php', + 'Codeception\\Lib\\Driver\\ExtendedDbDriver' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Driver/ExtendedDbDriver.php', + 'Codeception\\Lib\\Driver\\ExtendedMySql' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Driver/ExtendedMySql.php', + 'Codeception\\Lib\\Driver\\Facebook' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Facebook.php', + 'Codeception\\Lib\\Driver\\Iron' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Iron.php', + 'Codeception\\Lib\\Driver\\MongoDb' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/MongoDb.php', + 'Codeception\\Lib\\Driver\\MySql' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/MySql.php', + 'Codeception\\Lib\\Driver\\Oci' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Oci.php', + 'Codeception\\Lib\\Driver\\PostgreSql' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/PostgreSql.php', + 'Codeception\\Lib\\Driver\\SqlSrv' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/SqlSrv.php', + 'Codeception\\Lib\\Driver\\Sqlite' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Sqlite.php', + 'Codeception\\Lib\\Framework' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Framework.php', + 'Codeception\\Lib\\Friend' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Friend.php', + 'Codeception\\Lib\\Generator\\AbstractGenerator' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/AbstractGenerator.php', + 'Codeception\\Lib\\Generator\\AcceptanceSuiteConfig' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/AcceptanceSuiteConfig.php', + 'Codeception\\Lib\\Generator\\Actions' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Actions.php', + 'Codeception\\Lib\\Generator\\Actor' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Actor.php', + 'Codeception\\Lib\\Generator\\Cept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Cept.php', + 'Codeception\\Lib\\Generator\\Cest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Cest.php', + 'Codeception\\Lib\\Generator\\Feature' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Feature.php', + 'Codeception\\Lib\\Generator\\FunctionalSuiteConfig' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/FunctionalSuiteConfig.php', + 'Codeception\\Lib\\Generator\\GeneratorInterface' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/GeneratorInterface.php', + 'Codeception\\Lib\\Generator\\GherkinSnippets' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/GherkinSnippets.php', + 'Codeception\\Lib\\Generator\\Group' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Group.php', + 'Codeception\\Lib\\Generator\\Helper' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Helper.php', + 'Codeception\\Lib\\Generator\\IntegrationSuiteConfig' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/IntegrationSuiteConfig.php', + 'Codeception\\Lib\\Generator\\IntegrationSuiteThemeConfig' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/IntegrationSuiteThemeConfig.php', + 'Codeception\\Lib\\Generator\\PageObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/PageObject.php', + 'Codeception\\Lib\\Generator\\Shared\\Classname' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Shared/Classname.php', + 'Codeception\\Lib\\Generator\\Snapshot' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Snapshot.php', + 'Codeception\\Lib\\Generator\\StepObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/StepObject.php', + 'Codeception\\Lib\\Generator\\Test' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Test.php', + 'Codeception\\Lib\\Generator\\WPUnit' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/WPUnit.php', + 'Codeception\\Lib\\GroupManager' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/GroupManager.php', + 'Codeception\\Lib\\InnerBrowser' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/InnerBrowser.php', + 'Codeception\\Lib\\Interfaces\\API' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/API.php', + 'Codeception\\Lib\\Interfaces\\ActiveRecord' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ActiveRecord.php', + 'Codeception\\Lib\\Interfaces\\ConflictsWithModule' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ConflictsWithModule.php', + 'Codeception\\Lib\\Interfaces\\DataMapper' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/DataMapper.php', + 'Codeception\\Lib\\Interfaces\\Db' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/Db.php', + 'Codeception\\Lib\\Interfaces\\DependsOnModule' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/DependsOnModule.php', + 'Codeception\\Lib\\Interfaces\\DoctrineProvider' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/DoctrineProvider.php', + 'Codeception\\Lib\\Interfaces\\ElementLocator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ElementLocator.php', + 'Codeception\\Lib\\Interfaces\\MultiSession' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/MultiSession.php', + 'Codeception\\Lib\\Interfaces\\ORM' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ORM.php', + 'Codeception\\Lib\\Interfaces\\PageSourceSaver' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/PageSourceSaver.php', + 'Codeception\\Lib\\Interfaces\\PartedModule' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/PartedModule.php', + 'Codeception\\Lib\\Interfaces\\Queue' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/Queue.php', + 'Codeception\\Lib\\Interfaces\\Remote' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/Remote.php', + 'Codeception\\Lib\\Interfaces\\RequiresPackage' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/RequiresPackage.php', + 'Codeception\\Lib\\Interfaces\\ScreenshotSaver' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ScreenshotSaver.php', + 'Codeception\\Lib\\Interfaces\\SessionSnapshot' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/SessionSnapshot.php', + 'Codeception\\Lib\\Interfaces\\Web' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/Web.php', + 'Codeception\\Lib\\ModuleContainer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/ModuleContainer.php', + 'Codeception\\Lib\\Notification' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Notification.php', + 'Codeception\\Lib\\ParamsLoader' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/ParamsLoader.php', + 'Codeception\\Lib\\Parser' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Parser.php', + 'Codeception\\Lib\\Shared\\LaravelCommon' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Shared/LaravelCommon.php', + 'Codeception\\Module' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module.php', + 'Codeception\\Module\\AMQP' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/AMQP.php', + 'Codeception\\Module\\AngularJS' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/AngularJS.php', + 'Codeception\\Module\\Apc' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Apc.php', + 'Codeception\\Module\\Asserts' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Asserts.php', + 'Codeception\\Module\\Cli' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Cli.php', + 'Codeception\\Module\\DataFactory' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/DataFactory.php', + 'Codeception\\Module\\Db' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Db.php', + 'Codeception\\Module\\Doctrine2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Doctrine2.php', + 'Codeception\\Module\\FTP' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/FTP.php', + 'Codeception\\Module\\Facebook' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Facebook.php', + 'Codeception\\Module\\Filesystem' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Filesystem.php', + 'Codeception\\Module\\Laravel5' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Laravel5.php', + 'Codeception\\Module\\Lumen' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Lumen.php', + 'Codeception\\Module\\Memcache' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Memcache.php', + 'Codeception\\Module\\MongoDb' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/MongoDb.php', + 'Codeception\\Module\\Phalcon' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Phalcon.php', + 'Codeception\\Module\\PhpBrowser' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/PhpBrowser.php', + 'Codeception\\Module\\Queue' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Queue.php', + 'Codeception\\Module\\REST' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/REST.php', + 'Codeception\\Module\\Redis' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Redis.php', + 'Codeception\\Module\\SOAP' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/SOAP.php', + 'Codeception\\Module\\Sequence' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Sequence.php', + 'Codeception\\Module\\Silex' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Silex.php', + 'Codeception\\Module\\Symfony' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Symfony.php', + 'Codeception\\Module\\WPBrowser' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPBrowser.php', + 'Codeception\\Module\\WPBrowserMethods' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPBrowserMethods.php', + 'Codeception\\Module\\WPCLI' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPCLI.php', + 'Codeception\\Module\\WPDb' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPDb.php', + 'Codeception\\Module\\WPFilesystem' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPFilesystem.php', + 'Codeception\\Module\\WPLoader' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPLoader.php', + 'Codeception\\Module\\WPQueries' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPQueries.php', + 'Codeception\\Module\\WPWebDriver' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPWebDriver.php', + 'Codeception\\Module\\WebDriver' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/WebDriver.php', + 'Codeception\\Module\\WordPress' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WordPress.php', + 'Codeception\\Module\\XMLRPC' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/XMLRPC.php', + 'Codeception\\Module\\Yii1' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Yii1.php', + 'Codeception\\Module\\Yii2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Yii2.php', + 'Codeception\\Module\\ZF1' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/ZF1.php', + 'Codeception\\Module\\ZF2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/ZF2.php', + 'Codeception\\Module\\ZendExpressive' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/ZendExpressive.php', + 'Codeception\\PHPUnit\\ConsolePrinter' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ConsolePrinter.php', + 'Codeception\\PHPUnit\\Constraint\\Crawler' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/Crawler.php', + 'Codeception\\PHPUnit\\Constraint\\CrawlerNot' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/CrawlerNot.php', + 'Codeception\\PHPUnit\\Constraint\\JsonContains' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/JsonContains.php', + 'Codeception\\PHPUnit\\Constraint\\JsonType' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/JsonType.php', + 'Codeception\\PHPUnit\\Constraint\\Page' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/Page.php', + 'Codeception\\PHPUnit\\Constraint\\WebDriver' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/WebDriver.php', + 'Codeception\\PHPUnit\\Constraint\\WebDriverNot' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/WebDriverNot.php', + 'Codeception\\PHPUnit\\DispatcherWrapper' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/DispatcherWrapper.php', + 'Codeception\\PHPUnit\\FilterTest' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/FilterTest.php', + 'Codeception\\PHPUnit\\Init' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Init.php', + 'Codeception\\PHPUnit\\Listener' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Listener.php', + 'Codeception\\PHPUnit\\Log\\JUnit' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Log/JUnit.php', + 'Codeception\\PHPUnit\\Log\\PhpUnit' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Log/PhpUnit.php', + 'Codeception\\PHPUnit\\ResultPrinter' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ResultPrinter.php', + 'Codeception\\PHPUnit\\ResultPrinter\\HTML' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ResultPrinter/HTML.php', + 'Codeception\\PHPUnit\\ResultPrinter\\Report' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ResultPrinter/Report.php', + 'Codeception\\PHPUnit\\ResultPrinter\\UI' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ResultPrinter/UI.php', + 'Codeception\\PHPUnit\\Runner' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Runner.php', + 'Codeception\\PHPUnit\\TestCase' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/TestCase.php', + 'Codeception\\Scenario' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Scenario.php', + 'Codeception\\Snapshot' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Snapshot.php', + 'Codeception\\Step' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step.php', + 'Codeception\\Step\\Action' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Action.php', + 'Codeception\\Step\\Argument\\FormattedOutput' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Argument/FormattedOutput.php', + 'Codeception\\Step\\Argument\\PasswordArgument' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Argument/PasswordArgument.php', + 'Codeception\\Step\\Assertion' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Assertion.php', + 'Codeception\\Step\\Comment' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Comment.php', + 'Codeception\\Step\\Condition' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Condition.php', + 'Codeception\\Step\\ConditionalAssertion' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/ConditionalAssertion.php', + 'Codeception\\Step\\Executor' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Executor.php', + 'Codeception\\Step\\Incomplete' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Incomplete.php', + 'Codeception\\Step\\Meta' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Meta.php', + 'Codeception\\Step\\Skip' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Skip.php', + 'Codeception\\Stub' => __DIR__ . '/..' . '/codeception/stub/src/Stub.php', + 'Codeception\\Stub\\ConsecutiveMap' => __DIR__ . '/..' . '/codeception/stub/src/Stub/ConsecutiveMap.php', + 'Codeception\\Stub\\Expected' => __DIR__ . '/..' . '/codeception/stub/src/Stub/Expected.php', + 'Codeception\\Stub\\StubMarshaler' => __DIR__ . '/..' . '/codeception/stub/src/Stub/StubMarshaler.php', + 'Codeception\\Subscriber\\AutoRebuild' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/AutoRebuild.php', + 'Codeception\\Subscriber\\BeforeAfterTest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/BeforeAfterTest.php', + 'Codeception\\Subscriber\\Bootstrap' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Bootstrap.php', + 'Codeception\\Subscriber\\Console' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Console.php', + 'Codeception\\Subscriber\\Dependencies' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Dependencies.php', + 'Codeception\\Subscriber\\ErrorHandler' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/ErrorHandler.php', + 'Codeception\\Subscriber\\ExtensionLoader' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/ExtensionLoader.php', + 'Codeception\\Subscriber\\FailFast' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/FailFast.php', + 'Codeception\\Subscriber\\GracefulTermination' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/GracefulTermination.php', + 'Codeception\\Subscriber\\Module' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Module.php', + 'Codeception\\Subscriber\\PrepareTest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/PrepareTest.php', + 'Codeception\\Subscriber\\Shared\\StaticEvents' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Shared/StaticEvents.php', + 'Codeception\\Suite' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Suite.php', + 'Codeception\\SuiteManager' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/SuiteManager.php', + 'Codeception\\Template\\Acceptance' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Template/Acceptance.php', + 'Codeception\\Template\\Api' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Template/Api.php', + 'Codeception\\Template\\Bootstrap' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Template/Bootstrap.php', + 'Codeception\\Template\\Unit' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Template/Unit.php', + 'Codeception\\Template\\Wpbrowser' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Template/Wpbrowser.php', + 'Codeception\\TestCase\\WPAjaxTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPAjaxTestCase.php', + 'Codeception\\TestCase\\WPCanonicalTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPCanonicalTestCase.php', + 'Codeception\\TestCase\\WPRestApiTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestApiTestCase.php', + 'Codeception\\TestCase\\WPRestControllerTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestControllerTestCase.php', + 'Codeception\\TestCase\\WPRestPostTypeControllerTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestPostTypeControllerTestCase.php', + 'Codeception\\TestCase\\WPTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPTestCase.php', + 'Codeception\\TestCase\\WPXMLRPCTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPXMLRPCTestCase.php', + 'Codeception\\TestInterface' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/TestInterface.php', + 'Codeception\\Test\\Cept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Cept.php', + 'Codeception\\Test\\Cest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Cest.php', + 'Codeception\\Test\\Descriptor' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Descriptor.php', + 'Codeception\\Test\\Feature\\AssertionCounter' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/AssertionCounter.php', + 'Codeception\\Test\\Feature\\CodeCoverage' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/CodeCoverage.php', + 'Codeception\\Test\\Feature\\ErrorLogger' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/ErrorLogger.php', + 'Codeception\\Test\\Feature\\IgnoreIfMetadataBlocked' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/IgnoreIfMetadataBlocked.php', + 'Codeception\\Test\\Feature\\MetadataCollector' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/MetadataCollector.php', + 'Codeception\\Test\\Feature\\ScenarioLoader' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/ScenarioLoader.php', + 'Codeception\\Test\\Feature\\Stub' => __DIR__ . '/..' . '/codeception/stub/src/Test/Feature/Stub.php', + 'Codeception\\Test\\Gherkin' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Gherkin.php', + 'Codeception\\Test\\Interfaces\\Dependent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/Dependent.php', + 'Codeception\\Test\\Interfaces\\Descriptive' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/Descriptive.php', + 'Codeception\\Test\\Interfaces\\Plain' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/Plain.php', + 'Codeception\\Test\\Interfaces\\Reported' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/Reported.php', + 'Codeception\\Test\\Interfaces\\ScenarioDriven' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/ScenarioDriven.php', + 'Codeception\\Test\\Interfaces\\StrictCoverage' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/StrictCoverage.php', + 'Codeception\\Test\\Loader' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader.php', + 'Codeception\\Test\\Loader\\Cept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/Cept.php', + 'Codeception\\Test\\Loader\\Cest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/Cest.php', + 'Codeception\\Test\\Loader\\Gherkin' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/Gherkin.php', + 'Codeception\\Test\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/LoaderInterface.php', + 'Codeception\\Test\\Loader\\Unit' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/Unit.php', + 'Codeception\\Test\\Metadata' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Metadata.php', + 'Codeception\\Test\\Test' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Test.php', + 'Codeception\\Test\\Unit' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Unit.php', + 'Codeception\\Util\\ActionSequence' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/ActionSequence.php', + 'Codeception\\Util\\Annotation' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Annotation.php', + 'Codeception\\Util\\ArrayContainsComparator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/ArrayContainsComparator.php', + 'Codeception\\Util\\Autoload' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Autoload.php', + 'Codeception\\Util\\Debug' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Debug.php', + 'Codeception\\Util\\FileSystem' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/FileSystem.php', + 'Codeception\\Util\\Fixtures' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Fixtures.php', + 'Codeception\\Util\\HttpCode' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/HttpCode.php', + 'Codeception\\Util\\JsonArray' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/JsonArray.php', + 'Codeception\\Util\\JsonType' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/JsonType.php', + 'Codeception\\Util\\Locator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Locator.php', + 'Codeception\\Util\\Maybe' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Maybe.php', + 'Codeception\\Util\\PathResolver' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/PathResolver.php', + 'Codeception\\Util\\PropertyAccess' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/PropertyAccess.php', + 'Codeception\\Util\\ReflectionHelper' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/ReflectionHelper.php', + 'Codeception\\Util\\Shared\\Asserts' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Shared/Asserts.php', + 'Codeception\\Util\\Shared\\Namespaces' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Shared/Namespaces.php', + 'Codeception\\Util\\Soap' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Soap.php', + 'Codeception\\Util\\Stub' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Stub.php', + 'Codeception\\Util\\Template' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Template.php', + 'Codeception\\Util\\Uri' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Uri.php', + 'Codeception\\Util\\Xml' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Xml.php', + 'Codeception\\Util\\XmlBuilder' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/XmlBuilder.php', + 'Codeception\\Util\\XmlStructure' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/XmlStructure.php', + 'Comment_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Comment_Command.php', + 'Comment_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Comment_Meta_Command.php', + 'Composer\\Autoload\\AutoloadGenerator' => __DIR__ . '/..' . '/composer/composer/src/Composer/Autoload/AutoloadGenerator.php', + 'Composer\\Autoload\\ClassLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Autoload/ClassLoader.php', + 'Composer\\Autoload\\ClassMapGenerator' => __DIR__ . '/..' . '/composer/composer/src/Composer/Autoload/ClassMapGenerator.php', + 'Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php', + 'Composer\\Cache' => __DIR__ . '/..' . '/composer/composer/src/Composer/Cache.php', + 'Composer\\Command\\AboutCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/AboutCommand.php', + 'Composer\\Command\\ArchiveCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ArchiveCommand.php', + 'Composer\\Command\\BaseCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/BaseCommand.php', + 'Composer\\Command\\BaseDependencyCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/BaseDependencyCommand.php', + 'Composer\\Command\\CheckPlatformReqsCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php', + 'Composer\\Command\\ClearCacheCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ClearCacheCommand.php', + 'Composer\\Command\\ConfigCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ConfigCommand.php', + 'Composer\\Command\\CreateProjectCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/CreateProjectCommand.php', + 'Composer\\Command\\DependsCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/DependsCommand.php', + 'Composer\\Command\\DiagnoseCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/DiagnoseCommand.php', + 'Composer\\Command\\DumpAutoloadCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/DumpAutoloadCommand.php', + 'Composer\\Command\\ExecCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ExecCommand.php', + 'Composer\\Command\\GlobalCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/GlobalCommand.php', + 'Composer\\Command\\HomeCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/HomeCommand.php', + 'Composer\\Command\\InitCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/InitCommand.php', + 'Composer\\Command\\InstallCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/InstallCommand.php', + 'Composer\\Command\\LicensesCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/LicensesCommand.php', + 'Composer\\Command\\OutdatedCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/OutdatedCommand.php', + 'Composer\\Command\\ProhibitsCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ProhibitsCommand.php', + 'Composer\\Command\\RemoveCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/RemoveCommand.php', + 'Composer\\Command\\RequireCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/RequireCommand.php', + 'Composer\\Command\\RunScriptCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/RunScriptCommand.php', + 'Composer\\Command\\ScriptAliasCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ScriptAliasCommand.php', + 'Composer\\Command\\SearchCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/SearchCommand.php', + 'Composer\\Command\\SelfUpdateCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/SelfUpdateCommand.php', + 'Composer\\Command\\ShowCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ShowCommand.php', + 'Composer\\Command\\StatusCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/StatusCommand.php', + 'Composer\\Command\\SuggestsCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/SuggestsCommand.php', + 'Composer\\Command\\UpdateCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/UpdateCommand.php', + 'Composer\\Command\\ValidateCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ValidateCommand.php', + 'Composer\\Compiler' => __DIR__ . '/..' . '/composer/composer/src/Composer/Compiler.php', + 'Composer\\Composer' => __DIR__ . '/..' . '/composer/composer/src/Composer/Composer.php', + 'Composer\\Config' => __DIR__ . '/..' . '/composer/composer/src/Composer/Config.php', + 'Composer\\Config\\ConfigSourceInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Config/ConfigSourceInterface.php', + 'Composer\\Config\\JsonConfigSource' => __DIR__ . '/..' . '/composer/composer/src/Composer/Config/JsonConfigSource.php', + 'Composer\\Console\\Application' => __DIR__ . '/..' . '/composer/composer/src/Composer/Console/Application.php', + 'Composer\\Console\\HtmlOutputFormatter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Console/HtmlOutputFormatter.php', + 'Composer\\DependencyResolver\\Decisions' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Decisions.php', + 'Composer\\DependencyResolver\\DefaultPolicy' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php', + 'Composer\\DependencyResolver\\GenericRule' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/GenericRule.php', + 'Composer\\DependencyResolver\\Operation\\InstallOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php', + 'Composer\\DependencyResolver\\Operation\\MarkAliasInstalledOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php', + 'Composer\\DependencyResolver\\Operation\\MarkAliasUninstalledOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php', + 'Composer\\DependencyResolver\\Operation\\OperationInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php', + 'Composer\\DependencyResolver\\Operation\\SolverOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php', + 'Composer\\DependencyResolver\\Operation\\UninstallOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php', + 'Composer\\DependencyResolver\\Operation\\UpdateOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php', + 'Composer\\DependencyResolver\\PolicyInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php', + 'Composer\\DependencyResolver\\Pool' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Pool.php', + 'Composer\\DependencyResolver\\Problem' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Problem.php', + 'Composer\\DependencyResolver\\Request' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Request.php', + 'Composer\\DependencyResolver\\Rule' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Rule.php', + 'Composer\\DependencyResolver\\Rule2Literals' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php', + 'Composer\\DependencyResolver\\RuleSet' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleSet.php', + 'Composer\\DependencyResolver\\RuleSetGenerator' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php', + 'Composer\\DependencyResolver\\RuleSetIterator' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php', + 'Composer\\DependencyResolver\\RuleWatchChain' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php', + 'Composer\\DependencyResolver\\RuleWatchGraph' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php', + 'Composer\\DependencyResolver\\RuleWatchNode' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php', + 'Composer\\DependencyResolver\\Solver' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Solver.php', + 'Composer\\DependencyResolver\\SolverBugException' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/SolverBugException.php', + 'Composer\\DependencyResolver\\SolverProblemsException' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php', + 'Composer\\DependencyResolver\\Transaction' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Transaction.php', + 'Composer\\Downloader\\ArchiveDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/ArchiveDownloader.php', + 'Composer\\Downloader\\ChangeReportInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/ChangeReportInterface.php', + 'Composer\\Downloader\\DownloadManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/DownloadManager.php', + 'Composer\\Downloader\\DownloaderInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/DownloaderInterface.php', + 'Composer\\Downloader\\DvcsDownloaderInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php', + 'Composer\\Downloader\\FileDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/FileDownloader.php', + 'Composer\\Downloader\\FilesystemException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/FilesystemException.php', + 'Composer\\Downloader\\FossilDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/FossilDownloader.php', + 'Composer\\Downloader\\GitDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/GitDownloader.php', + 'Composer\\Downloader\\GzipDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/GzipDownloader.php', + 'Composer\\Downloader\\HgDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/HgDownloader.php', + 'Composer\\Downloader\\PathDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/PathDownloader.php', + 'Composer\\Downloader\\PearPackageExtractor' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/PearPackageExtractor.php', + 'Composer\\Downloader\\PerforceDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/PerforceDownloader.php', + 'Composer\\Downloader\\PharDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/PharDownloader.php', + 'Composer\\Downloader\\RarDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/RarDownloader.php', + 'Composer\\Downloader\\SvnDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/SvnDownloader.php', + 'Composer\\Downloader\\TarDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/TarDownloader.php', + 'Composer\\Downloader\\TransportException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/TransportException.php', + 'Composer\\Downloader\\VcsCapableDownloaderInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php', + 'Composer\\Downloader\\VcsDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/VcsDownloader.php', + 'Composer\\Downloader\\XzDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/XzDownloader.php', + 'Composer\\Downloader\\ZipDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/ZipDownloader.php', + 'Composer\\EventDispatcher\\Event' => __DIR__ . '/..' . '/composer/composer/src/Composer/EventDispatcher/Event.php', + 'Composer\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php', + 'Composer\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php', + 'Composer\\EventDispatcher\\ScriptExecutionException' => __DIR__ . '/..' . '/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php', + 'Composer\\Exception\\NoSslException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Exception/NoSslException.php', + 'Composer\\Factory' => __DIR__ . '/..' . '/composer/composer/src/Composer/Factory.php', + 'Composer\\IO\\BaseIO' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/BaseIO.php', + 'Composer\\IO\\BufferIO' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/BufferIO.php', + 'Composer\\IO\\ConsoleIO' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/ConsoleIO.php', + 'Composer\\IO\\IOInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/IOInterface.php', + 'Composer\\IO\\NullIO' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/NullIO.php', + 'Composer\\Installer' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer.php', + 'Composer\\Installer\\BinaryInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/BinaryInstaller.php', + 'Composer\\Installer\\BinaryPresenceInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php', + 'Composer\\Installer\\InstallationManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/InstallationManager.php', + 'Composer\\Installer\\InstallerEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/InstallerEvent.php', + 'Composer\\Installer\\InstallerEvents' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/InstallerEvents.php', + 'Composer\\Installer\\InstallerInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/InstallerInterface.php', + 'Composer\\Installer\\LibraryInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/LibraryInstaller.php', + 'Composer\\Installer\\MetapackageInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/MetapackageInstaller.php', + 'Composer\\Installer\\NoopInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/NoopInstaller.php', + 'Composer\\Installer\\PackageEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PackageEvent.php', + 'Composer\\Installer\\PackageEvents' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PackageEvents.php', + 'Composer\\Installer\\PearBinaryInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PearBinaryInstaller.php', + 'Composer\\Installer\\PearInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PearInstaller.php', + 'Composer\\Installer\\PluginInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PluginInstaller.php', + 'Composer\\Installer\\ProjectInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/ProjectInstaller.php', + 'Composer\\Installer\\SuggestedPackagesReporter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php', + 'Composer\\Json\\JsonFile' => __DIR__ . '/..' . '/composer/composer/src/Composer/Json/JsonFile.php', + 'Composer\\Json\\JsonFormatter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Json/JsonFormatter.php', + 'Composer\\Json\\JsonManipulator' => __DIR__ . '/..' . '/composer/composer/src/Composer/Json/JsonManipulator.php', + 'Composer\\Json\\JsonValidationException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Json/JsonValidationException.php', + 'Composer\\Package\\AliasPackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/AliasPackage.php', + 'Composer\\Package\\Archiver\\ArchivableFilesFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php', + 'Composer\\Package\\Archiver\\ArchivableFilesFinder' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php', + 'Composer\\Package\\Archiver\\ArchiveManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php', + 'Composer\\Package\\Archiver\\ArchiverInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php', + 'Composer\\Package\\Archiver\\BaseExcludeFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php', + 'Composer\\Package\\Archiver\\ComposerExcludeFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php', + 'Composer\\Package\\Archiver\\GitExcludeFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php', + 'Composer\\Package\\Archiver\\HgExcludeFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php', + 'Composer\\Package\\Archiver\\PharArchiver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/PharArchiver.php', + 'Composer\\Package\\Archiver\\ZipArchiver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php', + 'Composer\\Package\\BasePackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/BasePackage.php', + 'Composer\\Package\\Comparer\\Comparer' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Comparer/Comparer.php', + 'Composer\\Package\\CompletePackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/CompletePackage.php', + 'Composer\\Package\\CompletePackageInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/CompletePackageInterface.php', + 'Composer\\Package\\Dumper\\ArrayDumper' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php', + 'Composer\\Package\\Link' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Link.php', + 'Composer\\Package\\LinkConstraint\\EmptyConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php', + 'Composer\\Package\\LinkConstraint\\LinkConstraintInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php', + 'Composer\\Package\\LinkConstraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php', + 'Composer\\Package\\LinkConstraint\\SpecificConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php', + 'Composer\\Package\\LinkConstraint\\VersionConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php', + 'Composer\\Package\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/ArrayLoader.php', + 'Composer\\Package\\Loader\\InvalidPackageException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php', + 'Composer\\Package\\Loader\\JsonLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/JsonLoader.php', + 'Composer\\Package\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/LoaderInterface.php', + 'Composer\\Package\\Loader\\RootPackageLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php', + 'Composer\\Package\\Loader\\ValidatingArrayLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php', + 'Composer\\Package\\Locker' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Locker.php', + 'Composer\\Package\\Package' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Package.php', + 'Composer\\Package\\PackageInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/PackageInterface.php', + 'Composer\\Package\\RootAliasPackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/RootAliasPackage.php', + 'Composer\\Package\\RootPackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/RootPackage.php', + 'Composer\\Package\\RootPackageInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/RootPackageInterface.php', + 'Composer\\Package\\Version\\VersionGuesser' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Version/VersionGuesser.php', + 'Composer\\Package\\Version\\VersionParser' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Version/VersionParser.php', + 'Composer\\Package\\Version\\VersionSelector' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Version/VersionSelector.php', + 'Composer\\Plugin\\Capability\\Capability' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/Capability/Capability.php', + 'Composer\\Plugin\\Capability\\CommandProvider' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php', + 'Composer\\Plugin\\Capable' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/Capable.php', + 'Composer\\Plugin\\CommandEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/CommandEvent.php', + 'Composer\\Plugin\\PluginEvents' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PluginEvents.php', + 'Composer\\Plugin\\PluginInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PluginInterface.php', + 'Composer\\Plugin\\PluginManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PluginManager.php', + 'Composer\\Plugin\\PreCommandRunEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php', + 'Composer\\Plugin\\PreFileDownloadEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php', + 'Composer\\Question\\StrictConfirmationQuestion' => __DIR__ . '/..' . '/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php', + 'Composer\\Repository\\ArrayRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/ArrayRepository.php', + 'Composer\\Repository\\ArtifactRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/ArtifactRepository.php', + 'Composer\\Repository\\BaseRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/BaseRepository.php', + 'Composer\\Repository\\ComposerRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/ComposerRepository.php', + 'Composer\\Repository\\CompositeRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/CompositeRepository.php', + 'Composer\\Repository\\ConfigurableRepositoryInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php', + 'Composer\\Repository\\FilesystemRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/FilesystemRepository.php', + 'Composer\\Repository\\InstalledArrayRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/InstalledArrayRepository.php', + 'Composer\\Repository\\InstalledFilesystemRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php', + 'Composer\\Repository\\InstalledRepositoryInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php', + 'Composer\\Repository\\InvalidRepositoryException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/InvalidRepositoryException.php', + 'Composer\\Repository\\PackageRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/PackageRepository.php', + 'Composer\\Repository\\PathRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/PathRepository.php', + 'Composer\\Repository\\PearRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/PearRepository.php', + 'Composer\\Repository\\Pear\\BaseChannelReader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php', + 'Composer\\Repository\\Pear\\ChannelInfo' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php', + 'Composer\\Repository\\Pear\\ChannelReader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ChannelReader.php', + 'Composer\\Repository\\Pear\\ChannelRest10Reader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php', + 'Composer\\Repository\\Pear\\ChannelRest11Reader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php', + 'Composer\\Repository\\Pear\\DependencyConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php', + 'Composer\\Repository\\Pear\\DependencyInfo' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php', + 'Composer\\Repository\\Pear\\PackageDependencyParser' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php', + 'Composer\\Repository\\Pear\\PackageInfo' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/PackageInfo.php', + 'Composer\\Repository\\Pear\\ReleaseInfo' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php', + 'Composer\\Repository\\PlatformRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/PlatformRepository.php', + 'Composer\\Repository\\RepositoryFactory' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/RepositoryFactory.php', + 'Composer\\Repository\\RepositoryInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/RepositoryInterface.php', + 'Composer\\Repository\\RepositoryManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/RepositoryManager.php', + 'Composer\\Repository\\RepositorySecurityException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/RepositorySecurityException.php', + 'Composer\\Repository\\VcsRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/VcsRepository.php', + 'Composer\\Repository\\Vcs\\BitbucketDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php', + 'Composer\\Repository\\Vcs\\FossilDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php', + 'Composer\\Repository\\Vcs\\GitBitbucketDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php', + 'Composer\\Repository\\Vcs\\GitDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/GitDriver.php', + 'Composer\\Repository\\Vcs\\GitHubDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php', + 'Composer\\Repository\\Vcs\\GitLabDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php', + 'Composer\\Repository\\Vcs\\HgBitbucketDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php', + 'Composer\\Repository\\Vcs\\HgDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/HgDriver.php', + 'Composer\\Repository\\Vcs\\PerforceDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php', + 'Composer\\Repository\\Vcs\\SvnDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php', + 'Composer\\Repository\\Vcs\\VcsDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php', + 'Composer\\Repository\\Vcs\\VcsDriverInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php', + 'Composer\\Repository\\VersionCacheInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/VersionCacheInterface.php', + 'Composer\\Repository\\WritableArrayRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/WritableArrayRepository.php', + 'Composer\\Repository\\WritableRepositoryInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php', + 'Composer\\Script\\CommandEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Script/CommandEvent.php', + 'Composer\\Script\\Event' => __DIR__ . '/..' . '/composer/composer/src/Composer/Script/Event.php', + 'Composer\\Script\\PackageEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Script/PackageEvent.php', + 'Composer\\Script\\ScriptEvents' => __DIR__ . '/..' . '/composer/composer/src/Composer/Script/ScriptEvents.php', + 'Composer\\SelfUpdate\\Keys' => __DIR__ . '/..' . '/composer/composer/src/Composer/SelfUpdate/Keys.php', + 'Composer\\SelfUpdate\\Versions' => __DIR__ . '/..' . '/composer/composer/src/Composer/SelfUpdate/Versions.php', + 'Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php', + 'Composer\\Semver\\Constraint\\AbstractConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/AbstractConstraint.php', + 'Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php', + 'Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php', + 'Composer\\Semver\\Constraint\\EmptyConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/EmptyConstraint.php', + 'Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php', + 'Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php', + 'Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php', + 'Composer\\Spdx\\SpdxLicenses' => __DIR__ . '/..' . '/composer/spdx-licenses/src/SpdxLicenses.php', + 'Composer\\Util\\AuthHelper' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/AuthHelper.php', + 'Composer\\Util\\Bitbucket' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Bitbucket.php', + 'Composer\\Util\\ComposerMirror' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/ComposerMirror.php', + 'Composer\\Util\\ConfigValidator' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/ConfigValidator.php', + 'Composer\\Util\\ErrorHandler' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/ErrorHandler.php', + 'Composer\\Util\\Filesystem' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Filesystem.php', + 'Composer\\Util\\Git' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Git.php', + 'Composer\\Util\\GitHub' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/GitHub.php', + 'Composer\\Util\\GitLab' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/GitLab.php', + 'Composer\\Util\\Hg' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Hg.php', + 'Composer\\Util\\IniHelper' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/IniHelper.php', + 'Composer\\Util\\NoProxyPattern' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/NoProxyPattern.php', + 'Composer\\Util\\PackageSorter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/PackageSorter.php', + 'Composer\\Util\\Perforce' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Perforce.php', + 'Composer\\Util\\Platform' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Platform.php', + 'Composer\\Util\\ProcessExecutor' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/ProcessExecutor.php', + 'Composer\\Util\\RemoteFilesystem' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/RemoteFilesystem.php', + 'Composer\\Util\\Silencer' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Silencer.php', + 'Composer\\Util\\SpdxLicense' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/SpdxLicense.php', + 'Composer\\Util\\StreamContextFactory' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/StreamContextFactory.php', + 'Composer\\Util\\Svn' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Svn.php', + 'Composer\\Util\\TlsHelper' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/TlsHelper.php', + 'Composer\\Util\\Url' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Url.php', + 'Composer\\Util\\Zip' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Zip.php', + 'Composer\\XdebugHandler' => __DIR__ . '/..' . '/composer/composer/src/Composer/XdebugHandler.php', + 'Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php', + 'Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php', + 'Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php', + 'Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php', + 'Config_Command' => __DIR__ . '/..' . '/wp-cli/config-command/src/Config_Command.php', + 'Core_Command' => __DIR__ . '/..' . '/wp-cli/core-command/src/Core_Command.php', + 'Core_Command_Namespace' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Core_Command_Namespace.php', + 'Core_Language_Command' => __DIR__ . '/..' . '/wp-cli/language-command/src/Core_Language_Command.php', + 'Cron_Command' => __DIR__ . '/..' . '/wp-cli/cron-command/src/Cron_Command.php', + 'Cron_Event_Command' => __DIR__ . '/..' . '/wp-cli/cron-command/src/Cron_Event_Command.php', + 'Cron_Schedule_Command' => __DIR__ . '/..' . '/wp-cli/cron-command/src/Cron_Schedule_Command.php', + 'DB_Command' => __DIR__ . '/..' . '/wp-cli/db-command/src/DB_Command.php', + 'DeepCopy\\DeepCopy' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php', + 'DeepCopy\\Exception\\CloneException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php', + 'DeepCopy\\Exception\\PropertyException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php', + 'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', + 'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', + 'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', + 'DeepCopy\\Filter\\Filter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php', + 'DeepCopy\\Filter\\KeepFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php', + 'DeepCopy\\Filter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php', + 'DeepCopy\\Filter\\SetNullFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php', + 'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php', + 'DeepCopy\\Matcher\\Matcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php', + 'DeepCopy\\Matcher\\PropertyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php', + 'DeepCopy\\Matcher\\PropertyNameMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php', + 'DeepCopy\\Matcher\\PropertyTypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php', + 'DeepCopy\\Reflection\\ReflectionHelper' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php', + 'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php', + 'DeepCopy\\TypeFilter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php', + 'DeepCopy\\TypeFilter\\ShallowCopyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php', + 'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php', + 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php', + 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', + 'DeepCopy\\TypeFilter\\TypeFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', + 'DeepCopy\\TypeMatcher\\TypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', + 'Doctrine\\Common\\Inflector\\Inflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php', + 'Doctrine\\Instantiator\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php', + 'Doctrine\\Instantiator\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php', + 'Doctrine\\Instantiator\\Exception\\UnexpectedValueException' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php', + 'Doctrine\\Instantiator\\Instantiator' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php', + 'Doctrine\\Instantiator\\InstantiatorInterface' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php', + 'Dotenv\\Dotenv' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Dotenv.php', + 'Dotenv\\Environment\\AbstractVariables' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/AbstractVariables.php', + 'Dotenv\\Environment\\Adapter\\AdapterInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/AdapterInterface.php', + 'Dotenv\\Environment\\Adapter\\ApacheAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ApacheAdapter.php', + 'Dotenv\\Environment\\Adapter\\ArrayAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ArrayAdapter.php', + 'Dotenv\\Environment\\Adapter\\EnvConstAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/EnvConstAdapter.php', + 'Dotenv\\Environment\\Adapter\\PutenvAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/PutenvAdapter.php', + 'Dotenv\\Environment\\Adapter\\ServerConstAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ServerConstAdapter.php', + 'Dotenv\\Environment\\DotenvFactory' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/DotenvFactory.php', + 'Dotenv\\Environment\\DotenvVariables' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/DotenvVariables.php', + 'Dotenv\\Environment\\FactoryInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/FactoryInterface.php', + 'Dotenv\\Environment\\VariablesInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/VariablesInterface.php', + 'Dotenv\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/ExceptionInterface.php', + 'Dotenv\\Exception\\InvalidFileException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidFileException.php', + 'Dotenv\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidPathException.php', + 'Dotenv\\Exception\\ValidationException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/ValidationException.php', + 'Dotenv\\Lines' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Lines.php', + 'Dotenv\\Loader' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Loader.php', + 'Dotenv\\Parser' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser.php', + 'Dotenv\\Regex\\Error' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Error.php', + 'Dotenv\\Regex\\Regex' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Regex.php', + 'Dotenv\\Regex\\Result' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Result.php', + 'Dotenv\\Regex\\Success' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Success.php', + 'Dotenv\\Validator' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Validator.php', + 'EvalFile_Command' => __DIR__ . '/..' . '/wp-cli/eval-command/src/EvalFile_Command.php', + 'Eval_Command' => __DIR__ . '/..' . '/wp-cli/eval-command/src/Eval_Command.php', + 'Export_Command' => __DIR__ . '/..' . '/wp-cli/export-command/src/Export_Command.php', + 'Facebook\\WebDriver\\AbstractWebDriverCheckboxOrRadio' => __DIR__ . '/..' . '/facebook/webdriver/lib/AbstractWebDriverCheckboxOrRadio.php', + 'Facebook\\WebDriver\\Chrome\\ChromeDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/Chrome/ChromeDriver.php', + 'Facebook\\WebDriver\\Chrome\\ChromeDriverService' => __DIR__ . '/..' . '/facebook/webdriver/lib/Chrome/ChromeDriverService.php', + 'Facebook\\WebDriver\\Chrome\\ChromeOptions' => __DIR__ . '/..' . '/facebook/webdriver/lib/Chrome/ChromeOptions.php', + 'Facebook\\WebDriver\\Cookie' => __DIR__ . '/..' . '/facebook/webdriver/lib/Cookie.php', + 'Facebook\\WebDriver\\Exception\\ElementNotSelectableException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/ElementNotSelectableException.php', + 'Facebook\\WebDriver\\Exception\\ElementNotVisibleException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/ElementNotVisibleException.php', + 'Facebook\\WebDriver\\Exception\\ExpectedException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/ExpectedException.php', + 'Facebook\\WebDriver\\Exception\\IMEEngineActivationFailedException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/IMEEngineActivationFailedException.php', + 'Facebook\\WebDriver\\Exception\\IMENotAvailableException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/IMENotAvailableException.php', + 'Facebook\\WebDriver\\Exception\\IndexOutOfBoundsException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/IndexOutOfBoundsException.php', + 'Facebook\\WebDriver\\Exception\\InvalidCookieDomainException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/InvalidCookieDomainException.php', + 'Facebook\\WebDriver\\Exception\\InvalidCoordinatesException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/InvalidCoordinatesException.php', + 'Facebook\\WebDriver\\Exception\\InvalidElementStateException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/InvalidElementStateException.php', + 'Facebook\\WebDriver\\Exception\\InvalidSelectorException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/InvalidSelectorException.php', + 'Facebook\\WebDriver\\Exception\\MoveTargetOutOfBoundsException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/MoveTargetOutOfBoundsException.php', + 'Facebook\\WebDriver\\Exception\\NoAlertOpenException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoAlertOpenException.php', + 'Facebook\\WebDriver\\Exception\\NoCollectionException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoCollectionException.php', + 'Facebook\\WebDriver\\Exception\\NoScriptResultException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoScriptResultException.php', + 'Facebook\\WebDriver\\Exception\\NoStringException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoStringException.php', + 'Facebook\\WebDriver\\Exception\\NoStringLengthException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoStringLengthException.php', + 'Facebook\\WebDriver\\Exception\\NoStringWrapperException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoStringWrapperException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchCollectionException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchCollectionException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchDocumentException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchDocumentException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchDriverException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchDriverException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchElementException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchElementException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchFrameException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchFrameException.php', + 'Facebook\\WebDriver\\Exception\\NoSuchWindowException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchWindowException.php', + 'Facebook\\WebDriver\\Exception\\NullPointerException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NullPointerException.php', + 'Facebook\\WebDriver\\Exception\\ScriptTimeoutException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/ScriptTimeoutException.php', + 'Facebook\\WebDriver\\Exception\\SessionNotCreatedException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/SessionNotCreatedException.php', + 'Facebook\\WebDriver\\Exception\\StaleElementReferenceException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/StaleElementReferenceException.php', + 'Facebook\\WebDriver\\Exception\\TimeOutException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/TimeOutException.php', + 'Facebook\\WebDriver\\Exception\\UnableToSetCookieException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnableToSetCookieException.php', + 'Facebook\\WebDriver\\Exception\\UnexpectedAlertOpenException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnexpectedAlertOpenException.php', + 'Facebook\\WebDriver\\Exception\\UnexpectedJavascriptException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnexpectedJavascriptException.php', + 'Facebook\\WebDriver\\Exception\\UnexpectedTagNameException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnexpectedTagNameException.php', + 'Facebook\\WebDriver\\Exception\\UnknownCommandException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnknownCommandException.php', + 'Facebook\\WebDriver\\Exception\\UnknownServerException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnknownServerException.php', + 'Facebook\\WebDriver\\Exception\\UnrecognizedExceptionException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnrecognizedExceptionException.php', + 'Facebook\\WebDriver\\Exception\\UnsupportedOperationException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnsupportedOperationException.php', + 'Facebook\\WebDriver\\Exception\\WebDriverCurlException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/WebDriverCurlException.php', + 'Facebook\\WebDriver\\Exception\\WebDriverException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/WebDriverException.php', + 'Facebook\\WebDriver\\Exception\\XPathLookupException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/XPathLookupException.php', + 'Facebook\\WebDriver\\Firefox\\FirefoxDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/Firefox/FirefoxDriver.php', + 'Facebook\\WebDriver\\Firefox\\FirefoxPreferences' => __DIR__ . '/..' . '/facebook/webdriver/lib/Firefox/FirefoxPreferences.php', + 'Facebook\\WebDriver\\Firefox\\FirefoxProfile' => __DIR__ . '/..' . '/facebook/webdriver/lib/Firefox/FirefoxProfile.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverButtonReleaseAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverButtonReleaseAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverClickAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverClickAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverClickAndHoldAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverClickAndHoldAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverContextClickAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverContextClickAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverCoordinates' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverCoordinates.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverDoubleClickAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverDoubleClickAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeyDownAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeyDownAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeyUpAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeyUpAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeysRelatedAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeysRelatedAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMouseAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMouseAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMouseMoveAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMouseMoveAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMoveToOffsetAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMoveToOffsetAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverSendKeysAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverSendKeysAction.php', + 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverSingleKeyAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverSingleKeyAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverDoubleTapAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverDoubleTapAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverDownAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverDownAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverFlickAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverFlickAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverFlickFromElementAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverFlickFromElementAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverLongPressAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverLongPressAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverMoveAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverMoveAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverScrollAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverScrollAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverScrollFromElementAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverScrollFromElementAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTapAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTapAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTouchAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTouchAction.php', + 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTouchScreen' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTouchScreen.php', + 'Facebook\\WebDriver\\Interactions\\WebDriverActions' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/WebDriverActions.php', + 'Facebook\\WebDriver\\Interactions\\WebDriverCompositeAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/WebDriverCompositeAction.php', + 'Facebook\\WebDriver\\Interactions\\WebDriverTouchActions' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/WebDriverTouchActions.php', + 'Facebook\\WebDriver\\Internal\\WebDriverLocatable' => __DIR__ . '/..' . '/facebook/webdriver/lib/Internal/WebDriverLocatable.php', + 'Facebook\\WebDriver\\JavaScriptExecutor' => __DIR__ . '/..' . '/facebook/webdriver/lib/JavaScriptExecutor.php', + 'Facebook\\WebDriver\\Net\\URLChecker' => __DIR__ . '/..' . '/facebook/webdriver/lib/Net/URLChecker.php', + 'Facebook\\WebDriver\\Remote\\DesiredCapabilities' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/DesiredCapabilities.php', + 'Facebook\\WebDriver\\Remote\\DriverCommand' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/DriverCommand.php', + 'Facebook\\WebDriver\\Remote\\ExecuteMethod' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/ExecuteMethod.php', + 'Facebook\\WebDriver\\Remote\\FileDetector' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/FileDetector.php', + 'Facebook\\WebDriver\\Remote\\HttpCommandExecutor' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/HttpCommandExecutor.php', + 'Facebook\\WebDriver\\Remote\\LocalFileDetector' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/LocalFileDetector.php', + 'Facebook\\WebDriver\\Remote\\RemoteExecuteMethod' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteExecuteMethod.php', + 'Facebook\\WebDriver\\Remote\\RemoteKeyboard' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteKeyboard.php', + 'Facebook\\WebDriver\\Remote\\RemoteMouse' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteMouse.php', + 'Facebook\\WebDriver\\Remote\\RemoteTargetLocator' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteTargetLocator.php', + 'Facebook\\WebDriver\\Remote\\RemoteTouchScreen' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteTouchScreen.php', + 'Facebook\\WebDriver\\Remote\\RemoteWebDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteWebDriver.php', + 'Facebook\\WebDriver\\Remote\\RemoteWebElement' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteWebElement.php', + 'Facebook\\WebDriver\\Remote\\Service\\DriverCommandExecutor' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/Service/DriverCommandExecutor.php', + 'Facebook\\WebDriver\\Remote\\Service\\DriverService' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/Service/DriverService.php', + 'Facebook\\WebDriver\\Remote\\UselessFileDetector' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/UselessFileDetector.php', + 'Facebook\\WebDriver\\Remote\\WebDriverBrowserType' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/WebDriverBrowserType.php', + 'Facebook\\WebDriver\\Remote\\WebDriverCapabilityType' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/WebDriverCapabilityType.php', + 'Facebook\\WebDriver\\Remote\\WebDriverCommand' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/WebDriverCommand.php', + 'Facebook\\WebDriver\\Remote\\WebDriverResponse' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/WebDriverResponse.php', + 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/Support/Events/EventFiringWebDriver.php', + 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebDriverNavigation' => __DIR__ . '/..' . '/facebook/webdriver/lib/Support/Events/EventFiringWebDriverNavigation.php', + 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebElement' => __DIR__ . '/..' . '/facebook/webdriver/lib/Support/Events/EventFiringWebElement.php', + 'Facebook\\WebDriver\\Support\\XPathEscaper' => __DIR__ . '/..' . '/facebook/webdriver/lib/Support/XPathEscaper.php', + 'Facebook\\WebDriver\\WebDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriver.php', + 'Facebook\\WebDriver\\WebDriverAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverAction.php', + 'Facebook\\WebDriver\\WebDriverAlert' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverAlert.php', + 'Facebook\\WebDriver\\WebDriverBy' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverBy.php', + 'Facebook\\WebDriver\\WebDriverCapabilities' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverCapabilities.php', + 'Facebook\\WebDriver\\WebDriverCheckboxes' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverCheckboxes.php', + 'Facebook\\WebDriver\\WebDriverCommandExecutor' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverCommandExecutor.php', + 'Facebook\\WebDriver\\WebDriverDimension' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverDimension.php', + 'Facebook\\WebDriver\\WebDriverDispatcher' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverDispatcher.php', + 'Facebook\\WebDriver\\WebDriverElement' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverElement.php', + 'Facebook\\WebDriver\\WebDriverEventListener' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverEventListener.php', + 'Facebook\\WebDriver\\WebDriverExpectedCondition' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverExpectedCondition.php', + 'Facebook\\WebDriver\\WebDriverHasInputDevices' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverHasInputDevices.php', + 'Facebook\\WebDriver\\WebDriverKeyboard' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverKeyboard.php', + 'Facebook\\WebDriver\\WebDriverKeys' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverKeys.php', + 'Facebook\\WebDriver\\WebDriverMouse' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverMouse.php', + 'Facebook\\WebDriver\\WebDriverNavigation' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverNavigation.php', + 'Facebook\\WebDriver\\WebDriverOptions' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverOptions.php', + 'Facebook\\WebDriver\\WebDriverPlatform' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverPlatform.php', + 'Facebook\\WebDriver\\WebDriverPoint' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverPoint.php', + 'Facebook\\WebDriver\\WebDriverRadios' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverRadios.php', + 'Facebook\\WebDriver\\WebDriverSearchContext' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverSearchContext.php', + 'Facebook\\WebDriver\\WebDriverSelect' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverSelect.php', + 'Facebook\\WebDriver\\WebDriverSelectInterface' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverSelectInterface.php', + 'Facebook\\WebDriver\\WebDriverTargetLocator' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverTargetLocator.php', + 'Facebook\\WebDriver\\WebDriverTimeouts' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverTimeouts.php', + 'Facebook\\WebDriver\\WebDriverUpAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverUpAction.php', + 'Facebook\\WebDriver\\WebDriverWait' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverWait.php', + 'Facebook\\WebDriver\\WebDriverWindow' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverWindow.php', 'Firebase\\JWT\\BeforeValidException' => __DIR__ . '/..' . '/firebase/php-jwt/src/BeforeValidException.php', 'Firebase\\JWT\\ExpiredException' => __DIR__ . '/..' . '/firebase/php-jwt/src/ExpiredException.php', 'Firebase\\JWT\\JWT' => __DIR__ . '/..' . '/firebase/php-jwt/src/JWT.php', 'Firebase\\JWT\\SignatureInvalidException' => __DIR__ . '/..' . '/firebase/php-jwt/src/SignatureInvalidException.php', + 'Gettext\\BaseTranslator' => __DIR__ . '/..' . '/gettext/gettext/src/BaseTranslator.php', + 'Gettext\\Extractors\\Blade' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Blade.php', + 'Gettext\\Extractors\\Csv' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Csv.php', + 'Gettext\\Extractors\\CsvDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/CsvDictionary.php', + 'Gettext\\Extractors\\Extractor' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Extractor.php', + 'Gettext\\Extractors\\ExtractorInterface' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/ExtractorInterface.php', + 'Gettext\\Extractors\\ExtractorMultiInterface' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/ExtractorMultiInterface.php', + 'Gettext\\Extractors\\Jed' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Jed.php', + 'Gettext\\Extractors\\JsCode' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/JsCode.php', + 'Gettext\\Extractors\\Json' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Json.php', + 'Gettext\\Extractors\\JsonDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/JsonDictionary.php', + 'Gettext\\Extractors\\Mo' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Mo.php', + 'Gettext\\Extractors\\PhpArray' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/PhpArray.php', + 'Gettext\\Extractors\\PhpCode' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/PhpCode.php', + 'Gettext\\Extractors\\Po' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Po.php', + 'Gettext\\Extractors\\Twig' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Twig.php', + 'Gettext\\Extractors\\VueJs' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/VueJs.php', + 'Gettext\\Extractors\\Xliff' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Xliff.php', + 'Gettext\\Extractors\\Yaml' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Yaml.php', + 'Gettext\\Extractors\\YamlDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/YamlDictionary.php', + 'Gettext\\Generators\\Csv' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Csv.php', + 'Gettext\\Generators\\CsvDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/CsvDictionary.php', + 'Gettext\\Generators\\Generator' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Generator.php', + 'Gettext\\Generators\\GeneratorInterface' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/GeneratorInterface.php', + 'Gettext\\Generators\\Jed' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Jed.php', + 'Gettext\\Generators\\Json' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Json.php', + 'Gettext\\Generators\\JsonDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/JsonDictionary.php', + 'Gettext\\Generators\\Mo' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Mo.php', + 'Gettext\\Generators\\PhpArray' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/PhpArray.php', + 'Gettext\\Generators\\Po' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Po.php', + 'Gettext\\Generators\\Xliff' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Xliff.php', + 'Gettext\\Generators\\Yaml' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Yaml.php', + 'Gettext\\Generators\\YamlDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/YamlDictionary.php', + 'Gettext\\GettextTranslator' => __DIR__ . '/..' . '/gettext/gettext/src/GettextTranslator.php', + 'Gettext\\Languages\\Category' => __DIR__ . '/..' . '/gettext/languages/src/Category.php', + 'Gettext\\Languages\\CldrData' => __DIR__ . '/..' . '/gettext/languages/src/CldrData.php', + 'Gettext\\Languages\\Exporter\\Docs' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Docs.php', + 'Gettext\\Languages\\Exporter\\Exporter' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Exporter.php', + 'Gettext\\Languages\\Exporter\\Html' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Html.php', + 'Gettext\\Languages\\Exporter\\Json' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Json.php', + 'Gettext\\Languages\\Exporter\\Php' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Php.php', + 'Gettext\\Languages\\Exporter\\Po' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Po.php', + 'Gettext\\Languages\\Exporter\\Prettyjson' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Prettyjson.php', + 'Gettext\\Languages\\Exporter\\Xml' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Xml.php', + 'Gettext\\Languages\\FormulaConverter' => __DIR__ . '/..' . '/gettext/languages/src/FormulaConverter.php', + 'Gettext\\Languages\\Language' => __DIR__ . '/..' . '/gettext/languages/src/Language.php', + 'Gettext\\Merge' => __DIR__ . '/..' . '/gettext/gettext/src/Merge.php', + 'Gettext\\Translation' => __DIR__ . '/..' . '/gettext/gettext/src/Translation.php', + 'Gettext\\Translations' => __DIR__ . '/..' . '/gettext/gettext/src/Translations.php', + 'Gettext\\Translator' => __DIR__ . '/..' . '/gettext/gettext/src/Translator.php', + 'Gettext\\TranslatorInterface' => __DIR__ . '/..' . '/gettext/gettext/src/TranslatorInterface.php', + 'Gettext\\Utils\\CsvTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/CsvTrait.php', + 'Gettext\\Utils\\DictionaryTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/DictionaryTrait.php', + 'Gettext\\Utils\\FunctionsScanner' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/FunctionsScanner.php', + 'Gettext\\Utils\\HeadersExtractorTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/HeadersExtractorTrait.php', + 'Gettext\\Utils\\HeadersGeneratorTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/HeadersGeneratorTrait.php', + 'Gettext\\Utils\\JsFunctionsScanner' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/JsFunctionsScanner.php', + 'Gettext\\Utils\\MultidimensionalArrayTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/MultidimensionalArrayTrait.php', + 'Gettext\\Utils\\ParsedComment' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/ParsedComment.php', + 'Gettext\\Utils\\ParsedFunction' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/ParsedFunction.php', + 'Gettext\\Utils\\PhpFunctionsScanner' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/PhpFunctionsScanner.php', + 'Gettext\\Utils\\StringReader' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/StringReader.php', + 'Gumlet\\ImageResize' => __DIR__ . '/..' . '/gumlet/php-image-resize/lib/ImageResize.php', + 'Gumlet\\ImageResizeException' => __DIR__ . '/..' . '/gumlet/php-image-resize/lib/ImageResizeException.php', + 'GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php', + 'GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php', + 'GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', + 'GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', + 'GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', + 'GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', + 'GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', + 'GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', + 'GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php', + 'GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', + 'GuzzleHttp\\Exception\\GuzzleException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', + 'GuzzleHttp\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php', + 'GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php', + 'GuzzleHttp\\Exception\\SeekException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/SeekException.php', + 'GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php', + 'GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', + 'GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php', + 'GuzzleHttp\\HandlerStack' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HandlerStack.php', + 'GuzzleHttp\\Handler\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', + 'GuzzleHttp\\Handler\\CurlFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', + 'GuzzleHttp\\Handler\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', + 'GuzzleHttp\\Handler\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', + 'GuzzleHttp\\Handler\\EasyHandle' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', + 'GuzzleHttp\\Handler\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', + 'GuzzleHttp\\Handler\\Proxy' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/Proxy.php', + 'GuzzleHttp\\Handler\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', + 'GuzzleHttp\\MessageFormatter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatter.php', + 'GuzzleHttp\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Middleware.php', + 'GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php', + 'GuzzleHttp\\PrepareBodyMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', + 'GuzzleHttp\\Promise\\AggregateException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/AggregateException.php', + 'GuzzleHttp\\Promise\\CancellationException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/CancellationException.php', + 'GuzzleHttp\\Promise\\Coroutine' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Coroutine.php', + 'GuzzleHttp\\Promise\\EachPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/EachPromise.php', + 'GuzzleHttp\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/FulfilledPromise.php', + 'GuzzleHttp\\Promise\\Promise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Promise.php', + 'GuzzleHttp\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromiseInterface.php', + 'GuzzleHttp\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromisorInterface.php', + 'GuzzleHttp\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectedPromise.php', + 'GuzzleHttp\\Promise\\RejectionException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectionException.php', + 'GuzzleHttp\\Promise\\TaskQueue' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueue.php', + 'GuzzleHttp\\Promise\\TaskQueueInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueueInterface.php', + 'GuzzleHttp\\Psr7\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/AppendStream.php', + 'GuzzleHttp\\Psr7\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/BufferStream.php', + 'GuzzleHttp\\Psr7\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/CachingStream.php', + 'GuzzleHttp\\Psr7\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/DroppingStream.php', + 'GuzzleHttp\\Psr7\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/FnStream.php', + 'GuzzleHttp\\Psr7\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/InflateStream.php', + 'GuzzleHttp\\Psr7\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LazyOpenStream.php', + 'GuzzleHttp\\Psr7\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LimitStream.php', + 'GuzzleHttp\\Psr7\\MessageTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MessageTrait.php', + 'GuzzleHttp\\Psr7\\MultipartStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MultipartStream.php', + 'GuzzleHttp\\Psr7\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/NoSeekStream.php', + 'GuzzleHttp\\Psr7\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/PumpStream.php', + 'GuzzleHttp\\Psr7\\Request' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Request.php', + 'GuzzleHttp\\Psr7\\Response' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Response.php', + 'GuzzleHttp\\Psr7\\Rfc7230' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Rfc7230.php', + 'GuzzleHttp\\Psr7\\ServerRequest' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/ServerRequest.php', + 'GuzzleHttp\\Psr7\\Stream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Stream.php', + 'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', + 'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php', + 'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php', + 'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php', + 'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php', + 'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php', + 'GuzzleHttp\\RedirectMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', + 'GuzzleHttp\\RequestOptions' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestOptions.php', + 'GuzzleHttp\\RetryMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RetryMiddleware.php', + 'GuzzleHttp\\TransferStats' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/TransferStats.php', + 'GuzzleHttp\\UriTemplate' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/UriTemplate.php', + 'Handlebars\\Arguments' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Arguments.php', + 'Handlebars\\Autoloader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Autoloader.php', + 'Handlebars\\BaseString' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/BaseString.php', + 'Handlebars\\Cache' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Cache.php', + 'Handlebars\\Cache\\APC' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Cache/APC.php', + 'Handlebars\\Cache\\Disk' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Cache/Disk.php', + 'Handlebars\\Cache\\Dummy' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Cache/Dummy.php', + 'Handlebars\\ChildContext' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/ChildContext.php', + 'Handlebars\\Context' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Context.php', + 'Handlebars\\Handlebars' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Handlebars.php', + 'Handlebars\\Helper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper.php', + 'Handlebars\\Helper\\BindAttrHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/BindAttrHelper.php', + 'Handlebars\\Helper\\EachHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/EachHelper.php', + 'Handlebars\\Helper\\IfHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/IfHelper.php', + 'Handlebars\\Helper\\UnlessHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/UnlessHelper.php', + 'Handlebars\\Helper\\WithHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/WithHelper.php', + 'Handlebars\\Helpers' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helpers.php', + 'Handlebars\\Loader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader.php', + 'Handlebars\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader/ArrayLoader.php', + 'Handlebars\\Loader\\FilesystemLoader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader/FilesystemLoader.php', + 'Handlebars\\Loader\\InlineLoader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader/InlineLoader.php', + 'Handlebars\\Loader\\StringLoader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader/StringLoader.php', + 'Handlebars\\Parser' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Parser.php', + 'Handlebars\\SafeString' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/SafeString.php', + 'Handlebars\\String' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/String.php', + 'Handlebars\\StringWrapper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/StringWrapper.php', + 'Handlebars\\Template' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Template.php', + 'Handlebars\\Tokenizer' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Tokenizer.php', + 'Hautelook\\Phpass\\PasswordHash' => __DIR__ . '/..' . '/hautelook/phpass/src/Hautelook/Phpass/PasswordHash.php', + 'Illuminate\\Contracts\\Auth\\Access\\Authorizable' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Access/Authorizable.php', + 'Illuminate\\Contracts\\Auth\\Access\\Gate' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Access/Gate.php', + 'Illuminate\\Contracts\\Auth\\Authenticatable' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Authenticatable.php', + 'Illuminate\\Contracts\\Auth\\CanResetPassword' => __DIR__ . '/..' . '/illuminate/contracts/Auth/CanResetPassword.php', + 'Illuminate\\Contracts\\Auth\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Factory.php', + 'Illuminate\\Contracts\\Auth\\Guard' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Guard.php', + 'Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php', + 'Illuminate\\Contracts\\Auth\\MustVerifyEmail' => __DIR__ . '/..' . '/illuminate/contracts/Auth/MustVerifyEmail.php', + 'Illuminate\\Contracts\\Auth\\PasswordBroker' => __DIR__ . '/..' . '/illuminate/contracts/Auth/PasswordBroker.php', + 'Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => __DIR__ . '/..' . '/illuminate/contracts/Auth/PasswordBrokerFactory.php', + 'Illuminate\\Contracts\\Auth\\StatefulGuard' => __DIR__ . '/..' . '/illuminate/contracts/Auth/StatefulGuard.php', + 'Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => __DIR__ . '/..' . '/illuminate/contracts/Auth/SupportsBasicAuth.php', + 'Illuminate\\Contracts\\Auth\\UserProvider' => __DIR__ . '/..' . '/illuminate/contracts/Auth/UserProvider.php', + 'Illuminate\\Contracts\\Broadcasting\\Broadcaster' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/Broadcaster.php', + 'Illuminate\\Contracts\\Broadcasting\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/Factory.php', + 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBroadcast.php', + 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php', + 'Illuminate\\Contracts\\Bus\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Bus/Dispatcher.php', + 'Illuminate\\Contracts\\Bus\\QueueingDispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Bus/QueueingDispatcher.php', + 'Illuminate\\Contracts\\Cache\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Factory.php', + 'Illuminate\\Contracts\\Cache\\Lock' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Lock.php', + 'Illuminate\\Contracts\\Cache\\LockProvider' => __DIR__ . '/..' . '/illuminate/contracts/Cache/LockProvider.php', + 'Illuminate\\Contracts\\Cache\\LockTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Cache/LockTimeoutException.php', + 'Illuminate\\Contracts\\Cache\\Repository' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Repository.php', + 'Illuminate\\Contracts\\Cache\\Store' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Store.php', + 'Illuminate\\Contracts\\Config\\Repository' => __DIR__ . '/..' . '/illuminate/contracts/Config/Repository.php', + 'Illuminate\\Contracts\\Console\\Application' => __DIR__ . '/..' . '/illuminate/contracts/Console/Application.php', + 'Illuminate\\Contracts\\Console\\Kernel' => __DIR__ . '/..' . '/illuminate/contracts/Console/Kernel.php', + 'Illuminate\\Contracts\\Container\\BindingResolutionException' => __DIR__ . '/..' . '/illuminate/contracts/Container/BindingResolutionException.php', + 'Illuminate\\Contracts\\Container\\Container' => __DIR__ . '/..' . '/illuminate/contracts/Container/Container.php', + 'Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/illuminate/contracts/Container/ContextualBindingBuilder.php', + 'Illuminate\\Contracts\\Cookie\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Cookie/Factory.php', + 'Illuminate\\Contracts\\Cookie\\QueueingFactory' => __DIR__ . '/..' . '/illuminate/contracts/Cookie/QueueingFactory.php', + 'Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/CastsAttributes.php', + 'Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php', + 'Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => __DIR__ . '/..' . '/illuminate/contracts/Database/Events/MigrationEvent.php', + 'Illuminate\\Contracts\\Database\\ModelIdentifier' => __DIR__ . '/..' . '/illuminate/contracts/Database/ModelIdentifier.php', + 'Illuminate\\Contracts\\Debug\\ExceptionHandler' => __DIR__ . '/..' . '/illuminate/contracts/Debug/ExceptionHandler.php', + 'Illuminate\\Contracts\\Encryption\\DecryptException' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/DecryptException.php', + 'Illuminate\\Contracts\\Encryption\\EncryptException' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/EncryptException.php', + 'Illuminate\\Contracts\\Encryption\\Encrypter' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/Encrypter.php', + 'Illuminate\\Contracts\\Events\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Events/Dispatcher.php', + 'Illuminate\\Contracts\\Filesystem\\Cloud' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Cloud.php', + 'Illuminate\\Contracts\\Filesystem\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Factory.php', + 'Illuminate\\Contracts\\Filesystem\\FileExistsException' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/FileExistsException.php', + 'Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/FileNotFoundException.php', + 'Illuminate\\Contracts\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Filesystem.php', + 'Illuminate\\Contracts\\Foundation\\Application' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/Application.php', + 'Illuminate\\Contracts\\Foundation\\CachesConfiguration' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/CachesConfiguration.php', + 'Illuminate\\Contracts\\Foundation\\CachesRoutes' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/CachesRoutes.php', + 'Illuminate\\Contracts\\Hashing\\Hasher' => __DIR__ . '/..' . '/illuminate/contracts/Hashing/Hasher.php', + 'Illuminate\\Contracts\\Http\\Kernel' => __DIR__ . '/..' . '/illuminate/contracts/Http/Kernel.php', + 'Illuminate\\Contracts\\Mail\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Factory.php', + 'Illuminate\\Contracts\\Mail\\MailQueue' => __DIR__ . '/..' . '/illuminate/contracts/Mail/MailQueue.php', + 'Illuminate\\Contracts\\Mail\\Mailable' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Mailable.php', + 'Illuminate\\Contracts\\Mail\\Mailer' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Mailer.php', + 'Illuminate\\Contracts\\Notifications\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Notifications/Dispatcher.php', + 'Illuminate\\Contracts\\Notifications\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Notifications/Factory.php', + 'Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/LengthAwarePaginator.php', + 'Illuminate\\Contracts\\Pagination\\Paginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/Paginator.php', + 'Illuminate\\Contracts\\Pipeline\\Hub' => __DIR__ . '/..' . '/illuminate/contracts/Pipeline/Hub.php', + 'Illuminate\\Contracts\\Pipeline\\Pipeline' => __DIR__ . '/..' . '/illuminate/contracts/Pipeline/Pipeline.php', + 'Illuminate\\Contracts\\Queue\\EntityNotFoundException' => __DIR__ . '/..' . '/illuminate/contracts/Queue/EntityNotFoundException.php', + 'Illuminate\\Contracts\\Queue\\EntityResolver' => __DIR__ . '/..' . '/illuminate/contracts/Queue/EntityResolver.php', + 'Illuminate\\Contracts\\Queue\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Factory.php', + 'Illuminate\\Contracts\\Queue\\Job' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Job.php', + 'Illuminate\\Contracts\\Queue\\Monitor' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Monitor.php', + 'Illuminate\\Contracts\\Queue\\Queue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Queue.php', + 'Illuminate\\Contracts\\Queue\\QueueableCollection' => __DIR__ . '/..' . '/illuminate/contracts/Queue/QueueableCollection.php', + 'Illuminate\\Contracts\\Queue\\QueueableEntity' => __DIR__ . '/..' . '/illuminate/contracts/Queue/QueueableEntity.php', + 'Illuminate\\Contracts\\Queue\\ShouldQueue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldQueue.php', + 'Illuminate\\Contracts\\Redis\\Connection' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Connection.php', + 'Illuminate\\Contracts\\Redis\\Connector' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Connector.php', + 'Illuminate\\Contracts\\Redis\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Factory.php', + 'Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Redis/LimiterTimeoutException.php', + 'Illuminate\\Contracts\\Routing\\BindingRegistrar' => __DIR__ . '/..' . '/illuminate/contracts/Routing/BindingRegistrar.php', + 'Illuminate\\Contracts\\Routing\\Registrar' => __DIR__ . '/..' . '/illuminate/contracts/Routing/Registrar.php', + 'Illuminate\\Contracts\\Routing\\ResponseFactory' => __DIR__ . '/..' . '/illuminate/contracts/Routing/ResponseFactory.php', + 'Illuminate\\Contracts\\Routing\\UrlGenerator' => __DIR__ . '/..' . '/illuminate/contracts/Routing/UrlGenerator.php', + 'Illuminate\\Contracts\\Routing\\UrlRoutable' => __DIR__ . '/..' . '/illuminate/contracts/Routing/UrlRoutable.php', + 'Illuminate\\Contracts\\Session\\Session' => __DIR__ . '/..' . '/illuminate/contracts/Session/Session.php', + 'Illuminate\\Contracts\\Support\\Arrayable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Arrayable.php', + 'Illuminate\\Contracts\\Support\\DeferrableProvider' => __DIR__ . '/..' . '/illuminate/contracts/Support/DeferrableProvider.php', + 'Illuminate\\Contracts\\Support\\Htmlable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Htmlable.php', + 'Illuminate\\Contracts\\Support\\Jsonable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Jsonable.php', + 'Illuminate\\Contracts\\Support\\MessageBag' => __DIR__ . '/..' . '/illuminate/contracts/Support/MessageBag.php', + 'Illuminate\\Contracts\\Support\\MessageProvider' => __DIR__ . '/..' . '/illuminate/contracts/Support/MessageProvider.php', + 'Illuminate\\Contracts\\Support\\Renderable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Renderable.php', + 'Illuminate\\Contracts\\Support\\Responsable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Responsable.php', + 'Illuminate\\Contracts\\Translation\\HasLocalePreference' => __DIR__ . '/..' . '/illuminate/contracts/Translation/HasLocalePreference.php', + 'Illuminate\\Contracts\\Translation\\Loader' => __DIR__ . '/..' . '/illuminate/contracts/Translation/Loader.php', + 'Illuminate\\Contracts\\Translation\\Translator' => __DIR__ . '/..' . '/illuminate/contracts/Translation/Translator.php', + 'Illuminate\\Contracts\\Validation\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Factory.php', + 'Illuminate\\Contracts\\Validation\\ImplicitRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ImplicitRule.php', + 'Illuminate\\Contracts\\Validation\\Rule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Rule.php', + 'Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ValidatesWhenResolved.php', + 'Illuminate\\Contracts\\Validation\\Validator' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Validator.php', + 'Illuminate\\Contracts\\View\\Engine' => __DIR__ . '/..' . '/illuminate/contracts/View/Engine.php', + 'Illuminate\\Contracts\\View\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/View/Factory.php', + 'Illuminate\\Contracts\\View\\View' => __DIR__ . '/..' . '/illuminate/contracts/View/View.php', + 'Illuminate\\Support\\AggregateServiceProvider' => __DIR__ . '/..' . '/illuminate/support/AggregateServiceProvider.php', + 'Illuminate\\Support\\Arr' => __DIR__ . '/..' . '/illuminate/support/Arr.php', + 'Illuminate\\Support\\Carbon' => __DIR__ . '/..' . '/illuminate/support/Carbon.php', + 'Illuminate\\Support\\Collection' => __DIR__ . '/..' . '/illuminate/support/Collection.php', + 'Illuminate\\Support\\Composer' => __DIR__ . '/..' . '/illuminate/support/Composer.php', + 'Illuminate\\Support\\ConfigurationUrlParser' => __DIR__ . '/..' . '/illuminate/support/ConfigurationUrlParser.php', + 'Illuminate\\Support\\DateFactory' => __DIR__ . '/..' . '/illuminate/support/DateFactory.php', + 'Illuminate\\Support\\Enumerable' => __DIR__ . '/..' . '/illuminate/support/Enumerable.php', + 'Illuminate\\Support\\Env' => __DIR__ . '/..' . '/illuminate/support/Env.php', + 'Illuminate\\Support\\Facades\\App' => __DIR__ . '/..' . '/illuminate/support/Facades/App.php', + 'Illuminate\\Support\\Facades\\Artisan' => __DIR__ . '/..' . '/illuminate/support/Facades/Artisan.php', + 'Illuminate\\Support\\Facades\\Auth' => __DIR__ . '/..' . '/illuminate/support/Facades/Auth.php', + 'Illuminate\\Support\\Facades\\Blade' => __DIR__ . '/..' . '/illuminate/support/Facades/Blade.php', + 'Illuminate\\Support\\Facades\\Broadcast' => __DIR__ . '/..' . '/illuminate/support/Facades/Broadcast.php', + 'Illuminate\\Support\\Facades\\Bus' => __DIR__ . '/..' . '/illuminate/support/Facades/Bus.php', + 'Illuminate\\Support\\Facades\\Cache' => __DIR__ . '/..' . '/illuminate/support/Facades/Cache.php', + 'Illuminate\\Support\\Facades\\Config' => __DIR__ . '/..' . '/illuminate/support/Facades/Config.php', + 'Illuminate\\Support\\Facades\\Cookie' => __DIR__ . '/..' . '/illuminate/support/Facades/Cookie.php', + 'Illuminate\\Support\\Facades\\Crypt' => __DIR__ . '/..' . '/illuminate/support/Facades/Crypt.php', + 'Illuminate\\Support\\Facades\\DB' => __DIR__ . '/..' . '/illuminate/support/Facades/DB.php', + 'Illuminate\\Support\\Facades\\Date' => __DIR__ . '/..' . '/illuminate/support/Facades/Date.php', + 'Illuminate\\Support\\Facades\\Event' => __DIR__ . '/..' . '/illuminate/support/Facades/Event.php', + 'Illuminate\\Support\\Facades\\Facade' => __DIR__ . '/..' . '/illuminate/support/Facades/Facade.php', + 'Illuminate\\Support\\Facades\\File' => __DIR__ . '/..' . '/illuminate/support/Facades/File.php', + 'Illuminate\\Support\\Facades\\Gate' => __DIR__ . '/..' . '/illuminate/support/Facades/Gate.php', + 'Illuminate\\Support\\Facades\\Hash' => __DIR__ . '/..' . '/illuminate/support/Facades/Hash.php', + 'Illuminate\\Support\\Facades\\Http' => __DIR__ . '/..' . '/illuminate/support/Facades/Http.php', + 'Illuminate\\Support\\Facades\\Lang' => __DIR__ . '/..' . '/illuminate/support/Facades/Lang.php', + 'Illuminate\\Support\\Facades\\Log' => __DIR__ . '/..' . '/illuminate/support/Facades/Log.php', + 'Illuminate\\Support\\Facades\\Mail' => __DIR__ . '/..' . '/illuminate/support/Facades/Mail.php', + 'Illuminate\\Support\\Facades\\Notification' => __DIR__ . '/..' . '/illuminate/support/Facades/Notification.php', + 'Illuminate\\Support\\Facades\\Password' => __DIR__ . '/..' . '/illuminate/support/Facades/Password.php', + 'Illuminate\\Support\\Facades\\Queue' => __DIR__ . '/..' . '/illuminate/support/Facades/Queue.php', + 'Illuminate\\Support\\Facades\\Redirect' => __DIR__ . '/..' . '/illuminate/support/Facades/Redirect.php', + 'Illuminate\\Support\\Facades\\Redis' => __DIR__ . '/..' . '/illuminate/support/Facades/Redis.php', + 'Illuminate\\Support\\Facades\\Request' => __DIR__ . '/..' . '/illuminate/support/Facades/Request.php', + 'Illuminate\\Support\\Facades\\Response' => __DIR__ . '/..' . '/illuminate/support/Facades/Response.php', + 'Illuminate\\Support\\Facades\\Route' => __DIR__ . '/..' . '/illuminate/support/Facades/Route.php', + 'Illuminate\\Support\\Facades\\Schema' => __DIR__ . '/..' . '/illuminate/support/Facades/Schema.php', + 'Illuminate\\Support\\Facades\\Session' => __DIR__ . '/..' . '/illuminate/support/Facades/Session.php', + 'Illuminate\\Support\\Facades\\Storage' => __DIR__ . '/..' . '/illuminate/support/Facades/Storage.php', + 'Illuminate\\Support\\Facades\\URL' => __DIR__ . '/..' . '/illuminate/support/Facades/URL.php', + 'Illuminate\\Support\\Facades\\Validator' => __DIR__ . '/..' . '/illuminate/support/Facades/Validator.php', + 'Illuminate\\Support\\Facades\\View' => __DIR__ . '/..' . '/illuminate/support/Facades/View.php', + 'Illuminate\\Support\\Fluent' => __DIR__ . '/..' . '/illuminate/support/Fluent.php', + 'Illuminate\\Support\\HigherOrderCollectionProxy' => __DIR__ . '/..' . '/illuminate/support/HigherOrderCollectionProxy.php', + 'Illuminate\\Support\\HigherOrderTapProxy' => __DIR__ . '/..' . '/illuminate/support/HigherOrderTapProxy.php', + 'Illuminate\\Support\\HtmlString' => __DIR__ . '/..' . '/illuminate/support/HtmlString.php', + 'Illuminate\\Support\\InteractsWithTime' => __DIR__ . '/..' . '/illuminate/support/InteractsWithTime.php', + 'Illuminate\\Support\\LazyCollection' => __DIR__ . '/..' . '/illuminate/support/LazyCollection.php', + 'Illuminate\\Support\\Manager' => __DIR__ . '/..' . '/illuminate/support/Manager.php', + 'Illuminate\\Support\\MessageBag' => __DIR__ . '/..' . '/illuminate/support/MessageBag.php', + 'Illuminate\\Support\\NamespacedItemResolver' => __DIR__ . '/..' . '/illuminate/support/NamespacedItemResolver.php', + 'Illuminate\\Support\\Optional' => __DIR__ . '/..' . '/illuminate/support/Optional.php', + 'Illuminate\\Support\\Pluralizer' => __DIR__ . '/..' . '/illuminate/support/Pluralizer.php', + 'Illuminate\\Support\\ProcessUtils' => __DIR__ . '/..' . '/illuminate/support/ProcessUtils.php', + 'Illuminate\\Support\\ServiceProvider' => __DIR__ . '/..' . '/illuminate/support/ServiceProvider.php', + 'Illuminate\\Support\\Str' => __DIR__ . '/..' . '/illuminate/support/Str.php', + 'Illuminate\\Support\\Stringable' => __DIR__ . '/..' . '/illuminate/support/Stringable.php', + 'Illuminate\\Support\\Testing\\Fakes\\BusFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/BusFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\EventFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/EventFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\MailFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/MailFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\NotificationFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/NotificationFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\PendingMailFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/PendingMailFake.php', + 'Illuminate\\Support\\Testing\\Fakes\\QueueFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/QueueFake.php', + 'Illuminate\\Support\\Traits\\CapsuleManagerTrait' => __DIR__ . '/..' . '/illuminate/support/Traits/CapsuleManagerTrait.php', + 'Illuminate\\Support\\Traits\\EnumeratesValues' => __DIR__ . '/..' . '/illuminate/support/Traits/EnumeratesValues.php', + 'Illuminate\\Support\\Traits\\ForwardsCalls' => __DIR__ . '/..' . '/illuminate/support/Traits/ForwardsCalls.php', + 'Illuminate\\Support\\Traits\\Localizable' => __DIR__ . '/..' . '/illuminate/support/Traits/Localizable.php', + 'Illuminate\\Support\\Traits\\Macroable' => __DIR__ . '/..' . '/illuminate/support/Traits/Macroable.php', + 'Illuminate\\Support\\Traits\\Tappable' => __DIR__ . '/..' . '/illuminate/support/Traits/Tappable.php', + 'Illuminate\\Support\\ViewErrorBag' => __DIR__ . '/..' . '/illuminate/support/ViewErrorBag.php', + 'Import_Command' => __DIR__ . '/..' . '/wp-cli/import-command/src/Import_Command.php', + 'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', + 'JsonSchema\\Constraints\\BaseConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php', + 'JsonSchema\\Constraints\\CollectionConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php', + 'JsonSchema\\Constraints\\Constraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php', + 'JsonSchema\\Constraints\\ConstraintInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php', + 'JsonSchema\\Constraints\\EnumConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php', + 'JsonSchema\\Constraints\\Factory' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php', + 'JsonSchema\\Constraints\\FormatConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php', + 'JsonSchema\\Constraints\\NumberConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php', + 'JsonSchema\\Constraints\\ObjectConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php', + 'JsonSchema\\Constraints\\SchemaConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php', + 'JsonSchema\\Constraints\\StringConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php', + 'JsonSchema\\Constraints\\TypeCheck\\LooseTypeCheck' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php', + 'JsonSchema\\Constraints\\TypeCheck\\StrictTypeCheck' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php', + 'JsonSchema\\Constraints\\TypeCheck\\TypeCheckInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php', + 'JsonSchema\\Constraints\\TypeConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php', + 'JsonSchema\\Constraints\\UndefinedConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php', + 'JsonSchema\\Entity\\JsonPointer' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php', + 'JsonSchema\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php', + 'JsonSchema\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php', + 'JsonSchema\\Exception\\InvalidConfigException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php', + 'JsonSchema\\Exception\\InvalidSchemaException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php', + 'JsonSchema\\Exception\\InvalidSchemaMediaTypeException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php', + 'JsonSchema\\Exception\\InvalidSourceUriException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php', + 'JsonSchema\\Exception\\JsonDecodingException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php', + 'JsonSchema\\Exception\\ResourceNotFoundException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php', + 'JsonSchema\\Exception\\RuntimeException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php', + 'JsonSchema\\Exception\\UnresolvableJsonPointerException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php', + 'JsonSchema\\Exception\\UriResolverException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php', + 'JsonSchema\\Exception\\ValidationException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php', + 'JsonSchema\\Iterator\\ObjectIterator' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php', + 'JsonSchema\\Rfc3339' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php', + 'JsonSchema\\SchemaStorage' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php', + 'JsonSchema\\SchemaStorageInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php', + 'JsonSchema\\UriResolverInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php', + 'JsonSchema\\UriRetrieverInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php', + 'JsonSchema\\Uri\\Retrievers\\AbstractRetriever' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php', + 'JsonSchema\\Uri\\Retrievers\\Curl' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php', + 'JsonSchema\\Uri\\Retrievers\\FileGetContents' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php', + 'JsonSchema\\Uri\\Retrievers\\PredefinedArray' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php', + 'JsonSchema\\Uri\\Retrievers\\UriRetrieverInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php', + 'JsonSchema\\Uri\\UriResolver' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php', + 'JsonSchema\\Uri\\UriRetriever' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php', + 'JsonSchema\\Validator' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Validator.php', + 'Language_Namespace' => __DIR__ . '/..' . '/wp-cli/language-command/src/Language_Namespace.php', + 'Media_Command' => __DIR__ . '/..' . '/wp-cli/media-command/src/Media_Command.php', + 'Menu_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Menu_Command.php', + 'Menu_Item_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Menu_Item_Command.php', + 'Menu_Location_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Menu_Location_Command.php', + 'MikeMcLin\\WpPassword\\Contracts\\WpPassword' => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src/Contracts/WpPassword.php', + 'MikeMcLin\\WpPassword\\Facades\\WpPassword' => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src/Facades/WpPassword.php', + 'MikeMcLin\\WpPassword\\WpPassword' => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src/WpPassword.php', + 'MikeMcLin\\WpPassword\\WpPasswordProvider' => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src/WpPasswordProvider.php', + 'Mustache_Autoloader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Autoloader.php', + 'Mustache_Cache' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Cache.php', + 'Mustache_Cache_AbstractCache' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Cache/AbstractCache.php', + 'Mustache_Cache_FilesystemCache' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Cache/FilesystemCache.php', + 'Mustache_Cache_NoopCache' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Cache/NoopCache.php', + 'Mustache_Compiler' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Compiler.php', + 'Mustache_Context' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Context.php', + 'Mustache_Engine' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Engine.php', + 'Mustache_Exception' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception.php', + 'Mustache_Exception_InvalidArgumentException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php', + 'Mustache_Exception_LogicException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/LogicException.php', + 'Mustache_Exception_RuntimeException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/RuntimeException.php', + 'Mustache_Exception_SyntaxException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/SyntaxException.php', + 'Mustache_Exception_UnknownFilterException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php', + 'Mustache_Exception_UnknownHelperException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php', + 'Mustache_Exception_UnknownTemplateException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php', + 'Mustache_HelperCollection' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/HelperCollection.php', + 'Mustache_LambdaHelper' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/LambdaHelper.php', + 'Mustache_Loader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader.php', + 'Mustache_Loader_ArrayLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/ArrayLoader.php', + 'Mustache_Loader_CascadingLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/CascadingLoader.php', + 'Mustache_Loader_FilesystemLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php', + 'Mustache_Loader_InlineLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/InlineLoader.php', + 'Mustache_Loader_MutableLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/MutableLoader.php', + 'Mustache_Loader_ProductionFilesystemLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/ProductionFilesystemLoader.php', + 'Mustache_Loader_StringLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/StringLoader.php', + 'Mustache_Logger' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Logger.php', + 'Mustache_Logger_AbstractLogger' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Logger/AbstractLogger.php', + 'Mustache_Logger_StreamLogger' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Logger/StreamLogger.php', + 'Mustache_Parser' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Parser.php', + 'Mustache_Source' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Source.php', + 'Mustache_Source_FilesystemSource' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Source/FilesystemSource.php', + 'Mustache_Template' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Template.php', + 'Mustache_Tokenizer' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Tokenizer.php', + 'Mustangostang\\Spyc' => __DIR__ . '/..' . '/wp-cli/mustangostang-spyc/src/Spyc.php', + 'MySQLDump' => __DIR__ . '/..' . '/dg/mysql-dump/src/MySQLDump.php', + 'MySQLImport' => __DIR__ . '/..' . '/dg/mysql-dump/src/MySQLImport.php', + 'Network_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Network_Meta_Command.php', + 'Network_Namespace' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Network_Namespace.php', + 'Option_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Option_Command.php', + 'Oxymel' => __DIR__ . '/..' . '/nb/oxymel/Oxymel.php', + 'OxymelException' => __DIR__ . '/..' . '/nb/oxymel/Oxymel.php', + 'OxymelTest' => __DIR__ . '/..' . '/nb/oxymel/OxymelTest.php', + 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', + 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', + 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', + 'PHPUnit\\Framework\\Constraint\\ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', + 'PHPUnit\\Framework\\Constraint\\Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', + 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', + 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', + 'PHPUnit\\Framework\\Constraint\\Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', + 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php', + 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php', + 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php', + 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php', + 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', + 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', + 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', + 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', + 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', + 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', + 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', + 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', + 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', + 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', + 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', + 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', + 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', + 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php', + 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', + 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', + 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php', + 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', + 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php', + 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', + 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php', + 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php', + 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php', + 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php', + 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php', + 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', + 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', + 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', + 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php', + 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php', + 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', + 'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', + 'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php', + 'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php', + 'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php', + 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php', + 'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', + 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php', + 'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', + 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', + 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', + 'PHPUnit\\Framework\\InvalidParameterGroupException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php', + 'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php', + 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\Match' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Match.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/NamespaceMatch.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php', + 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', + 'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator.php', + 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation/Invocation.php', + 'PHPUnit\\Framework\\MockObject\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/InvocationMocker.php', + 'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation/ObjectInvocation.php', + 'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation/StaticInvocation.php', + 'PHPUnit\\Framework\\MockObject\\Invokable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invokable.php', + 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/AnyInvokedCount.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/AnyParameters.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\DeferredError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/DeferredError.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/Invocation.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtIndex.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedCount.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedRecorder.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/MethodName.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/Parameters.php', + 'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/StatelessInvocation.php', + 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', + 'PHPUnit\\Framework\\MockObject\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php', + 'PHPUnit\\Framework\\MockObject\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php', + 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ForwardCompatibility/MockObject.php', + 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/MatcherCollection.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php', + 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php', + 'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php', + 'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php', + 'PHPUnit\\Framework\\RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php', + 'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php', + 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', + 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php', + 'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', + 'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php', + 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', + 'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php', + 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php', + 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php', + 'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php', + 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php', + 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php', + 'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php', + 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', + 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', + 'PHPUnit\\Framework\\UnexpectedValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnexpectedValueException.php', + 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', + 'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php', + 'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php', + 'PHPUnit\\Runner\\AfterIncompleteTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php', + 'PHPUnit\\Runner\\AfterLastTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php', + 'PHPUnit\\Runner\\AfterRiskyTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php', + 'PHPUnit\\Runner\\AfterSkippedTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php', + 'PHPUnit\\Runner\\AfterSuccessfulTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php', + 'PHPUnit\\Runner\\AfterTestErrorHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php', + 'PHPUnit\\Runner\\AfterTestFailureHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php', + 'PHPUnit\\Runner\\AfterTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php', + 'PHPUnit\\Runner\\AfterTestWarningHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php', + 'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', + 'PHPUnit\\Runner\\BeforeFirstTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php', + 'PHPUnit\\Runner\\BeforeTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php', + 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php', + 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php', + 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php', + 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php', + 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php', + 'PHPUnit\\Runner\\Hook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/Hook.php', + 'PHPUnit\\Runner\\NullTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/NullTestResultCache.php', + 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php', + 'PHPUnit\\Runner\\ResultCacheExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php', + 'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', + 'PHPUnit\\Runner\\TestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestHook.php', + 'PHPUnit\\Runner\\TestListenerAdapter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php', + 'PHPUnit\\Runner\\TestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestResultCache.php', + 'PHPUnit\\Runner\\TestResultCacheInterface' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestResultCacheInterface.php', + 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', + 'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', + 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php', + 'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit\\Util\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit\\Util\\ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php', + 'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php', + 'PHPUnit\\Util\\FileLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/FileLoader.php', + 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php', + 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php', + 'PHPUnit\\Util\\Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php', + 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php', + 'PHPUnit\\Util\\InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', + 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php', + 'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php', + 'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php', + 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php', + 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php', + 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php', + 'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php', + 'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php', + 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php', + 'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php', + 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php', + 'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', + 'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', + 'PHPUnit\\Util\\TestDox\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TestResult.php', + 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php', + 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php', + 'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php', + 'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php', + 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php', + 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php', + 'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php', + 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php', + 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php', + 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', + 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Util' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Util.php', + 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'Package_Command' => __DIR__ . '/..' . '/wp-cli/package-command/src/Package_Command.php', + 'Peast\\Formatter\\Base' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Formatter/Base.php', + 'Peast\\Formatter\\Compact' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Formatter/Compact.php', + 'Peast\\Formatter\\Expanded' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Formatter/Expanded.php', + 'Peast\\Formatter\\PrettyPrint' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Formatter/PrettyPrint.php', + 'Peast\\Peast' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Peast.php', + 'Peast\\Renderer' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Renderer.php', + 'Peast\\Syntax\\CommentsRegistry' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/CommentsRegistry.php', + 'Peast\\Syntax\\ES2015\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2015/Features.php', + 'Peast\\Syntax\\ES2016\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2016/Features.php', + 'Peast\\Syntax\\ES2017\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2017/Features.php', + 'Peast\\Syntax\\ES2018\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2018/Features.php', + 'Peast\\Syntax\\ES2019\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2019/Features.php', + 'Peast\\Syntax\\ES2020\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2020/Features.php', + 'Peast\\Syntax\\EncodingException' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/EncodingException.php', + 'Peast\\Syntax\\EventsEmitter' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/EventsEmitter.php', + 'Peast\\Syntax\\Exception' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Exception.php', + 'Peast\\Syntax\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Features.php', + 'Peast\\Syntax\\JSX\\Parser' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/JSX/Parser.php', + 'Peast\\Syntax\\JSX\\Scanner' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/JSX/Scanner.php', + 'Peast\\Syntax\\LSM' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/LSM.php', + 'Peast\\Syntax\\Node\\ArrayExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ArrayExpression.php', + 'Peast\\Syntax\\Node\\ArrayPattern' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ArrayPattern.php', + 'Peast\\Syntax\\Node\\ArrowFunctionExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ArrowFunctionExpression.php', + 'Peast\\Syntax\\Node\\AssignmentExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentExpression.php', + 'Peast\\Syntax\\Node\\AssignmentPattern' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentPattern.php', + 'Peast\\Syntax\\Node\\AssignmentProperty' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentProperty.php', + 'Peast\\Syntax\\Node\\AwaitExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/AwaitExpression.php', + 'Peast\\Syntax\\Node\\BigIntLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BigIntLiteral.php', + 'Peast\\Syntax\\Node\\BinaryExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BinaryExpression.php', + 'Peast\\Syntax\\Node\\BlockStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BlockStatement.php', + 'Peast\\Syntax\\Node\\BooleanLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BooleanLiteral.php', + 'Peast\\Syntax\\Node\\BreakStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BreakStatement.php', + 'Peast\\Syntax\\Node\\CallExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/CallExpression.php', + 'Peast\\Syntax\\Node\\CatchClause' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/CatchClause.php', + 'Peast\\Syntax\\Node\\ClassBody' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ClassBody.php', + 'Peast\\Syntax\\Node\\ClassDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ClassDeclaration.php', + 'Peast\\Syntax\\Node\\ClassExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ClassExpression.php', + 'Peast\\Syntax\\Node\\Class_' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Class_.php', + 'Peast\\Syntax\\Node\\Comment' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Comment.php', + 'Peast\\Syntax\\Node\\ConditionalExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ConditionalExpression.php', + 'Peast\\Syntax\\Node\\ContinueStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ContinueStatement.php', + 'Peast\\Syntax\\Node\\DebuggerStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/DebuggerStatement.php', + 'Peast\\Syntax\\Node\\Declaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Declaration.php', + 'Peast\\Syntax\\Node\\DoWhileStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/DoWhileStatement.php', + 'Peast\\Syntax\\Node\\EmptyStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/EmptyStatement.php', + 'Peast\\Syntax\\Node\\ExportAllDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExportAllDeclaration.php', + 'Peast\\Syntax\\Node\\ExportDefaultDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExportDefaultDeclaration.php', + 'Peast\\Syntax\\Node\\ExportNamedDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExportNamedDeclaration.php', + 'Peast\\Syntax\\Node\\ExportSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExportSpecifier.php', + 'Peast\\Syntax\\Node\\Expression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Expression.php', + 'Peast\\Syntax\\Node\\ExpressionStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExpressionStatement.php', + 'Peast\\Syntax\\Node\\ForInStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ForInStatement.php', + 'Peast\\Syntax\\Node\\ForOfStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ForOfStatement.php', + 'Peast\\Syntax\\Node\\ForStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ForStatement.php', + 'Peast\\Syntax\\Node\\FunctionDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/FunctionDeclaration.php', + 'Peast\\Syntax\\Node\\FunctionExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/FunctionExpression.php', + 'Peast\\Syntax\\Node\\Function_' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Function_.php', + 'Peast\\Syntax\\Node\\Identifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Identifier.php', + 'Peast\\Syntax\\Node\\IfStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/IfStatement.php', + 'Peast\\Syntax\\Node\\ImportDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportDeclaration.php', + 'Peast\\Syntax\\Node\\ImportDefaultSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportDefaultSpecifier.php', + 'Peast\\Syntax\\Node\\ImportExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportExpression.php', + 'Peast\\Syntax\\Node\\ImportNamespaceSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportNamespaceSpecifier.php', + 'Peast\\Syntax\\Node\\ImportSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportSpecifier.php', + 'Peast\\Syntax\\Node\\JSX\\JSXAttribute' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXAttribute.php', + 'Peast\\Syntax\\Node\\JSX\\JSXBoundaryElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXBoundaryElement.php', + 'Peast\\Syntax\\Node\\JSX\\JSXClosingElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingElement.php', + 'Peast\\Syntax\\Node\\JSX\\JSXClosingFragment' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingFragment.php', + 'Peast\\Syntax\\Node\\JSX\\JSXElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXElement.php', + 'Peast\\Syntax\\Node\\JSX\\JSXEmptyExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXEmptyExpression.php', + 'Peast\\Syntax\\Node\\JSX\\JSXExpressionContainer' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXExpressionContainer.php', + 'Peast\\Syntax\\Node\\JSX\\JSXFragment' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXFragment.php', + 'Peast\\Syntax\\Node\\JSX\\JSXIdentifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXIdentifier.php', + 'Peast\\Syntax\\Node\\JSX\\JSXMemberExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXMemberExpression.php', + 'Peast\\Syntax\\Node\\JSX\\JSXNamespacedName' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXNamespacedName.php', + 'Peast\\Syntax\\Node\\JSX\\JSXOpeningElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningElement.php', + 'Peast\\Syntax\\Node\\JSX\\JSXOpeningFragment' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningFragment.php', + 'Peast\\Syntax\\Node\\JSX\\JSXSpreadAttribute' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadAttribute.php', + 'Peast\\Syntax\\Node\\JSX\\JSXSpreadChild' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadChild.php', + 'Peast\\Syntax\\Node\\JSX\\JSXText' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXText.php', + 'Peast\\Syntax\\Node\\LabeledStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/LabeledStatement.php', + 'Peast\\Syntax\\Node\\Literal' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Literal.php', + 'Peast\\Syntax\\Node\\LogicalExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/LogicalExpression.php', + 'Peast\\Syntax\\Node\\MemberExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/MemberExpression.php', + 'Peast\\Syntax\\Node\\MetaProperty' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/MetaProperty.php', + 'Peast\\Syntax\\Node\\MethodDefinition' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/MethodDefinition.php', + 'Peast\\Syntax\\Node\\ModuleDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ModuleDeclaration.php', + 'Peast\\Syntax\\Node\\ModuleSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ModuleSpecifier.php', + 'Peast\\Syntax\\Node\\NewExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/NewExpression.php', + 'Peast\\Syntax\\Node\\Node' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Node.php', + 'Peast\\Syntax\\Node\\NullLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/NullLiteral.php', + 'Peast\\Syntax\\Node\\NumericLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/NumericLiteral.php', + 'Peast\\Syntax\\Node\\ObjectExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ObjectExpression.php', + 'Peast\\Syntax\\Node\\ObjectPattern' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ObjectPattern.php', + 'Peast\\Syntax\\Node\\ParenthesizedExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ParenthesizedExpression.php', + 'Peast\\Syntax\\Node\\Pattern' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Pattern.php', + 'Peast\\Syntax\\Node\\Program' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Program.php', + 'Peast\\Syntax\\Node\\Property' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Property.php', + 'Peast\\Syntax\\Node\\RegExpLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/RegExpLiteral.php', + 'Peast\\Syntax\\Node\\RestElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/RestElement.php', + 'Peast\\Syntax\\Node\\ReturnStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ReturnStatement.php', + 'Peast\\Syntax\\Node\\SequenceExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/SequenceExpression.php', + 'Peast\\Syntax\\Node\\SpreadElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/SpreadElement.php', + 'Peast\\Syntax\\Node\\Statement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Statement.php', + 'Peast\\Syntax\\Node\\StringLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/StringLiteral.php', + 'Peast\\Syntax\\Node\\Super' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Super.php', + 'Peast\\Syntax\\Node\\SwitchCase' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/SwitchCase.php', + 'Peast\\Syntax\\Node\\SwitchStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/SwitchStatement.php', + 'Peast\\Syntax\\Node\\TaggedTemplateExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/TaggedTemplateExpression.php', + 'Peast\\Syntax\\Node\\TemplateElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/TemplateElement.php', + 'Peast\\Syntax\\Node\\TemplateLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/TemplateLiteral.php', + 'Peast\\Syntax\\Node\\ThisExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ThisExpression.php', + 'Peast\\Syntax\\Node\\ThrowStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ThrowStatement.php', + 'Peast\\Syntax\\Node\\TryStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/TryStatement.php', + 'Peast\\Syntax\\Node\\UnaryExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/UnaryExpression.php', + 'Peast\\Syntax\\Node\\UpdateExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/UpdateExpression.php', + 'Peast\\Syntax\\Node\\VariableDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/VariableDeclaration.php', + 'Peast\\Syntax\\Node\\VariableDeclarator' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/VariableDeclarator.php', + 'Peast\\Syntax\\Node\\WhileStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/WhileStatement.php', + 'Peast\\Syntax\\Node\\WithStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/WithStatement.php', + 'Peast\\Syntax\\Node\\YieldExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/YieldExpression.php', + 'Peast\\Syntax\\Parser' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Parser.php', + 'Peast\\Syntax\\ParserAbstract' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ParserAbstract.php', + 'Peast\\Syntax\\Position' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Position.php', + 'Peast\\Syntax\\Scanner' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Scanner.php', + 'Peast\\Syntax\\SourceLocation' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/SourceLocation.php', + 'Peast\\Syntax\\Token' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Token.php', + 'Peast\\Syntax\\Utils' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Utils.php', + 'Peast\\Traverser' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Traverser.php', + 'Peast\\test\\PeastTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/PeastTest.php', + 'Peast\\test\\Syntax\\CommentsRegistryTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/CommentsRegistryTest.php', + 'Peast\\test\\Syntax\\ES2015\\ES2015Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2015/ES2015Test.php', + 'Peast\\test\\Syntax\\ES2016\\ES2016Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2016/ES2016Test.php', + 'Peast\\test\\Syntax\\ES2017\\ES2017Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2017/ES2017Test.php', + 'Peast\\test\\Syntax\\ES2018\\ES2018Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2018/ES2018Test.php', + 'Peast\\test\\Syntax\\ES2019\\ES2019Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2019/ES2019Test.php', + 'Peast\\test\\Syntax\\ES2020\\ES2020Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2020/ES2020Test.php', + 'Peast\\test\\Syntax\\Node\\BooleanLiteralTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/BooleanLiteralTest.php', + 'Peast\\test\\Syntax\\Node\\CommentTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/CommentTest.php', + 'Peast\\test\\Syntax\\Node\\NullLiteralTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/NullLiteralTest.php', + 'Peast\\test\\Syntax\\Node\\NumericLiteralTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/NumericLiteralTest.php', + 'Peast\\test\\Syntax\\Node\\StringLiteralTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/StringLiteralTest.php', + 'Peast\\test\\Syntax\\ScannerTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ScannerTest.php', + 'Peast\\test\\TestBase' => __DIR__ . '/..' . '/mck89/peast/test/Peast/TestBase.php', + 'Peast\\test\\TestCaseBase' => __DIR__ . '/..' . '/mck89/peast/test/Peast/TestCaseBase.php', + 'Peast\\test\\TestParser' => __DIR__ . '/..' . '/mck89/peast/test/Peast/TestParser.php', + 'Peast\\test\\Traverser\\RendererTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/RendererTest.php', + 'Peast\\test\\Traverser\\TraverserTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/TraverserTest.php', + 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php', + 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php', + 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php', + 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php', + 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php', + 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php', + 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php', + 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php', + 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php', + 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php', + 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php', + 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php', + 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php', + 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php', + 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php', + 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php', + 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php', + 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php', + 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php', + 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php', + 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php', + 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php', + 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php', + 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php', + 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php', + 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php', + 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php', + 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php', + 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php', + 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php', + 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php', + 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php', + 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php', + 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php', + 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php', + 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php', + 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php', + 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php', + 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php', + 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php', + 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php', + 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php', + 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php', + 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php', + 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php', + 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php', + 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php', + 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php', + 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php', + 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AbstractVersionConstraint.php', + 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php', + 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AnyVersionConstraint.php', + 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/ExactVersionConstraint.php', + 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/Exception.php', + 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php', + 'PharIo\\Version\\InvalidPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php', + 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidVersionException.php', + 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php', + 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php', + 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', + 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php', + 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php', + 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php', + 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/VersionConstraint.php', + 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php', + 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php', + 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php', + 'PhpOption\\LazyOption' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/LazyOption.php', + 'PhpOption\\None' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/None.php', + 'PhpOption\\Option' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Option.php', + 'PhpOption\\Some' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Some.php', + 'Plugin_Command' => __DIR__ . '/..' . '/wp-cli/extension-command/src/Plugin_Command.php', + 'Plugin_Command_Namespace' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Plugin_Command_Namespace.php', + 'Plugin_Language_Command' => __DIR__ . '/..' . '/wp-cli/language-command/src/Plugin_Language_Command.php', + 'Post_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Post_Command.php', + 'Post_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Post_Meta_Command.php', + 'Post_Term_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Post_Term_Command.php', + 'Post_Type_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Post_Type_Command.php', + 'Prophecy\\Argument' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument.php', + 'Prophecy\\Argument\\ArgumentsWildcard' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php', + 'Prophecy\\Argument\\Token\\AnyValueToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php', + 'Prophecy\\Argument\\Token\\AnyValuesToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php', + 'Prophecy\\Argument\\Token\\ApproximateValueToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php', + 'Prophecy\\Argument\\Token\\ArrayCountToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php', + 'Prophecy\\Argument\\Token\\ArrayEntryToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php', + 'Prophecy\\Argument\\Token\\ArrayEveryEntryToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php', + 'Prophecy\\Argument\\Token\\CallbackToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php', + 'Prophecy\\Argument\\Token\\ExactValueToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php', + 'Prophecy\\Argument\\Token\\IdenticalValueToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php', + 'Prophecy\\Argument\\Token\\LogicalAndToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php', + 'Prophecy\\Argument\\Token\\LogicalNotToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php', + 'Prophecy\\Argument\\Token\\ObjectStateToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php', + 'Prophecy\\Argument\\Token\\StringContainsToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php', + 'Prophecy\\Argument\\Token\\TokenInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php', + 'Prophecy\\Argument\\Token\\TypeToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php', + 'Prophecy\\Call\\Call' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Call/Call.php', + 'Prophecy\\Call\\CallCenter' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Call/CallCenter.php', + 'Prophecy\\Comparator\\ClosureComparator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php', + 'Prophecy\\Comparator\\Factory' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Comparator/Factory.php', + 'Prophecy\\Comparator\\ProphecyComparator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php', + 'Prophecy\\Doubler\\CachedDoubler' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php', + 'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php', + 'Prophecy\\Doubler\\ClassPatch\\DisableConstructorPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\HhvmExceptionPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\KeywordPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\MagicCallPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\ProphecySubjectPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\ReflectionClassNewInstancePatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php', + 'Prophecy\\Doubler\\ClassPatch\\SplFileInfoPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php', + 'Prophecy\\Doubler\\ClassPatch\\ThrowablePatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php', + 'Prophecy\\Doubler\\ClassPatch\\TraversablePatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php', + 'Prophecy\\Doubler\\DoubleInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php', + 'Prophecy\\Doubler\\Doubler' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php', + 'Prophecy\\Doubler\\Generator\\ClassCodeGenerator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php', + 'Prophecy\\Doubler\\Generator\\ClassCreator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php', + 'Prophecy\\Doubler\\Generator\\ClassMirror' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php', + 'Prophecy\\Doubler\\Generator\\Node\\ArgumentNode' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php', + 'Prophecy\\Doubler\\Generator\\Node\\ClassNode' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php', + 'Prophecy\\Doubler\\Generator\\Node\\MethodNode' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php', + 'Prophecy\\Doubler\\Generator\\ReflectionInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php', + 'Prophecy\\Doubler\\Generator\\TypeHintReference' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php', + 'Prophecy\\Doubler\\LazyDouble' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php', + 'Prophecy\\Doubler\\NameGenerator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php', + 'Prophecy\\Exception\\Call\\UnexpectedCallException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php', + 'Prophecy\\Exception\\Doubler\\ClassCreatorException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php', + 'Prophecy\\Exception\\Doubler\\ClassMirrorException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php', + 'Prophecy\\Exception\\Doubler\\ClassNotFoundException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php', + 'Prophecy\\Exception\\Doubler\\DoubleException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php', + 'Prophecy\\Exception\\Doubler\\DoublerException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php', + 'Prophecy\\Exception\\Doubler\\InterfaceNotFoundException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php', + 'Prophecy\\Exception\\Doubler\\MethodNotExtendableException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php', + 'Prophecy\\Exception\\Doubler\\MethodNotFoundException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php', + 'Prophecy\\Exception\\Doubler\\ReturnByReferenceException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php', + 'Prophecy\\Exception\\Exception' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Exception.php', + 'Prophecy\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php', + 'Prophecy\\Exception\\Prediction\\AggregateException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php', + 'Prophecy\\Exception\\Prediction\\FailedPredictionException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php', + 'Prophecy\\Exception\\Prediction\\NoCallsException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php', + 'Prophecy\\Exception\\Prediction\\PredictionException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php', + 'Prophecy\\Exception\\Prediction\\UnexpectedCallsCountException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php', + 'Prophecy\\Exception\\Prediction\\UnexpectedCallsException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php', + 'Prophecy\\Exception\\Prophecy\\MethodProphecyException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php', + 'Prophecy\\Exception\\Prophecy\\ObjectProphecyException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php', + 'Prophecy\\Exception\\Prophecy\\ProphecyException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php', + 'Prophecy\\PhpDocumentor\\ClassAndInterfaceTagRetriever' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php', + 'Prophecy\\PhpDocumentor\\ClassTagRetriever' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php', + 'Prophecy\\PhpDocumentor\\LegacyClassTagRetriever' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php', + 'Prophecy\\PhpDocumentor\\MethodTagRetrieverInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php', + 'Prophecy\\Prediction\\CallPrediction' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php', + 'Prophecy\\Prediction\\CallTimesPrediction' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php', + 'Prophecy\\Prediction\\CallbackPrediction' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php', + 'Prophecy\\Prediction\\NoCallsPrediction' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php', + 'Prophecy\\Prediction\\PredictionInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php', + 'Prophecy\\Promise\\CallbackPromise' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php', + 'Prophecy\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php', + 'Prophecy\\Promise\\ReturnArgumentPromise' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php', + 'Prophecy\\Promise\\ReturnPromise' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php', + 'Prophecy\\Promise\\ThrowPromise' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php', + 'Prophecy\\Prophecy\\MethodProphecy' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php', + 'Prophecy\\Prophecy\\ObjectProphecy' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php', + 'Prophecy\\Prophecy\\ProphecyInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php', + 'Prophecy\\Prophecy\\ProphecySubjectInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php', + 'Prophecy\\Prophecy\\Revealer' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php', + 'Prophecy\\Prophecy\\RevealerInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php', + 'Prophecy\\Prophet' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophet.php', + 'Prophecy\\Util\\ExportUtil' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php', + 'Prophecy\\Util\\StringUtil' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Util/StringUtil.php', + 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', + 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', + 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', + 'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', + 'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', + 'Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', + 'Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', + 'Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', + 'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', + 'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', + 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php', + 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php', + 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php', + 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php', + 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php', + 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php', + 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php', + 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php', + 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', + 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', + 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php', + 'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php', + 'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php', + 'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php', + 'Requests' => __DIR__ . '/..' . '/rmccue/requests/library/Requests.php', + 'Requests_Auth' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Auth.php', + 'Requests_Auth_Basic' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Auth/Basic.php', + 'Requests_Cookie' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Cookie.php', + 'Requests_Cookie_Jar' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Cookie/Jar.php', + 'Requests_Exception' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception.php', + 'Requests_Exception_HTTP' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP.php', + 'Requests_Exception_HTTP_304' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/304.php', + 'Requests_Exception_HTTP_305' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/305.php', + 'Requests_Exception_HTTP_306' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/306.php', + 'Requests_Exception_HTTP_400' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/400.php', + 'Requests_Exception_HTTP_401' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/401.php', + 'Requests_Exception_HTTP_402' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/402.php', + 'Requests_Exception_HTTP_403' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/403.php', + 'Requests_Exception_HTTP_404' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/404.php', + 'Requests_Exception_HTTP_405' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/405.php', + 'Requests_Exception_HTTP_406' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/406.php', + 'Requests_Exception_HTTP_407' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/407.php', + 'Requests_Exception_HTTP_408' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/408.php', + 'Requests_Exception_HTTP_409' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/409.php', + 'Requests_Exception_HTTP_410' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/410.php', + 'Requests_Exception_HTTP_411' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/411.php', + 'Requests_Exception_HTTP_412' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/412.php', + 'Requests_Exception_HTTP_413' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/413.php', + 'Requests_Exception_HTTP_414' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/414.php', + 'Requests_Exception_HTTP_415' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/415.php', + 'Requests_Exception_HTTP_416' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/416.php', + 'Requests_Exception_HTTP_417' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/417.php', + 'Requests_Exception_HTTP_418' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/418.php', + 'Requests_Exception_HTTP_428' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/428.php', + 'Requests_Exception_HTTP_429' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/429.php', + 'Requests_Exception_HTTP_431' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/431.php', + 'Requests_Exception_HTTP_500' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/500.php', + 'Requests_Exception_HTTP_501' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/501.php', + 'Requests_Exception_HTTP_502' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/502.php', + 'Requests_Exception_HTTP_503' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/503.php', + 'Requests_Exception_HTTP_504' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/504.php', + 'Requests_Exception_HTTP_505' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/505.php', + 'Requests_Exception_HTTP_511' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/511.php', + 'Requests_Exception_HTTP_Unknown' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/Unknown.php', + 'Requests_Exception_Transport' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/Transport.php', + 'Requests_Exception_Transport_cURL' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/Transport/cURL.php', + 'Requests_Hooker' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Hooker.php', + 'Requests_Hooks' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Hooks.php', + 'Requests_IDNAEncoder' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/IDNAEncoder.php', + 'Requests_IPv6' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/IPv6.php', + 'Requests_IRI' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/IRI.php', + 'Requests_Proxy' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Proxy.php', + 'Requests_Proxy_HTTP' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Proxy/HTTP.php', + 'Requests_Response' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Response.php', + 'Requests_Response_Headers' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Response/Headers.php', + 'Requests_SSL' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/SSL.php', + 'Requests_Session' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Session.php', + 'Requests_Transport' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Transport.php', + 'Requests_Transport_cURL' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Transport/cURL.php', + 'Requests_Transport_fsockopen' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Transport/fsockopen.php', + 'Requests_Utility_CaseInsensitiveDictionary' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Utility/CaseInsensitiveDictionary.php', + 'Requests_Utility_FilteredIterator' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Utility/FilteredIterator.php', + 'Rewrite_Command' => __DIR__ . '/..' . '/wp-cli/rewrite-command/src/Rewrite_Command.php', + 'Role_Command' => __DIR__ . '/..' . '/wp-cli/role-command/src/Role_Command.php', + 'Scaffold_Command' => __DIR__ . '/..' . '/wp-cli/scaffold-command/src/Scaffold_Command.php', + 'Search_Replace_Command' => __DIR__ . '/..' . '/wp-cli/search-replace-command/src/Search_Replace_Command.php', + 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', + 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', + 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php', + 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php', + 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', + 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', + 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', + 'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php', + 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', + 'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php', + 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php', + 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', + 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', + 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', + 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', + 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', + 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', + 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', + 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', + 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', + 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', + 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', + 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', + 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', + 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php', + 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php', + 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', + 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', + 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php', + 'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php', + 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php', + 'SebastianBergmann\\FileIterator\\Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', + 'SebastianBergmann\\FileIterator\\Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', + 'SebastianBergmann\\FileIterator\\Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php', + 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php', + 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php', + 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php', + 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', + 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php', + 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php', + 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php', + 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php', + 'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php', + 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php', + 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php', + 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php', + 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php', + 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php', + 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php', + 'SebastianBergmann\\Timer\\Exception' => __DIR__ . '/..' . '/phpunit/php-timer/src/Exception.php', + 'SebastianBergmann\\Timer\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-timer/src/RuntimeException.php', + 'SebastianBergmann\\Timer\\Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', + 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php', + 'Seld\\JsonLint\\DuplicateKeyException' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php', + 'Seld\\JsonLint\\JsonParser' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/JsonParser.php', + 'Seld\\JsonLint\\Lexer' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/Lexer.php', + 'Seld\\JsonLint\\ParsingException' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/ParsingException.php', + 'Seld\\JsonLint\\Undefined' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/Undefined.php', + 'Seld\\PharUtils\\Linter' => __DIR__ . '/..' . '/seld/phar-utils/src/Linter.php', + 'Seld\\PharUtils\\Timestamps' => __DIR__ . '/..' . '/seld/phar-utils/src/Timestamps.php', + 'Server_Command' => __DIR__ . '/..' . '/wp-cli/server-command/src/Server_Command.php', + 'Shell_Command' => __DIR__ . '/..' . '/wp-cli/shell-command/src/Shell_Command.php', + 'Sidebar_Command' => __DIR__ . '/..' . '/wp-cli/widget-command/src/Sidebar_Command.php', + 'Site_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Site_Command.php', + 'Site_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Site_Meta_Command.php', + 'Site_Option_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Site_Option_Command.php', + 'Site_Switch_Language_Command' => __DIR__ . '/..' . '/wp-cli/language-command/src/Site_Switch_Language_Command.php', + 'Super_Admin_Command' => __DIR__ . '/..' . '/wp-cli/super-admin-command/src/Super_Admin_Command.php', + 'Symfony\\Component\\BrowserKit\\AbstractBrowser' => __DIR__ . '/..' . '/symfony/browser-kit/AbstractBrowser.php', + 'Symfony\\Component\\BrowserKit\\Client' => __DIR__ . '/..' . '/symfony/browser-kit/Client.php', + 'Symfony\\Component\\BrowserKit\\Cookie' => __DIR__ . '/..' . '/symfony/browser-kit/Cookie.php', + 'Symfony\\Component\\BrowserKit\\CookieJar' => __DIR__ . '/..' . '/symfony/browser-kit/CookieJar.php', + 'Symfony\\Component\\BrowserKit\\Exception\\BadMethodCallException' => __DIR__ . '/..' . '/symfony/browser-kit/Exception/BadMethodCallException.php', + 'Symfony\\Component\\BrowserKit\\History' => __DIR__ . '/..' . '/symfony/browser-kit/History.php', + 'Symfony\\Component\\BrowserKit\\HttpBrowser' => __DIR__ . '/..' . '/symfony/browser-kit/HttpBrowser.php', + 'Symfony\\Component\\BrowserKit\\Request' => __DIR__ . '/..' . '/symfony/browser-kit/Request.php', + 'Symfony\\Component\\BrowserKit\\Response' => __DIR__ . '/..' . '/symfony/browser-kit/Response.php', + 'Symfony\\Component\\BrowserKit\\Test\\Constraint\\BrowserCookieValueSame' => __DIR__ . '/..' . '/symfony/browser-kit/Test/Constraint/BrowserCookieValueSame.php', + 'Symfony\\Component\\BrowserKit\\Test\\Constraint\\BrowserHasCookie' => __DIR__ . '/..' . '/symfony/browser-kit/Test/Constraint/BrowserHasCookie.php', + 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', + 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php', + 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php', + 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php', + 'Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php', + 'Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php', + 'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php', + 'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php', + 'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php', + 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', + 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php', + 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php', + 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php', + 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php', + 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleCommandEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleErrorEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleTerminateEvent.php', + 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php', + 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php', + 'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php', + 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php', + 'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php', + 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', + 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php', + 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php', + 'Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php', + 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php', + 'Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php', + 'Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php', + 'Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php', + 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php', + 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php', + 'Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php', + 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php', + 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php', + 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php', + 'Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php', + 'Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php', + 'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php', + 'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php', + 'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php', + 'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php', + 'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php', + 'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php', + 'Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php', + 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php', + 'Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php', + 'Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php', + 'Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php', + 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php', + 'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php', + 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php', + 'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php', + 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php', + 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php', + 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php', + 'Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php', + 'Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php', + 'Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php', + 'Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php', + 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php', + 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php', + 'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php', + 'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php', + 'Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php', + 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php', + 'Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php', + 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => __DIR__ . '/..' . '/symfony/console/Tester/ApplicationTester.php', + 'Symfony\\Component\\Console\\Tester\\CommandTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandTester.php', + 'Symfony\\Component\\Console\\Tester\\TesterTrait' => __DIR__ . '/..' . '/symfony/console/Tester/TesterTrait.php', + 'Symfony\\Component\\CssSelector\\CssSelectorConverter' => __DIR__ . '/..' . '/symfony/css-selector/CssSelectorConverter.php', + 'Symfony\\Component\\CssSelector\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ExceptionInterface.php', + 'Symfony\\Component\\CssSelector\\Exception\\ExpressionErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ExpressionErrorException.php', + 'Symfony\\Component\\CssSelector\\Exception\\InternalErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/InternalErrorException.php', + 'Symfony\\Component\\CssSelector\\Exception\\ParseException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ParseException.php', + 'Symfony\\Component\\CssSelector\\Exception\\SyntaxErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/SyntaxErrorException.php', + 'Symfony\\Component\\CssSelector\\Node\\AbstractNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/AbstractNode.php', + 'Symfony\\Component\\CssSelector\\Node\\AttributeNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/AttributeNode.php', + 'Symfony\\Component\\CssSelector\\Node\\ClassNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/ClassNode.php', + 'Symfony\\Component\\CssSelector\\Node\\CombinedSelectorNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/CombinedSelectorNode.php', + 'Symfony\\Component\\CssSelector\\Node\\ElementNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/ElementNode.php', + 'Symfony\\Component\\CssSelector\\Node\\FunctionNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/FunctionNode.php', + 'Symfony\\Component\\CssSelector\\Node\\HashNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/HashNode.php', + 'Symfony\\Component\\CssSelector\\Node\\NegationNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/NegationNode.php', + 'Symfony\\Component\\CssSelector\\Node\\NodeInterface' => __DIR__ . '/..' . '/symfony/css-selector/Node/NodeInterface.php', + 'Symfony\\Component\\CssSelector\\Node\\PseudoNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/PseudoNode.php', + 'Symfony\\Component\\CssSelector\\Node\\SelectorNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/SelectorNode.php', + 'Symfony\\Component\\CssSelector\\Node\\Specificity' => __DIR__ . '/..' . '/symfony/css-selector/Node/Specificity.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\CommentHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/CommentHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/HandlerInterface.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HashHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/HashHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\IdentifierHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/IdentifierHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\NumberHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/NumberHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\StringHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/StringHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Handler\\WhitespaceHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/WhitespaceHandler.php', + 'Symfony\\Component\\CssSelector\\Parser\\Parser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Parser.php', + 'Symfony\\Component\\CssSelector\\Parser\\ParserInterface' => __DIR__ . '/..' . '/symfony/css-selector/Parser/ParserInterface.php', + 'Symfony\\Component\\CssSelector\\Parser\\Reader' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Reader.php', + 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ClassParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/ClassParser.php', + 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ElementParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/ElementParser.php', + 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\EmptyStringParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php', + 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\HashParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/HashParser.php', + 'Symfony\\Component\\CssSelector\\Parser\\Token' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Token.php', + 'Symfony\\Component\\CssSelector\\Parser\\TokenStream' => __DIR__ . '/..' . '/symfony/css-selector/Parser/TokenStream.php', + 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/Tokenizer.php', + 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerEscaping' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php', + 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerPatterns' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AbstractExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/AbstractExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AttributeMatchingExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\CombinationExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/CombinationExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\ExtensionInterface' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/ExtensionInterface.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\FunctionExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/FunctionExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\HtmlExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/HtmlExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\NodeExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/NodeExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Extension\\PseudoClassExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/PseudoClassExtension.php', + 'Symfony\\Component\\CssSelector\\XPath\\Translator' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Translator.php', + 'Symfony\\Component\\CssSelector\\XPath\\TranslatorInterface' => __DIR__ . '/..' . '/symfony/css-selector/XPath/TranslatorInterface.php', + 'Symfony\\Component\\CssSelector\\XPath\\XPathExpr' => __DIR__ . '/..' . '/symfony/css-selector/XPath/XPathExpr.php', + 'Symfony\\Component\\DomCrawler\\AbstractUriElement' => __DIR__ . '/..' . '/symfony/dom-crawler/AbstractUriElement.php', + 'Symfony\\Component\\DomCrawler\\Crawler' => __DIR__ . '/..' . '/symfony/dom-crawler/Crawler.php', + 'Symfony\\Component\\DomCrawler\\Field\\ChoiceFormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/ChoiceFormField.php', + 'Symfony\\Component\\DomCrawler\\Field\\FileFormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/FileFormField.php', + 'Symfony\\Component\\DomCrawler\\Field\\FormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/FormField.php', + 'Symfony\\Component\\DomCrawler\\Field\\InputFormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/InputFormField.php', + 'Symfony\\Component\\DomCrawler\\Field\\TextareaFormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/TextareaFormField.php', + 'Symfony\\Component\\DomCrawler\\Form' => __DIR__ . '/..' . '/symfony/dom-crawler/Form.php', + 'Symfony\\Component\\DomCrawler\\FormFieldRegistry' => __DIR__ . '/..' . '/symfony/dom-crawler/FormFieldRegistry.php', + 'Symfony\\Component\\DomCrawler\\Image' => __DIR__ . '/..' . '/symfony/dom-crawler/Image.php', + 'Symfony\\Component\\DomCrawler\\Link' => __DIR__ . '/..' . '/symfony/dom-crawler/Link.php', + 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorAttributeValueSame' => __DIR__ . '/..' . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorAttributeValueSame.php', + 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorExists' => __DIR__ . '/..' . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorExists.php', + 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorTextContains' => __DIR__ . '/..' . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorTextContains.php', + 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorTextSame' => __DIR__ . '/..' . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorTextSame.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/WrappedListener.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\ExtractingEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', + 'Symfony\\Component\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher/Event.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcherInterface.php', + 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventSubscriberInterface.php', + 'Symfony\\Component\\EventDispatcher\\GenericEvent' => __DIR__ . '/..' . '/symfony/event-dispatcher/GenericEvent.php', + 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\LegacyEventDispatcherProxy' => __DIR__ . '/..' . '/symfony/event-dispatcher/LegacyEventDispatcherProxy.php', + 'Symfony\\Component\\EventDispatcher\\LegacyEventProxy' => __DIR__ . '/..' . '/symfony/event-dispatcher/LegacyEventProxy.php', + 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php', + 'Symfony\\Component\\Filesystem\\LockHandler' => __DIR__ . '/..' . '/symfony/filesystem/LockHandler.php', + 'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php', + 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php', + 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php', + 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php', + 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php', + 'Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php', + 'Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php', + 'Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php', + 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php', + 'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php', + 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php', + 'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php', + 'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php', + 'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php', + 'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php', + 'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php', + 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php', + 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php', + 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php', + 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php', + 'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php', + 'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php', + 'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/AbstractOperation.php', + 'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/MergeOperation.php', + 'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => __DIR__ . '/..' . '/symfony/translation/Catalogue/OperationInterface.php', + 'Symfony\\Component\\Translation\\Catalogue\\TargetOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/TargetOperation.php', + 'Symfony\\Component\\Translation\\Command\\XliffLintCommand' => __DIR__ . '/..' . '/symfony/translation/Command/XliffLintCommand.php', + 'Symfony\\Component\\Translation\\DataCollectorTranslator' => __DIR__ . '/..' . '/symfony/translation/DataCollectorTranslator.php', + 'Symfony\\Component\\Translation\\DataCollector\\TranslationDataCollector' => __DIR__ . '/..' . '/symfony/translation/DataCollector/TranslationDataCollector.php', + 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationDumperPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslationDumperPass.php', + 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationExtractorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslationExtractorPass.php', + 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslatorPass.php', + 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPathsPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslatorPathsPass.php', + 'Symfony\\Component\\Translation\\Dumper\\CsvFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/CsvFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\DumperInterface' => __DIR__ . '/..' . '/symfony/translation/Dumper/DumperInterface.php', + 'Symfony\\Component\\Translation\\Dumper\\FileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/FileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\IcuResFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/IcuResFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\IniFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/IniFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\JsonFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/JsonFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\MoFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/MoFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\PhpFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/PhpFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\PoFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/PoFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\QtFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/QtFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\XliffFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/XliffFileDumper.php', + 'Symfony\\Component\\Translation\\Dumper\\YamlFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/YamlFileDumper.php', + 'Symfony\\Component\\Translation\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/translation/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Translation\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/translation/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Translation\\Exception\\InvalidResourceException' => __DIR__ . '/..' . '/symfony/translation/Exception/InvalidResourceException.php', + 'Symfony\\Component\\Translation\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/translation/Exception/LogicException.php', + 'Symfony\\Component\\Translation\\Exception\\NotFoundResourceException' => __DIR__ . '/..' . '/symfony/translation/Exception/NotFoundResourceException.php', + 'Symfony\\Component\\Translation\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/translation/Exception/RuntimeException.php', + 'Symfony\\Component\\Translation\\Extractor\\AbstractFileExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/AbstractFileExtractor.php', + 'Symfony\\Component\\Translation\\Extractor\\ChainExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/ChainExtractor.php', + 'Symfony\\Component\\Translation\\Extractor\\ExtractorInterface' => __DIR__ . '/..' . '/symfony/translation/Extractor/ExtractorInterface.php', + 'Symfony\\Component\\Translation\\Extractor\\PhpExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpExtractor.php', + 'Symfony\\Component\\Translation\\Extractor\\PhpStringTokenParser' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpStringTokenParser.php', + 'Symfony\\Component\\Translation\\Formatter\\IntlFormatter' => __DIR__ . '/..' . '/symfony/translation/Formatter/IntlFormatter.php', + 'Symfony\\Component\\Translation\\Formatter\\IntlFormatterInterface' => __DIR__ . '/..' . '/symfony/translation/Formatter/IntlFormatterInterface.php', + 'Symfony\\Component\\Translation\\Formatter\\MessageFormatter' => __DIR__ . '/..' . '/symfony/translation/Formatter/MessageFormatter.php', + 'Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface' => __DIR__ . '/..' . '/symfony/translation/Formatter/MessageFormatterInterface.php', + 'Symfony\\Component\\Translation\\IdentityTranslator' => __DIR__ . '/..' . '/symfony/translation/IdentityTranslator.php', + 'Symfony\\Component\\Translation\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/ArrayLoader.php', + 'Symfony\\Component\\Translation\\Loader\\CsvFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/CsvFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\FileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/FileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\IcuDatFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IcuDatFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\IcuResFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IcuResFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\IniFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IniFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\JsonFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/JsonFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/symfony/translation/Loader/LoaderInterface.php', + 'Symfony\\Component\\Translation\\Loader\\MoFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/MoFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\PhpFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/PhpFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\PoFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/PoFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\QtFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/QtFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\XliffFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/XliffFileLoader.php', + 'Symfony\\Component\\Translation\\Loader\\YamlFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/YamlFileLoader.php', + 'Symfony\\Component\\Translation\\LoggingTranslator' => __DIR__ . '/..' . '/symfony/translation/LoggingTranslator.php', + 'Symfony\\Component\\Translation\\MessageCatalogue' => __DIR__ . '/..' . '/symfony/translation/MessageCatalogue.php', + 'Symfony\\Component\\Translation\\MessageCatalogueInterface' => __DIR__ . '/..' . '/symfony/translation/MessageCatalogueInterface.php', + 'Symfony\\Component\\Translation\\MetadataAwareInterface' => __DIR__ . '/..' . '/symfony/translation/MetadataAwareInterface.php', + 'Symfony\\Component\\Translation\\Reader\\TranslationReader' => __DIR__ . '/..' . '/symfony/translation/Reader/TranslationReader.php', + 'Symfony\\Component\\Translation\\Reader\\TranslationReaderInterface' => __DIR__ . '/..' . '/symfony/translation/Reader/TranslationReaderInterface.php', + 'Symfony\\Component\\Translation\\Translator' => __DIR__ . '/..' . '/symfony/translation/Translator.php', + 'Symfony\\Component\\Translation\\TranslatorBagInterface' => __DIR__ . '/..' . '/symfony/translation/TranslatorBagInterface.php', + 'Symfony\\Component\\Translation\\Util\\ArrayConverter' => __DIR__ . '/..' . '/symfony/translation/Util/ArrayConverter.php', + 'Symfony\\Component\\Translation\\Util\\XliffUtils' => __DIR__ . '/..' . '/symfony/translation/Util/XliffUtils.php', + 'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => __DIR__ . '/..' . '/symfony/translation/Writer/TranslationWriter.php', + 'Symfony\\Component\\Translation\\Writer\\TranslationWriterInterface' => __DIR__ . '/..' . '/symfony/translation/Writer/TranslationWriterInterface.php', + 'Symfony\\Component\\Yaml\\Command\\LintCommand' => __DIR__ . '/..' . '/symfony/yaml/Command/LintCommand.php', + 'Symfony\\Component\\Yaml\\Dumper' => __DIR__ . '/..' . '/symfony/yaml/Dumper.php', + 'Symfony\\Component\\Yaml\\Escaper' => __DIR__ . '/..' . '/symfony/yaml/Escaper.php', + 'Symfony\\Component\\Yaml\\Exception\\DumpException' => __DIR__ . '/..' . '/symfony/yaml/Exception/DumpException.php', + 'Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/yaml/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Yaml\\Exception\\ParseException' => __DIR__ . '/..' . '/symfony/yaml/Exception/ParseException.php', + 'Symfony\\Component\\Yaml\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/yaml/Exception/RuntimeException.php', + 'Symfony\\Component\\Yaml\\Inline' => __DIR__ . '/..' . '/symfony/yaml/Inline.php', + 'Symfony\\Component\\Yaml\\Parser' => __DIR__ . '/..' . '/symfony/yaml/Parser.php', + 'Symfony\\Component\\Yaml\\Tag\\TaggedValue' => __DIR__ . '/..' . '/symfony/yaml/Tag/TaggedValue.php', + 'Symfony\\Component\\Yaml\\Unescaper' => __DIR__ . '/..' . '/symfony/yaml/Unescaper.php', + 'Symfony\\Component\\Yaml\\Yaml' => __DIR__ . '/..' . '/symfony/yaml/Yaml.php', + 'Symfony\\Contracts\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/Event.php', + 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', + 'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php', + 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php', + 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php', + 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php', + 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php', + 'Symfony\\Contracts\\Service\\Test\\ServiceLocatorTest' => __DIR__ . '/..' . '/symfony/service-contracts/Test/ServiceLocatorTest.php', + 'Symfony\\Contracts\\Translation\\LocaleAwareInterface' => __DIR__ . '/..' . '/symfony/translation-contracts/LocaleAwareInterface.php', + 'Symfony\\Contracts\\Translation\\Test\\TranslatorTest' => __DIR__ . '/..' . '/symfony/translation-contracts/Test/TranslatorTest.php', + 'Symfony\\Contracts\\Translation\\TranslatorInterface' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorInterface.php', + 'Symfony\\Contracts\\Translation\\TranslatorTrait' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorTrait.php', + 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', + 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', + 'Symfony\\Polyfill\\Php73\\Php73' => __DIR__ . '/..' . '/symfony/polyfill-php73/Php73.php', + 'Taxonomy_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Taxonomy_Command.php', + 'Term_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Term_Command.php', + 'Term_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Term_Meta_Command.php', + 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', + 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php', + 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php', + 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php', + 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php', + 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php', + 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php', + 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php', + 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php', + 'Theme_Command' => __DIR__ . '/..' . '/wp-cli/extension-command/src/Theme_Command.php', + 'Theme_Language_Command' => __DIR__ . '/..' . '/wp-cli/language-command/src/Theme_Language_Command.php', + 'Theme_Mod_Command' => __DIR__ . '/..' . '/wp-cli/extension-command/src/Theme_Mod_Command.php', + 'Transient_Command' => __DIR__ . '/..' . '/wp-cli/cache-command/src/Transient_Command.php', + 'User_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/User_Command.php', + 'User_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/User_Meta_Command.php', + 'User_Session_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/User_Session_Command.php', + 'User_Term_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/User_Term_Command.php', 'WPGraphQL\\JWT_Authentication\\Auth' => __DIR__ . '/../..' . '/src/Auth.php', 'WPGraphQL\\JWT_Authentication\\Login' => __DIR__ . '/../..' . '/src/Login.php', 'WPGraphQL\\JWT_Authentication\\ManageTokens' => __DIR__ . '/../..' . '/src/ManageTokens.php', 'WPGraphQL\\JWT_Authentication\\RefreshToken' => __DIR__ . '/../..' . '/src/RefreshToken.php', + 'WP_CLI' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/class-wp-cli.php', + 'WP_CLI\\Autoloader' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Autoloader.php', + 'WP_CLI\\Bootstrap\\AutoloaderStep' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/AutoloaderStep.php', + 'WP_CLI\\Bootstrap\\BootstrapState' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapState.php', + 'WP_CLI\\Bootstrap\\BootstrapStep' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapStep.php', + 'WP_CLI\\Bootstrap\\ConfigureRunner' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/ConfigureRunner.php', + 'WP_CLI\\Bootstrap\\DeclareAbstractBaseCommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareAbstractBaseCommand.php', + 'WP_CLI\\Bootstrap\\DeclareMainClass' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareMainClass.php', + 'WP_CLI\\Bootstrap\\DefineProtectedCommands' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DefineProtectedCommands.php', + 'WP_CLI\\Bootstrap\\IncludeFallbackAutoloader' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFallbackAutoloader.php', + 'WP_CLI\\Bootstrap\\IncludeFrameworkAutoloader' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFrameworkAutoloader.php', + 'WP_CLI\\Bootstrap\\IncludePackageAutoloader' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludePackageAutoloader.php', + 'WP_CLI\\Bootstrap\\InitializeColorization' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeColorization.php', + 'WP_CLI\\Bootstrap\\InitializeLogger' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeLogger.php', + 'WP_CLI\\Bootstrap\\LaunchRunner' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php', + 'WP_CLI\\Bootstrap\\LoadDispatcher' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadDispatcher.php', + 'WP_CLI\\Bootstrap\\LoadRequiredCommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadRequiredCommand.php', + 'WP_CLI\\Bootstrap\\LoadUtilityFunctions' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadUtilityFunctions.php', + 'WP_CLI\\Bootstrap\\RegisterDeferredCommands' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterDeferredCommands.php', + 'WP_CLI\\Bootstrap\\RegisterFrameworkCommands' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterFrameworkCommands.php', + 'WP_CLI\\Bootstrap\\RunnerInstance' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RunnerInstance.php', + 'WP_CLI\\CommandWithDBObject' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/CommandWithDBObject.php', + 'WP_CLI\\CommandWithMeta' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/CommandWithMeta.php', + 'WP_CLI\\CommandWithTerms' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/CommandWithTerms.php', + 'WP_CLI\\CommandWithTranslation' => __DIR__ . '/..' . '/wp-cli/language-command/src/WP_CLI/CommandWithTranslation.php', + 'WP_CLI\\CommandWithUpgrade' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/CommandWithUpgrade.php', + 'WP_CLI\\Compat\\FeedbackMethodTrait' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Compat/FeedbackMethodTrait.php', + 'WP_CLI\\Compat\\Min_PHP_5_4\\FeedbackMethodTrait' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_4/FeedbackMethodTrait.php', + 'WP_CLI\\Compat\\Min_PHP_5_6\\FeedbackMethodTrait' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_6/FeedbackMethodTrait.php', + 'WP_CLI\\Completions' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Completions.php', + 'WP_CLI\\ComposerIO' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/ComposerIO.php', + 'WP_CLI\\Configurator' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Configurator.php', + 'WP_CLI\\Core\\CoreUpgrader' => __DIR__ . '/..' . '/wp-cli/core-command/src/WP_CLI/Core/CoreUpgrader.php', + 'WP_CLI\\Core\\NonDestructiveCoreUpgrader' => __DIR__ . '/..' . '/wp-cli/core-command/src/WP_CLI/Core/NonDestructiveCoreUpgrader.php', + 'WP_CLI\\DestructivePluginUpgrader' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/DestructivePluginUpgrader.php', + 'WP_CLI\\DestructiveThemeUpgrader' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/DestructiveThemeUpgrader.php', + 'WP_CLI\\Dispatcher\\CommandAddition' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandAddition.php', + 'WP_CLI\\Dispatcher\\CommandFactory' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php', + 'WP_CLI\\Dispatcher\\CommandNamespace' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandNamespace.php', + 'WP_CLI\\Dispatcher\\CompositeCommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CompositeCommand.php', + 'WP_CLI\\Dispatcher\\RootCommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/RootCommand.php', + 'WP_CLI\\Dispatcher\\Subcommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.php', + 'WP_CLI\\DocParser' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/DocParser.php', + 'WP_CLI\\Embeds\\Cache_Command' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Cache_Command.php', + 'WP_CLI\\Embeds\\Embeds_Namespace' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Embeds_Namespace.php', + 'WP_CLI\\Embeds\\Fetch_Command' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Fetch_Command.php', + 'WP_CLI\\Embeds\\Handler_Command' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Handler_Command.php', + 'WP_CLI\\Embeds\\Provider_Command' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Provider_Command.php', + 'WP_CLI\\Embeds\\oEmbed' => __DIR__ . '/..' . '/wp-cli/embed-command/src/oEmbed.php', + 'WP_CLI\\Entity\\NonExistentKeyException' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Entity/NonExistentKeyException.php', + 'WP_CLI\\Entity\\RecursiveDataStructureTraverser' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Entity/RecursiveDataStructureTraverser.php', + 'WP_CLI\\Entity\\Utils' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Entity/Utils.php', + 'WP_CLI\\ExitException' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/ExitException.php', + 'WP_CLI\\Extractor' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Extractor.php', + 'WP_CLI\\Fetchers\\Base' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Fetchers/Base.php', + 'WP_CLI\\Fetchers\\Comment' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Comment.php', + 'WP_CLI\\Fetchers\\Plugin' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/Fetchers/Plugin.php', + 'WP_CLI\\Fetchers\\Post' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Post.php', + 'WP_CLI\\Fetchers\\Site' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Site.php', + 'WP_CLI\\Fetchers\\Theme' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/Fetchers/Theme.php', + 'WP_CLI\\Fetchers\\UnfilteredPlugin' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/WP_CLI/Fetchers/UnfilteredPlugin.php', + 'WP_CLI\\Fetchers\\User' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Fetchers/User.php', + 'WP_CLI\\FileCache' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/FileCache.php', + 'WP_CLI\\Formatter' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Formatter.php', + 'WP_CLI\\I18n\\CommandNamespace' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/CommandNamespace.php', + 'WP_CLI\\I18n\\IterableCodeExtractor' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/IterableCodeExtractor.php', + 'WP_CLI\\I18n\\JedGenerator' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/JedGenerator.php', + 'WP_CLI\\I18n\\JsCodeExtractor' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/JsCodeExtractor.php', + 'WP_CLI\\I18n\\JsFunctionsScanner' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/JsFunctionsScanner.php', + 'WP_CLI\\I18n\\MakeJsonCommand' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/MakeJsonCommand.php', + 'WP_CLI\\I18n\\MakePotCommand' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/MakePotCommand.php', + 'WP_CLI\\I18n\\MapCodeExtractor' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/MapCodeExtractor.php', + 'WP_CLI\\I18n\\PhpCodeExtractor' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/PhpCodeExtractor.php', + 'WP_CLI\\I18n\\PhpFunctionsScanner' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/PhpFunctionsScanner.php', + 'WP_CLI\\I18n\\PotGenerator' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/PotGenerator.php', + 'WP_CLI\\Inflector' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Inflector.php', + 'WP_CLI\\Iterators\\CSV' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/CSV.php', + 'WP_CLI\\Iterators\\Exception' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Exception.php', + 'WP_CLI\\Iterators\\Query' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Query.php', + 'WP_CLI\\Iterators\\Table' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Table.php', + 'WP_CLI\\Iterators\\Transform' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Transform.php', + 'WP_CLI\\JsonManipulator' => __DIR__ . '/..' . '/wp-cli/package-command/src/WP_CLI/JsonManipulator.php', + 'WP_CLI\\LanguagePackUpgrader' => __DIR__ . '/..' . '/wp-cli/language-command/src/WP_CLI/LanguagePackUpgrader.php', + 'WP_CLI\\Loggers\\Base' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Base.php', + 'WP_CLI\\Loggers\\Execution' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Execution.php', + 'WP_CLI\\Loggers\\Quiet' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Quiet.php', + 'WP_CLI\\Loggers\\Regular' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Regular.php', + 'WP_CLI\\MaintenanceMode\\MaintenanceModeCommand' => __DIR__ . '/..' . '/wp-cli/maintenance-mode-command/src/MaintenanceModeCommand.php', + 'WP_CLI\\NoOp' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/NoOp.php', + 'WP_CLI\\PackageManagerEventSubscriber' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/PackageManagerEventSubscriber.php', + 'WP_CLI\\Process' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Process.php', + 'WP_CLI\\ProcessRun' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/ProcessRun.php', + 'WP_CLI\\Runner' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Runner.php', + 'WP_CLI\\SearchReplacer' => __DIR__ . '/..' . '/wp-cli/search-replace-command/src/WP_CLI/SearchReplacer.php', + 'WP_CLI\\Shell\\REPL' => __DIR__ . '/..' . '/wp-cli/shell-command/src/WP_CLI/Shell/REPL.php', + 'WP_CLI\\SynopsisParser' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/SynopsisParser.php', + 'WP_CLI\\SynopsisValidator' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/SynopsisValidator.php', + 'WP_CLI\\UpgraderSkin' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/UpgraderSkin.php', + 'WP_CLI\\WpHttpCacheManager' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/WpHttpCacheManager.php', + 'WP_CLI_Command' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/class-wp-cli-command.php', + 'WP_Export_Base_Writer' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Base_Writer.php', + 'WP_Export_Exception' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Exception.php', + 'WP_Export_File_Writer' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_File_Writer.php', + 'WP_Export_Oxymel' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Oxymel.php', + 'WP_Export_Query' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Query.php', + 'WP_Export_Returner' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Returner.php', + 'WP_Export_Split_Files_Writer' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Split_Files_Writer.php', + 'WP_Export_Term_Exception' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Term_Exception.php', + 'WP_Export_WXR_Formatter' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_WXR_Formatter.php', + 'WP_Export_XML_Over_HTTP' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_XML_Over_HTTP.php', + 'WP_Iterator_Exception' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Iterator_Exception.php', + 'WP_Map_Iterator' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Map_Iterator.php', + 'WP_Post_IDs_Iterator' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Post_IDs_Iterator.php', + 'Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php', + 'Widget_Command' => __DIR__ . '/..' . '/wp-cli/widget-command/src/Widget_Command.php', + 'cli\\Arguments' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Arguments.php', + 'cli\\Colors' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Colors.php', + 'cli\\Memoize' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Memoize.php', + 'cli\\Notify' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Notify.php', + 'cli\\Progress' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Progress.php', + 'cli\\Shell' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Shell.php', + 'cli\\Streams' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Streams.php', + 'cli\\Table' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Table.php', + 'cli\\Tree' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Tree.php', + 'cli\\arguments\\Argument' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/arguments/Argument.php', + 'cli\\arguments\\HelpScreen' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/arguments/HelpScreen.php', + 'cli\\arguments\\InvalidArguments' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/arguments/InvalidArguments.php', + 'cli\\arguments\\Lexer' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/arguments/Lexer.php', + 'cli\\notify\\Dots' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/notify/Dots.php', + 'cli\\notify\\Spinner' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/notify/Spinner.php', + 'cli\\progress\\Bar' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/progress/Bar.php', + 'cli\\table\\Ascii' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/table/Ascii.php', + 'cli\\table\\Renderer' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/table/Renderer.php', + 'cli\\table\\Tabular' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/table/Tabular.php', + 'cli\\tree\\Ascii' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/tree/Ascii.php', + 'cli\\tree\\Markdown' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/tree/Markdown.php', + 'cli\\tree\\Renderer' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/tree/Renderer.php', + 'cweagans\\Composer\\PatchEvent' => __DIR__ . '/..' . '/cweagans/composer-patches/src/PatchEvent.php', + 'cweagans\\Composer\\PatchEvents' => __DIR__ . '/..' . '/cweagans/composer-patches/src/PatchEvents.php', + 'cweagans\\Composer\\Patches' => __DIR__ . '/..' . '/cweagans/composer-patches/src/Patches.php', + 'phpDocumentor\\Reflection\\DocBlock' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock.php', + 'phpDocumentor\\Reflection\\DocBlockFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlockFactory.php', + 'phpDocumentor\\Reflection\\DocBlockFactoryInterface' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php', + 'phpDocumentor\\Reflection\\DocBlock\\Description' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Description.php', + 'phpDocumentor\\Reflection\\DocBlock\\DescriptionFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php', + 'phpDocumentor\\Reflection\\DocBlock\\ExampleFinder' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php', + 'phpDocumentor\\Reflection\\DocBlock\\Serializer' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php', + 'phpDocumentor\\Reflection\\DocBlock\\StandardTagFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php', + 'phpDocumentor\\Reflection\\DocBlock\\TagFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Author' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\BaseTag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Covers' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Deprecated' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Example' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Factory\\StaticMethod' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\AlignFormatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\PassthroughFormatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Generic' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\InvalidTag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Link' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Method' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Param' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Property' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyRead' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyWrite' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Fqsen' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Reference' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Url' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Return_' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\See' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Since' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Source' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\TagWithType' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Throws' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Uses' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Var_' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php', + 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Version' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php', + 'phpDocumentor\\Reflection\\Element' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Element.php', + 'phpDocumentor\\Reflection\\File' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/File.php', + 'phpDocumentor\\Reflection\\Fqsen' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Fqsen.php', + 'phpDocumentor\\Reflection\\FqsenResolver' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/FqsenResolver.php', + 'phpDocumentor\\Reflection\\Location' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Location.php', + 'phpDocumentor\\Reflection\\Project' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Project.php', + 'phpDocumentor\\Reflection\\ProjectFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/ProjectFactory.php', + 'phpDocumentor\\Reflection\\Type' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Type.php', + 'phpDocumentor\\Reflection\\TypeResolver' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/TypeResolver.php', + 'phpDocumentor\\Reflection\\Types\\AbstractList' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/AbstractList.php', + 'phpDocumentor\\Reflection\\Types\\Array_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Array_.php', + 'phpDocumentor\\Reflection\\Types\\Boolean' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Boolean.php', + 'phpDocumentor\\Reflection\\Types\\Callable_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Callable_.php', + 'phpDocumentor\\Reflection\\Types\\ClassString' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/ClassString.php', + 'phpDocumentor\\Reflection\\Types\\Collection' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Collection.php', + 'phpDocumentor\\Reflection\\Types\\Compound' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Compound.php', + 'phpDocumentor\\Reflection\\Types\\Context' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Context.php', + 'phpDocumentor\\Reflection\\Types\\ContextFactory' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/ContextFactory.php', + 'phpDocumentor\\Reflection\\Types\\Float_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Float_.php', + 'phpDocumentor\\Reflection\\Types\\Integer' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Integer.php', + 'phpDocumentor\\Reflection\\Types\\Iterable_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Iterable_.php', + 'phpDocumentor\\Reflection\\Types\\Mixed_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Mixed_.php', + 'phpDocumentor\\Reflection\\Types\\Null_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Null_.php', + 'phpDocumentor\\Reflection\\Types\\Nullable' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Nullable.php', + 'phpDocumentor\\Reflection\\Types\\Object_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Object_.php', + 'phpDocumentor\\Reflection\\Types\\Parent_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Parent_.php', + 'phpDocumentor\\Reflection\\Types\\Resource_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Resource_.php', + 'phpDocumentor\\Reflection\\Types\\Scalar' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Scalar.php', + 'phpDocumentor\\Reflection\\Types\\Self_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Self_.php', + 'phpDocumentor\\Reflection\\Types\\Static_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Static_.php', + 'phpDocumentor\\Reflection\\Types\\String_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/String_.php', + 'phpDocumentor\\Reflection\\Types\\This' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/This.php', + 'phpDocumentor\\Reflection\\Types\\Void_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Void_.php', + 'tad\\WPBrowser\\Adapters\\WP' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Adapters/WP.php', + 'tad\\WPBrowser\\Connector\\WordPress' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Connector/WordPress.php', + 'tad\\WPBrowser\\Documentation\\TableGenerator' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Documentation/TableGenerator.php', + 'tad\\WPBrowser\\Environment\\Constants' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/Constants.php', + 'tad\\WPBrowser\\Environment\\Executor' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/Executor.php', + 'tad\\WPBrowser\\Environment\\System' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/System.php', + 'tad\\WPBrowser\\Extension\\Copier' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Extension/Copier.php', + 'tad\\WPBrowser\\Extension\\Symlinker' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Extension/Symlinker.php', + 'tad\\WPBrowser\\Filesystem\\FileReplacers\\AbstractFileReplacer' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/AbstractFileReplacer.php', + 'tad\\WPBrowser\\Filesystem\\FileReplacers\\HtaccesReplacer' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/HtaccesReplacer.php', + 'tad\\WPBrowser\\Filesystem\\FileReplacers\\WPConfigReplacer' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/WPConfigReplacer.php', + 'tad\\WPBrowser\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/Filesystem.php', + 'tad\\WPBrowser\\Filesystem\\Utils' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/Utils.php', + 'tad\\WPBrowser\\Generators\\Blog' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Blog.php', + 'tad\\WPBrowser\\Generators\\Comment' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Comment.php', + 'tad\\WPBrowser\\Generators\\Date' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Date.php', + 'tad\\WPBrowser\\Generators\\Links' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Links.php', + 'tad\\WPBrowser\\Generators\\Post' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Post.php', + 'tad\\WPBrowser\\Generators\\RedirectingWPConfig' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/RedirectingWPConfig.php', + 'tad\\WPBrowser\\Generators\\SubdomainHtaccess' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/SubdomainHtaccess.php', + 'tad\\WPBrowser\\Generators\\SubfolderHtaccess' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/SubfolderHtaccess.php', + 'tad\\WPBrowser\\Generators\\Tables' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Tables.php', + 'tad\\WPBrowser\\Generators\\TemplateProviderInterface' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/TemplateProviderInterface.php', + 'tad\\WPBrowser\\Generators\\User' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/User.php', + 'tad\\WPBrowser\\Generators\\User\\Roles' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/User/Roles.php', + 'tad\\WPBrowser\\Generators\\WpPassword' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/WpPassword.php', + 'tad\\WPBrowser\\Iterators\\Filters\\ActionsQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/ActionsQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\ClassMethodQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/ClassMethodQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\FactoryQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FactoryQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\FiltersQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FiltersQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\FunctionQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FunctionQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\MainStatementQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/MainStatementQueriesFilter.php', + 'tad\\WPBrowser\\Iterators\\Filters\\QueriesCallerBasedFilterIterator' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/QueriesCallerBasedFilterIterator.php', + 'tad\\WPBrowser\\Iterators\\Filters\\QueriesCallerBasedKeepingFilterIterator' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/QueriesCallerBasedKeepingFilterIterator.php', + 'tad\\WPBrowser\\Iterators\\Filters\\SetupTearDownQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/SetupTearDownQueriesFilter.php', + 'tad\\WPBrowser\\Module\\Support\\DbDump' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/Support/DbDump.php', + 'tad\\WPBrowser\\Module\\Support\\UriToIndexMapper' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/Support/UriToIndexMapper.php', + 'tad\\WPBrowser\\Module\\WPLoader\\FactoryStore' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/FactoryStore.php', + 'tad\\WPBrowser\\Module\\WPLoader\\Filters' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/Filters.php', + 'tad\\WPBrowser\\Module\\WPLoader\\FiltersGroup' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/FiltersGroup.php', + 'tad\\WPBrowser\\Services\\Db\\MySQLDumpFactory' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpFactory.php', + 'tad\\WPBrowser\\Services\\Db\\MySQLDumpFactoryInterface' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpFactoryInterface.php', + 'tad\\WPBrowser\\Services\\Db\\MySQLDumpInterface' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpInterface.php', + 'tad\\WPBrowser\\Services\\WP\\Bootstrapper' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/WP/Bootstrapper.php', + 'tad\\WPBrowser\\Template\\Data' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Template/Data.php', + 'voku\\helper\\ASCII' => __DIR__ . '/..' . '/voku/portable-ascii/src/voku/helper/ASCII.php', ); public static function getInitializer(ClassLoader $loader) @@ -44,6 +3310,8 @@ public static function getInitializer(ClassLoader $loader) return \Closure::bind(function () use ($loader) { $loader->prefixLengthsPsr4 = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$prefixLengthsPsr4; $loader->prefixDirsPsr4 = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$prefixDirsPsr4; + $loader->fallbackDirsPsr4 = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$fallbackDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$prefixesPsr0; $loader->classMap = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$classMap; }, null, ClassLoader::class); diff --git a/vendor/composer/ca-bundle/LICENSE b/vendor/composer/ca-bundle/LICENSE new file mode 100644 index 0000000..c5b5220 --- /dev/null +++ b/vendor/composer/ca-bundle/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2016 Composer + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/composer/ca-bundle/README.md b/vendor/composer/ca-bundle/README.md new file mode 100644 index 0000000..d8205ec --- /dev/null +++ b/vendor/composer/ca-bundle/README.md @@ -0,0 +1,85 @@ +composer/ca-bundle +================== + +Small utility library that lets you find a path to the system CA bundle, +and includes a fallback to the Mozilla CA bundle. + +Originally written as part of [composer/composer](https://github.com/composer/composer), +now extracted and made available as a stand-alone library. + + +Installation +------------ + +Install the latest version with: + +```bash +$ composer require composer/ca-bundle +``` + + +Requirements +------------ + +* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. + + +Basic usage +----------- + +### `Composer\CaBundle\CaBundle` + +- `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback +- `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file +- `CaBundle::validateCaFile($filename)`: Validates a CA file using openssl_x509_parse only if it is safe to use +- `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse() +- `CaBundle::reset()`: Resets the static caches + + +#### To use with curl + +```php +$curl = curl_init("https://example.org/"); + +$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(); +if (is_dir($caPathOrFile)) { + curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile); +} else { + curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile); +} + +$result = curl_exec($curl); +``` + +#### To use with php streams + +```php +$opts = array( + 'http' => array( + 'method' => "GET" + ) +); + +$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(); +if (is_dir($caPathOrFile)) { + $opts['ssl']['capath'] = $caPathOrFile; +} else { + $opts['ssl']['cafile'] = $caPathOrFile; +} + +$context = stream_context_create($opts); +$result = file_get_contents('https://example.com', false, $context); +``` + +#### To use with Guzzle + +```php +$client = new \GuzzleHttp\Client([ + \GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath() +]); +``` + +License +------- + +composer/ca-bundle is licensed under the MIT License, see the LICENSE file for details. diff --git a/vendor/composer/ca-bundle/composer.json b/vendor/composer/ca-bundle/composer.json new file mode 100644 index 0000000..22de0a8 --- /dev/null +++ b/vendor/composer/ca-bundle/composer.json @@ -0,0 +1,54 @@ +{ + "name": "composer/ca-bundle", + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "type": "library", + "license": "MIT", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Composer\\CaBundle\\": "tests" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "config": { + "platform": { + "php": "5.3.9" + } + } +} diff --git a/vendor/composer/ca-bundle/res/cacert.pem b/vendor/composer/ca-bundle/res/cacert.pem new file mode 100644 index 0000000..651694e --- /dev/null +++ b/vendor/composer/ca-bundle/res/cacert.pem @@ -0,0 +1,3466 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Wed Jan 1 04:12:10 2020 GMT +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl version 1.27. +## SHA256: f3bdcd74612952da8476a9d4147f50b29ad0710b7dd95b4c8690500209986d70 +## + + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +======================================== +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +E-Tugra Certification Authority +=============================== +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w +DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls +ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw +NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx +QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl +cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD +DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd +hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K +CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g +ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ +BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 +E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz +rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq +jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 +dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK +kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO +XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 +VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo +a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc +dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV +KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT +Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 +8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G +C7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +QuoVadis Root CA 1 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE +PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm +PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 +Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN +ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l +g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV +7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX +9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f +iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg +t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI +hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 +GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct +Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP ++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh +3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa +wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 +O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 +FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV +hMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +QuoVadis Root CA 2 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh +ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY +NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t +oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o +MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l +V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo +L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ +sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD +6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh +lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI +hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K +pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 +x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz +dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X +U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw +mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD +zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN +JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr +O3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +QuoVadis Root CA 3 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 +IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL +Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe +6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 +I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U +VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 +5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi +Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM +dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt +rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI +hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS +t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ +TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du +DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib +Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD +hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX +0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW +dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 +PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +DigiCert Assured ID Root G2 +=========================== +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw +MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH +35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq +bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw +VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP +YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn +lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO +w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv +0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz +d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW +hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M +jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +DigiCert Assured ID Root G3 +=========================== +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD +VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb +RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs +KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF +UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy +YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy +1vUhZscv6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +DigiCert Global Root G2 +======================= +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx +MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ +kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO +3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV +BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM +UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu +5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr +F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U +WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH +QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ +iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +DigiCert Global Root G3 +======================= +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD +VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw +MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k +aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C +AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O +YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp +Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y +3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 +VOKa5Vt8sycX +-----END CERTIFICATE----- + +DigiCert Trusted Root G4 +======================== +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw +HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp +pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o +k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa +vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY +QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 +MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm +mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 +f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH +dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 +oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY +ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr +yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy +7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah +ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN +5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb +/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa +5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK +G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP +82Z+ +-----END CERTIFICATE----- + +COMODO RSA Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn +dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ +FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+ +5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG +x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX +2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL +OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3 +sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C +GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5 +WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt +rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+ +nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg +tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW +sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp +pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA +zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq +ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52 +7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I +LaZRfyHBNVOFBkpdn627G190 +-----END CERTIFICATE----- + +USERTrust RSA Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK +ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK +ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz +0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j +Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn +RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O ++T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq +/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE +Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM +lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8 +yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+ +eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW +FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ +7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ +Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM +8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi +FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi +yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c +J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw +sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx +Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +USERTrust ECC Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 +0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez +nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV +HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB +HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu +9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl +OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P +AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV +MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF +JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R5 +=========================== +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 +SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS +h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx +uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 +yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G3 +================================== +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y +olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t +x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy +EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K +Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur +mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 +1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp +07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo +FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE +41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu +yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq +KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 +v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA +8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b +8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r +mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq +1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI +JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV +tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= +-----END CERTIFICATE----- + +Staat der Nederlanden EV Root CA +================================ +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M +MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl +cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk +SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW +O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r +0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 +Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV +XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr +08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV +0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd +74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx +fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa +ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu +c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq +5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN +b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN +f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi +5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 +WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK +DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy +eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== +-----END CERTIFICATE----- + +IdenTrust Commercial Root CA 1 +============================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS +b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES +MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB +IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld +hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ +mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi +1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C +XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl +3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy +NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV +WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg +xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix +uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI +hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg +ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt +ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV +YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX +feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro +kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe +2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz +Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R +cGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +IdenTrust Public Sector Root CA 1 +================================= +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv +ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV +UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS +b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy +P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 +Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI +rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf +qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS +mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn +ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh +LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v +iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL +4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw +DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A +mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt +GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt +m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx +NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 +Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI +ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC +ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ +3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug +b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw +HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT +DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx +OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP +/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz +HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU +s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y +TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx +AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 +0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z +iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi +nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ +vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO +e4pIb4tF9g== +-----END CERTIFICATE----- + +Entrust Root Certification Authority - EC1 +========================================== +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn +YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw +FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy +AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef +9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h +vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 +kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +CFCA EV ROOT +============ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE +CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB +IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw +MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD +DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV +BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD +7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN +uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW +ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 +xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f +py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K +gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol +hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ +tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf +BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q +ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua +4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG +E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX +BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn +aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy +PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX +kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C +ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GB CA +=============================== +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG +EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl +ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw +MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD +VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds +b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX +scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP +rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk +9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o +Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg +GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI +hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD +dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 +VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui +HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +SZAFIR ROOT CA2 +=============== +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG +A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV +BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ +BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD +VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q +qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK +DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE +2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ +ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi +ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC +AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 +O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 +oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul +4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 ++/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +Certum Trusted Network CA 2 +=========================== +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE +BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 +bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y +ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ +TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB +IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 +7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o +CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b +Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p +uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 +GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ +9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB +Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye +hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM +BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW +Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA +L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo +clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM +pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb +w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo +J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm +ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX +is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 +zAYspsbiDrW5viSP +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2015 +======================================================= +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT +BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 +aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx +MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg +QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV +BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw +MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv +bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh +iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ +6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd +FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr +i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F +GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 +fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu +iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI +hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ +D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM +d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y +d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn +82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb +davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F +Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt +J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa +JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q +p/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions ECC RootCA 2015 +=========================================================== +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 +aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw +MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj +IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD +VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 +Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP +dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK +Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA +GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn +dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +ISRG Root X1 +============ +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE +BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD +EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG +EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT +DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r +Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 +3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K +b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN +Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ +4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf +1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu +hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH +usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r +OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G +A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY +9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV +0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt +hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw +TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx +e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA +JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD +YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n +JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ +m+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM +================ +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT +AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw +MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD +TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf +qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr +btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL +j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou +08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw +WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT +tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ +47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC +ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa +i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o +dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s +D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ +j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT +Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW ++YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 +Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d +8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm +5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG +rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +Amazon Root CA 1 +================ +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 +MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH +FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ +gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t +dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce +VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 +DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM +CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy +8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa +2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 +xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +Amazon Root CA 2 +================ +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 +MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 +kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp +N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 +AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd +fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx +kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS +btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 +Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN +c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ +3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw +DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA +A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE +YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW +xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ +gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW +aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV +Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 +KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi +JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= +-----END CERTIFICATE----- + +Amazon Root CA 3 +================ +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB +f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr +Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 +rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc +eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +Amazon Root CA 4 +================ +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN +/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri +83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA +MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 +AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +LuxTrust Global Root 2 +====================== +-----BEGIN CERTIFICATE----- +MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG +A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh +bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW +MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm +Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2 +xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC +wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm +1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm +FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF +wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/ +a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U +ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ +MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB +/zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5 +Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT ++Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ +FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN +H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW +7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu +ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA +VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR +TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt +/f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc +7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I +iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr +-----END CERTIFICATE----- + +TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT +D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr +IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g +TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp +ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD +VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt +c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth +bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 +IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 +6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc +wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 +3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 +WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU +ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc +lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R +e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j +q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +GDCA TrustAUTH R5 ROOT +====================== +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw +BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD +DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow +YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs +AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p +OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr +pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ +9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ +xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM +R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ +D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 +oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx +9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 +H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 +6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd ++PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ +HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD +F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ +8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv +/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT +aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +TrustCor RootCert CA-1 +====================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP +MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig +U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx +MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu +YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe +VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy +dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq +jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4 +pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0 +JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h +gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw +/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j +BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5 +mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf +ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C +qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P +3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk= +-----END CERTIFICATE----- + +TrustCor RootCert CA-2 +====================== +-----BEGIN CERTIFICATE----- +MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w +DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT +eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0 +eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy +MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h +bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U +cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0 +IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb +ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk +RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1 +oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb +XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1 +/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q +jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP +eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg +rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh +8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU +2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h +Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp +kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv +2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3 +S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw +PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv +DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU +RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE +xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX +RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ +-----END CERTIFICATE----- + +TrustCor ECA-1 +============== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP +MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig +U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw +N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5 +MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y +IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR +MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23 +xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc +p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+ +fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj +YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL +f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF +AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u +/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F +hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs +J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC +jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g== +-----END CERTIFICATE----- + +SSL.com Root Certification Authority RSA +======================================== +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAM +BgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24x +MTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYw +MjEyMTczOTM5WhcNNDEwMjEyMTczOTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx +EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NM +LmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/C +Fp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8 +P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/ge +oeOy3ZExqysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkp +k8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrFYD3Z +fBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93EJNyAKoFBbZQ+yODJ +gUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2 +UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi8 +1xtZPCvM8hnIk2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s +bE6x/c+cCbqiM+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGVcpNxJK1ok1iOMq8bs3AD/CUr +dIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBcHadm47GUBwwyOabqG7B52B2ccETjit3E+ZUf +ijhDPwGFpUenPUayvOUiaPd7nNgsPgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAsl +u1OJD7OAUN5F7kR/q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjq +erQ0cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jra6x+3uxj +MxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90IH37hVZkLId6Tngr75qNJ +vTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/YK9f1JmzJBjSWFupwWRoyeXkLtoh/D1JI +Pb9s2KJELtFOt3JY04kTlf5Eq/jXixtunLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406y +wKBjYZC6VWg3dGq2ktufoYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NI +WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +SSL.com Root Certification Authority ECC +======================================== +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv +BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy +MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO +BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ +8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR +hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT +jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW +e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z +5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority RSA R2 +============================================== +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w +DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u +MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI +DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD +VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh +hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w +cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO +Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ +B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh +CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim +9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto +RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm +JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 ++qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp +qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 +++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx +Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G +guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz +OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 +CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq +lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR +rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 +hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX +9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority ECC +=========================================== +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy +BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw +MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx +EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM +LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy +3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O +BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe +5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ +N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm +m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +GlobalSign Root CA - R6 +======================= +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX +R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i +YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs +U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss +grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE +3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF +vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM +PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+ +azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O +WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy +CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP +0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN +b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE +AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV +HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0 +lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY +BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym +Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr +3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1 +0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T +uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK +oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t +JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GC CA +=============================== +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD +SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo +MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa +Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL +ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr +VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab +NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E +AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk +AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +GTS Root R1 +=========== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG +EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv +b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG +A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx +9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r +aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW +r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM +LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly +4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr +06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 +wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om +3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu +JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM +BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1 +d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv +fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm +ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b +gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq +4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr +tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo +pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0 +sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql +CFF1pkgl +-----END CERTIFICATE----- + +GTS Root R2 +=========== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG +EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv +b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG +A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk +k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo +7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI +m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm +dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu +ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz +cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW +Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl +aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy +5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM +BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT +vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ ++YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw +c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da +WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r +n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu +Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ +7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs +gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld +o/DUhgkC +-----END CERTIFICATE----- + +GTS Root R3 +=========== +-----BEGIN CERTIFICATE----- +MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU +Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej +QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP +0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0 +glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa +KaqW04MjyaR7YbPMAuhd +-----END CERTIFICATE----- + +GTS Root R4 +=========== +-----BEGIN CERTIFICATE----- +MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa +6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj +QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV +2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI +N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x +zPKwTdb+mciUqXWi4w== +-----END CERTIFICATE----- + +UCA Global G2 Root +================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG +EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x +NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU +cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT +oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV +8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS +h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o +LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/ +R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe +KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa +4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc +OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97 +8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo +5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A +Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9 +yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX +c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo +jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk +bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x +ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn +RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A== +-----END CERTIFICATE----- + +UCA Extended Validation Root +============================ +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG +EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u +IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G +A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs +iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF +Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu +eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR +59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH +0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR +el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv +B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth +WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS +NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS +3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL +BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM +aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4 +dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb ++7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW +F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi +GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc +GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi +djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr +dhh2n1ax +-----END CERTIFICATE----- + +Certigna Root CA +================ +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE +BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ +MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda +MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz +MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX +stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz +KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8 +JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16 +XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq +4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej +wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ +lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI +jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/ +/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy +dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h +LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl +cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt +OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP +TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq +7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3 +4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd +8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS +6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY +tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS +aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde +E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +emSign Root CA - G1 +=================== +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET +MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl +ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx +ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk +aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN +LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1 +cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW +DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ +6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH +hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2 +vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q +NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q ++Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih +U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +emSign ECC Root CA - G3 +======================= +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG +A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg +MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4 +MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11 +ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc +58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr +MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D +CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7 +jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +emSign Root CA - C1 +=================== +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx +EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp +Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE +BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD +ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up +ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/ +Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX +OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V +I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms +lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+ +XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD +ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp +/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1 +NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9 +wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ +BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +emSign ECC Root CA - C3 +======================= +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG +A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF +Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE +BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD +ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd +6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9 +SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA +B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA +MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU +ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +Hongkong Post Root CA 3 +======================= +-----BEGIN CERTIFICATE----- +MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQELBQAwbzELMAkG +A1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJSG9uZyBLb25nMRYwFAYDVQQK +Ew1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2 +MDMwMjI5NDZaFw00MjA2MDMwMjI5NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtv +bmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMX +SG9uZ2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz +iNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFOdem1p+/l6TWZ5Mwc50tf +jTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mIVoBc+L0sPOFMV4i707mV78vH9toxdCim +5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOe +sL4jpNrcyCse2m5FHomY2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj +0mRiikKYvLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+TtbNe/ +JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZbx39ri1UbSsUgYT2u +y1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+l2oBlKN8W4UdKjk60FSh0Tlxnf0h ++bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YKTE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsG +xVd7GYYKecsAyVKvQv83j+GjHno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwID +AQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e +i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEwDQYJKoZIhvcN +AQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG7BJ8dNVI0lkUmcDrudHr9Egw +W62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCkMpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWld +y8joRTnU+kLBEUx3XZL7av9YROXrgZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov ++BS5gLNdTaqX4fnkGMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDc +eqFS3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJmOzj/2ZQw +9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+l6mc1X5VTMbeRRAc6uk7 +nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6cJfTzPV4e0hz5sy229zdcxsshTrD3mUcY +hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB +60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq +dBb9HxEGmpv0 +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G4 +========================================= +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu +bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 +dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT +AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D +umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV +3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds +8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ +e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 +ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X +xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV +7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 +dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW +Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n +MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q +jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht +7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK +YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt +jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ +m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW +RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA +JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G ++TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT +kcpG2om3PVODLAgfi49T3f+sHw== +-----END CERTIFICATE----- diff --git a/vendor/composer/ca-bundle/src/CaBundle.php b/vendor/composer/ca-bundle/src/CaBundle.php new file mode 100644 index 0000000..29da6e8 --- /dev/null +++ b/vendor/composer/ca-bundle/src/CaBundle.php @@ -0,0 +1,324 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\CaBundle; + +use Psr\Log\LoggerInterface; +use Symfony\Component\Process\PhpProcess; + +/** + * @author Chris Smith + * @author Jordi Boggiano + */ +class CaBundle +{ + private static $caPath; + private static $caFileValidity = array(); + private static $useOpensslParse; + + /** + * Returns the system CA bundle path, or a path to the bundled one + * + * This method was adapted from Sslurp. + * https://github.com/EvanDotPro/Sslurp + * + * (c) Evan Coury + * + * For the full copyright and license information, please see below: + * + * Copyright (c) 2013, Evan Coury + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without 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. + * + * * 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. + * + * 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. + * + * @param LoggerInterface $logger optional logger for information about which CA files were loaded + * @return string path to a CA bundle file or directory + */ + public static function getSystemCaRootBundlePath(LoggerInterface $logger = null) + { + if (self::$caPath !== null) { + return self::$caPath; + } + $caBundlePaths = array(); + + + // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that. + // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. + $caBundlePaths[] = self::getEnvVariable('SSL_CERT_FILE'); + + // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that. + // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. + $caBundlePaths[] = self::getEnvVariable('SSL_CERT_DIR'); + + $caBundlePaths[] = ini_get('openssl.cafile'); + $caBundlePaths[] = ini_get('openssl.capath'); + + $otherLocations = array( + '/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package) + '/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package) + '/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package) + '/usr/local/share/certs/ca-root-nss.crt', // FreeBSD (ca_root_nss_package) + '/usr/ssl/certs/ca-bundle.crt', // Cygwin + '/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package + '/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option) + '/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat? + '/etc/ssl/cert.pem', // OpenBSD + '/usr/local/etc/ssl/cert.pem', // FreeBSD 10.x + '/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package + '/usr/local/etc/openssl@1.1/cert.pem', // OS X homebrew, openssl@1.1 package + ); + + foreach($otherLocations as $location) { + $otherLocations[] = dirname($location); + } + + $caBundlePaths = array_merge($caBundlePaths, $otherLocations); + + foreach ($caBundlePaths as $caBundle) { + if (self::caFileUsable($caBundle, $logger)) { + return self::$caPath = $caBundle; + } + + if (self::caDirUsable($caBundle)) { + return self::$caPath = $caBundle; + } + } + + return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort + } + + /** + * Returns the path to the bundled CA file + * + * In case you don't want to trust the user or the system, you can use this directly + * + * @return string path to a CA bundle file + */ + public static function getBundledCaBundlePath() + { + $caBundleFile = __DIR__.'/../res/cacert.pem'; + + // cURL does not understand 'phar://' paths + // see https://github.com/composer/ca-bundle/issues/10 + if (0 === strpos($caBundleFile, 'phar://')) { + file_put_contents( + $tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-'), + file_get_contents($caBundleFile) + ); + + register_shutdown_function(function() use ($tempCaBundleFile) { + @unlink($tempCaBundleFile); + }); + + $caBundleFile = $tempCaBundleFile; + } + + return $caBundleFile; + } + + /** + * Validates a CA file using opensl_x509_parse only if it is safe to use + * + * @param string $filename + * @param LoggerInterface $logger optional logger for information about which CA files were loaded + * + * @return bool + */ + public static function validateCaFile($filename, LoggerInterface $logger = null) + { + static $warned = false; + + if (isset(self::$caFileValidity[$filename])) { + return self::$caFileValidity[$filename]; + } + + $contents = file_get_contents($filename); + + // assume the CA is valid if php is vulnerable to + // https://www.sektioneins.de/advisories/advisory-012013-php-openssl_x509_parse-memory-corruption-vulnerability.html + if (!static::isOpensslParseSafe()) { + if (!$warned && $logger) { + $logger->warning(sprintf( + 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', + PHP_VERSION + )); + $warned = true; + } + + $isValid = !empty($contents); + } else { + $isValid = (bool) openssl_x509_parse($contents); + } + + if ($logger) { + $logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid')); + } + + return self::$caFileValidity[$filename] = $isValid; + } + + /** + * Test if it is safe to use the PHP function openssl_x509_parse(). + * + * This checks if OpenSSL extensions is vulnerable to remote code execution + * via the exploit documented as CVE-2013-6420. + * + * @return bool + */ + public static function isOpensslParseSafe() + { + if (null !== self::$useOpensslParse) { + return self::$useOpensslParse; + } + + if (PHP_VERSION_ID >= 50600) { + return self::$useOpensslParse = true; + } + + // Vulnerable: + // PHP 5.3.0 - PHP 5.3.27 + // PHP 5.4.0 - PHP 5.4.22 + // PHP 5.5.0 - PHP 5.5.6 + if ( + (PHP_VERSION_ID < 50400 && PHP_VERSION_ID >= 50328) + || (PHP_VERSION_ID < 50500 && PHP_VERSION_ID >= 50423) + || (PHP_VERSION_ID < 50600 && PHP_VERSION_ID >= 50507) + ) { + // This version of PHP has the fix for CVE-2013-6420 applied. + return self::$useOpensslParse = true; + } + + if (defined('PHP_WINDOWS_VERSION_BUILD')) { + // Windows is probably insecure in this case. + return self::$useOpensslParse = false; + } + + $compareDistroVersionPrefix = function ($prefix, $fixedVersion) { + $regex = '{^'.preg_quote($prefix).'([0-9]+)$}'; + + if (preg_match($regex, PHP_VERSION, $m)) { + return ((int) $m[1]) >= $fixedVersion; + } + + return false; + }; + + // Hard coded list of PHP distributions with the fix backported. + if ( + $compareDistroVersionPrefix('5.3.3-7+squeeze', 18) // Debian 6 (Squeeze) + || $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) // Debian 7 (Wheezy) + || $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9) // Ubuntu 12.04 (Precise) + ) { + return self::$useOpensslParse = true; + } + + // Symfony Process component is missing so we assume it is unsafe at this point + if (!class_exists('Symfony\Component\Process\PhpProcess')) { + return self::$useOpensslParse = false; + } + + // This is where things get crazy, because distros backport security + // fixes the chances are on NIX systems the fix has been applied but + // it's not possible to verify that from the PHP version. + // + // To verify exec a new PHP process and run the issue testcase with + // known safe input that replicates the bug. + + // Based on testcase in https://github.com/php/php-src/commit/c1224573c773b6845e83505f717fbf820fc18415 + // changes in https://github.com/php/php-src/commit/76a7fd893b7d6101300cc656058704a73254d593 + $cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'; + $script = <<<'EOT' + +error_reporting(-1); +$info = openssl_x509_parse(base64_decode('%s')); +var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']); + +EOT; + $script = '<'."?php\n".sprintf($script, $cert); + + try { + $process = new PhpProcess($script); + $process->mustRun(); + } catch (\Exception $e) { + // In the case of any exceptions just accept it is not possible to + // determine the safety of openssl_x509_parse and bail out. + return self::$useOpensslParse = false; + } + + $output = preg_split('{\r?\n}', trim($process->getOutput())); + $errorOutput = trim($process->getErrorOutput()); + + if ( + count($output) === 3 + && $output[0] === sprintf('string(%d) "%s"', strlen(PHP_VERSION), PHP_VERSION) + && $output[1] === 'string(27) "stefan.esser@sektioneins.de"' + && $output[2] === 'int(-1)' + && preg_match('{openssl_x509_parse\(\): illegal (?:ASN1 data type for|length in) timestamp in - on line \d+}', $errorOutput) + ) { + // This PHP has the fix backported probably by a distro security team. + return self::$useOpensslParse = true; + } + + return self::$useOpensslParse = false; + } + + /** + * Resets the static caches + */ + public static function reset() + { + self::$caFileValidity = array(); + self::$caPath = null; + self::$useOpensslParse = null; + } + + private static function getEnvVariable($name) + { + if (isset($_SERVER[$name])) { + return (string) $_SERVER[$name]; + } + + if (PHP_SAPI === 'cli' && ($value = getenv($name)) !== false && $value !== null) { + return (string) $value; + } + + return false; + } + + private static function caFileUsable($certFile, LoggerInterface $logger = null) + { + return $certFile && @is_file($certFile) && @is_readable($certFile) && static::validateCaFile($certFile, $logger); + } + + private static function caDirUsable($certDir) + { + return $certDir && @is_dir($certDir) && @is_readable($certDir) && glob($certDir . '/*'); + } +} diff --git a/vendor/composer/composer/.editorconfig b/vendor/composer/composer/.editorconfig new file mode 100644 index 0000000..033f8a6 --- /dev/null +++ b/vendor/composer/composer/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +charset = utf-8 +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.yml] +indent_size = 2 diff --git a/vendor/composer/composer/.gitattributes b/vendor/composer/composer/.gitattributes new file mode 100644 index 0000000..51b4311 --- /dev/null +++ b/vendor/composer/composer/.gitattributes @@ -0,0 +1,17 @@ +# Auto-detect text files, ensure they use LF. +* text=auto eol=lf + +# These files are always considered text and should use LF. +# See core.whitespace @ http://git-scm.com/docs/git-config for whitespace flags. +*.php text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 diff=php +*.json text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 +*.test text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 +*.yml text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=2 + +# Exclude non-essential files from dist +/tests export-ignore +.github export-ignore +.php_cs export-ignore +.travis.yml export-ignore +appveyor.yml export-ignore +phpunit.xml.dist export-ignore diff --git a/vendor/composer/composer/.gitignore b/vendor/composer/composer/.gitignore new file mode 100644 index 0000000..f9d78df --- /dev/null +++ b/vendor/composer/composer/.gitignore @@ -0,0 +1,11 @@ +/.settings +/.project +/.buildpath +/composer.phar +/vendor +/nbproject +phpunit.xml +.vagrant +Vagrantfile +.idea +.php_cs.cache \ No newline at end of file diff --git a/vendor/composer/composer/CHANGELOG.md b/vendor/composer/composer/CHANGELOG.md new file mode 100644 index 0000000..b788e7f --- /dev/null +++ b/vendor/composer/composer/CHANGELOG.md @@ -0,0 +1,855 @@ +### [1.9.3] 2020-02-04 + + * Fixed GitHub deprecation of access_token query parameter, now using Authorization header + +### [1.9.2] 2020-01-14 + + * Fixed minor git driver bugs + * Fixed schema validation for version field to allow dev-* versions too + * Fixed external processes' output being formatted even though it should not + * Fixed issue with path repositories when trying to install feature branches + +### [1.9.1] 2019-11-01 + + * Fixed various credential handling issues with gitlab and github + * Fixed credentials being present in git remotes in Composer cache and vendor directory when not using SSH keys + * Fixed `composer why` not listing replacers as a reason something is present + * Fixed various PHP 7.4 compatibility issues + * Fixed root warnings always present in Docker containers, setting COMPOSER_ALLOW_SUPERUSER is not necessary anymore + * Fixed GitHub access tokens leaking into debug-verbosity output + * Fixed several edge case issues detecting GitHub, Bitbucket and GitLab repository types + * Fixed Composer asking if you want to use a composer.json in a parent directory when ran in non-interactive mode + * Fixed classmap autoloading issue finding classes located within a few non-PHP context blocks (?>... instead of proper colors + * Fixed 1.7.0-RC regression in output missing "Loading from cache" output on package install + +### [1.7.0-RC] 2018-07-24 + + * Changed default repository URL from packagist.org to repo.packagist.org, this might affect people with strict firewall rules + * Changed output from Updating to Downgrading when performing package downgrades, this might affect anything parsing output + * Several minor performance improvements + * Added basic authentication support for mercurial repos + * Added explicit `i` and `u` aliases for the `install` and `update` commands + * Added support for `show` command to output json format with --tree + * Added support for {glob,braces} support in the path repository's path argument + * Added support in `status` command for showing diffs in vendor dir even for packages installed as dist/zip archives + * Added `--remove-vcs` flag to `create-project` command to avoid prompting for keeping VCS files + * Added `--no-secure-http` flag to `create-project` command to bypass https (use at your own risk) + * Added `pre-command-run` event that lets plugins modify arguments + * Added RemoteFilesystem::getRemoteContents extension point + * Fixed setting scripts via `config` command + +### [1.6.5] 2018-05-04 + + * Fixed regression in 1.6.4 causing strange update behaviors with dev packages + * Fixed regression in 1.6.4 color support detection for Windows + * Fixed issues dealing with broken symlinks when switching branches and using path repositories + * Fixed JSON schema for package repositories + * Fixed issues on computers set to Turkish locale + * Fixed classmap parsing of files using short-open-tags when they are disabled in php + +### [1.6.4] 2018-04-13 + + * Security fixes in some edge case scenarios, recommended update for all users + * Fixed regression in version guessing of path repositories + * Fixed removing aliased packages from the repository, which might resolve some odd update bugs + * Fixed updating of package URLs for GitLab + * Fixed run-script --list failing when script handlers were defined + * Fixed init command not respecting the current php version when selecting package versions + * Fixed handling of uppercase package names in why/why-not commands + * Fixed exclude-from-classmap symlink handling + * Fixed filesystem permissions of PEAR binaries + * Improved performance of subversion repos + * Other minor fixes + +### [1.6.3] 2018-01-31 + + * Fixed GitLab downloads failing in some edge cases + * Fixed ctrl-C handling during create-project + * Fixed GitHub VCS repositories not prompting for a token in some conditions + * Fixed SPDX license identifiers being case sensitive + * Fixed and clarified a few dependency resolution error reporting strings + * Fixed SVN commit log fetching in verbose mode when using private repositories + +### [1.6.2] 2018-01-05 + + * Fixed more autoloader regressions + * Fixed support for updating dist refs in gitlab URLs + +### [1.6.1] 2018-01-04 + + * Fixed upgrade regression due to some autoloader cleanups + * Fixed some overly loose version constraints + +### [1.6.0] 2018-01-04 + + * Added support for SPDX license identifiers v3.0, deprecates GPL/LGPL/AGPL identifiers, which should now have a `-only` or `-or-later` suffix added. + * Added support for COMPOSER_MEMORY_LIMIT env var to make Composer set the PHP memory limit explicitly + * Added support for simple strings for the `bin` + * Fixed `check-platform-reqs` bug in version checking + +### [1.6.0-RC] 2017-12-19 + + * Improved performance of installs and updates from git clones when checking out known commits + * Added `check-platform-reqs` command that checks that your PHP and extensions versions match the platform requirements of the installed packages + * Added `--with-all-dependencies` to the `update` and `require` commands which updates all dependencies of the listed packages, including those that are direct root requirements + * Added `scripts-descriptions` key to composer.json to customize the description and document your custom commands + * Added support for the uppercase NO_PROXY env var + * Added support for COMPOSER_DEFAULT_{AUTHOR,LICENSE,EMAIL,VENDOR} env vars to pre-populate init command values + * Added support for local fossil repositories + * Added suggestions for alternative spellings when entering packages in `init` and `require` commands and nothing can be found + * Fixed installed.json data to be sorted alphabetically by package name + * Fixed compatibility with Symfony 4.x components that Composer uses + +### [1.5.6] - 2017-12-18 + + * Fixed root package version guessed when a tag is checked out + * Fixed support for GitLab repos hosted on non-standard ports + * Fixed regression in require command when requiring unstable packages, part 3 + +### [1.5.5] - 2017-12-01 + + * Fixed regression in require command when requiring unstable packages, part 2 + +### [1.5.4] - 2017-12-01 + + * Fixed regression in require command when requiring unstable packages + +### [1.5.3] - 2017-11-30 + + * Fixed require/remove commands reverting the composer.json change when a non-solver-related error occurs + * Fixed GitLabDriver to support installations of GitLab not at the root of the domain + * Fixed create-project not following the optimize-autoloader flag of the root package + * Fixed Authorization header being forwarded across domains after a redirect + * Improved some error messages for clarity + +### [1.5.2] - 2017-09-11 + + * Fixed GitLabDriver looping endlessly in some conditions + * Fixed GitLabDriver support for unauthenticated requests + * Fixed GitLab zip downloads not triggering credentials prompt if unauthenticated + * Fixed path repository support of COMPOSER_ROOT_VERSION, it now applies to all path repos within the same git repository + * Fixed path repository handling of copies to avoid copying VCS files and others + * Fixed sub-directory call to ignore list and create-project commands as well as calls to Composer using --working-dir + * Fixed invalid warning appearing when calling `remove` on an non-stable package + +### [1.5.1] - 2017-08-09 + + * Fixed regression in GitLabDriver with repos containing >100 branches or tags + * Fixed sub-directory call support to respect the COMPOSER env var + +### [1.5.0] - 2017-08-08 + + * Changed the package install order to ensure that plugins are always installed as soon as possible + * Added ability to call composer from within sub-directories of a project + * Added support for GitLab API v4 + * Added support for GitLab sub-groups + * Added some more rules to composer validate + * Added support for reading the `USER` env when guessing the username in `composer init` + * Added warning when uncompressing files with the same name but difference cases on case insensitive filesystems + * Added `htaccess-protect` option / `COMPOSER_HTACCESS_PROTECT` env var to disable the .htaccess creation in home dir (defaults to true) + * Improved `clear-cache` command + * Minor improvements/fixes and many documentation updates + +### [1.4.3] - 2017-08-06 + + * Fixed GitLab URLs + * Fixed root package version detection using latest git versions + * Fixed inconsistencies in date format in composer.lock when installing from source + * Fixed Mercurial support regression + * Fixed exclude-from-classmap not being applied when autoloading files for Composer plugins + * Fixed exclude-from-classmap being ignored when cwd has the wrong case on case insensitive filesystems + * Fixed several other minor issues + +### [1.4.2] - 2017-05-17 + + * Fixed Bitbucket API handler parsing old deleted branches in hg repos + * Fixed regression in gitlab downloads + * Fixed output inconsistencies + * Fixed unicode handling in `init` command for author names + * Fixed useless warning when doing partial updates/removes on packages that are not currently installed + * Fixed xdebug disabling issue when combined with disable_functions and allow_url_fopen CLI overrides + +### [1.4.1] - 2017-03-10 + + * Fixed `apcu-autoloader` config option being ignored in `dump-autoload` command + * Fixed json validation not allowing boolean for trunk-path, branches-path and tags-path in svn repos + * Fixed json validation not allowing repository URLs without scheme + +### [1.4.0] - 2017-03-08 + + * Improved memory usage of dependency solver + * Added `--format json` option to the `outdated` and `show` command to get machine readable package listings + * Added `--ignore-filters` flag to `archive` command to bypass the .gitignore and co + * Added support for `outdated` output without ansi colors + * Added support for Bitbucket API v2 + * Changed the require command to follow minimum-stability / prefer-stable values when picking a version + * Fixed regression when using composer in a Mercurial repository + +### [1.3.3] - 2017-03-08 + + * **Capifony users beware**: This release has output format tweaks that mess up capifony interactive mode, see #6233 + * Improved baseline psr-4 autoloader performance for projects with many nested namespaces configured + * Fixed issues with gitlab API access when the token had insufficient permissions + * Fixed some HHVM strict type issues + * Fixed version guessing of headless git checkouts in some conditions + * Fixed compatibility with subversion 1.8 + * Fixed version guessing not working with svn/hg + * Fixed script/exec errors not being output correctly + * Fixed PEAR repository bug with pear.php.net + +### [1.3.2] - 2017-01-27 + + * Added `COMPOSER_BINARY` env var that is defined within the scope of a Composer run automatically with the path to the phar file + * Fixed create-project ending in a detached HEAD when installing aliased packages + * Fixed composer show not returning non-zero exit code when the package does not exist + * Fixed `@composer` handling in scripts when --working-dir is used together with it + * Fixed private-GitLab handling of repos with dashes in them + +### [1.3.1] - 2017-01-07 + + * Fixed dist downloads from Bitbucket + * Fixed some regressions related to xdebug disabling + * Fixed `--minor-only` flag in `outdated` command + * Fixed handling of config.platform.php which did not replace other php-* package's versions + +### [1.3.0] - 2016-12-24 + + * Fixed handling of annotated git tags vs lightweight tags leading to useless updates sometimes + * Fixed ext-xdebug not being require-able anymore due to automatic xdebug disabling + * Fixed case insensitivity of remove command + +### [1.3.0-RC] - 2016-12-11 + + * Added workaround for xdebug performance impact by restarting PHP without xdebug automatically in case it is enabled + * Added `--minor-only` to the `outdated` command to only show updates to minor versions and ignore new major versions + * Added `--apcu-autoloader` to the `update`/`install` commands and `--apcu` to `dump-autoload` to enable an APCu-caching autoloader, which can be more efficient than --classmap-authoritative if you attempt to autoload many classes that do not exist, or if you can not use authoritative classmaps for some reason + * Added summary of operations to be executed before they run, and made execution output more compact + * Added `php-debug` and `php-zts` virtual platform packages + * Added `gitlab-token` auth config for GitLab private tokens + * Added `--strict` to the `outdated` command to return a non-zero exit code when there are outdated packages + * Added ability to call php scripts using the current php interpreter (instead of finding php in PATH by default) in script handlers via `@php ...` + * Added `COMPOSER_ALLOW_XDEBUG` env var to circumvent the xdebug-disabling behavior + * Added `COMPOSER_MIRROR_PATH_REPOS` env var to force mirroring of path repositories vs symlinking + * Added `COMPOSER_DEV_MODE` env var that is set by Composer to forward the dev mode to script handlers + * Fixed support for git 2.11 + * Fixed output from zip and rar leaking out when an error occurred + * Removed `hash` from composer.lock, only `content-hash` is now used which should reduce conflicts + * Minor fixes and performance improvements + +### [1.2.4] - 2016-12-06 + + * Fixed regression in output handling of scripts from 1.2.3 + * Fixed support for LibreSSL detection as lib-openssl + * Fixed issue with Zend Guard in the autoloader bootstrapping + * Fixed support for loading partial provider repositories + +### [1.2.3] - 2016-12-01 + + * Fixed bug in HgDriver failing to identify BitBucket repositories + * Fixed support for loading partial provider repositories + +### [1.2.2] - 2016-11-03 + + * Fixed selection of packages based on stability to be independent from package repository order + * Fixed POST_DEPENDENCIES_SOLVING not containing some operations in edge cases + * Fixed issue handling GitLab URLs containing dots and other special characters + * Fixed issue on Windows when running composer at the root of a drive + * Minor fixes + +### [1.2.1] - 2016-09-12 + + * Fixed edge case issues with the static autoloader + * Minor fixes + +### [1.2.0] - 2016-07-19 + + * Security: Fixed [httpoxy](https://httpoxy.org/) vulnerability + * Fixed `home` command to avoid rogue output on unix + * Fixed output of git clones to clearly state when clones are from cache + * (from 1.2 RC) Fixed ext-network-ipv6 to be php-ipv6 + +### [1.2.0-RC] - 2016-07-04 + + * Added caching of git repositories if you have git 2.3+ installed. Repositories will now be cached once and then cloned from local cache so subsequent installs should be faster + * Added detection of HEAD changes to the `status` command. If you `git checkout X` in a vendor directory for example it will tell you that it is not at the version that was installed + * Added a virtual `php-ipv6` extension to require PHP compiled with IPv6 support + * Added `--no-suggest` to `install` and `update` commands to skip output of suggestions at the end + * Added `--type` to the `search` command to restrict to a given package type + * Added fossil support as alternative to git/svn/.. for package downloads + * Improved BitBucket OAuth support + * Added support for blocking cache operations using COMPOSER_CACHE_DIR=/dev/null (or NUL on windows) + * Added support for using declare(strict_types=1) in plugins + * Added `--prefer-stable` and `--prefer-lowest` to the `require` command + * Added `--no-scripts` to the `require` and `remove` commands + * Added `_comment` top level key to the schema to endorse using it as a place to store comments (it can be a string or array of strings) + * Added support for justinrainbow/json-schema 2.0 + * Fixed binaries not being re-installed if deleted by users or the bin-dir changes. `update` and `install` will now re-install them + * Many minor UX and docs improvements + +### [1.1.3] - 2016-06-26 + + * Fixed bitbucket oauth instructions + * Fixed version parsing issue + * Fixed handling of bad proxies that modify JSON content on the fly + +### [1.1.2] - 2016-05-31 + + * Fixed degraded mode issue when accessing packagist.org + * Fixed GitHub access_token being added on subsequent requests in case of redirections + * Fixed exclude-from-classmap not working in some circumstances + * Fixed openssl warning preventing the use of config command for disabling tls + +### [1.1.1] - 2016-05-17 + + * Fixed regression in handling of #reference which made it update every time + * Fixed dev platform requirements being required even in --no-dev install from a lock file + * Fixed parsing of extension versions that do not follow valid numbers, we now try to parse x.y.z and ignore the rest + * Fixed exact constraints warnings appearing for 0.x versions + * Fixed regression in the `remove` command + +### [1.1.0] - 2016-05-10 + + * Added fallback to SSH for https bitbucket URLs + * Added BaseCommand::isProxyCommand that can be overridden to mark a command as being a mere proxy, which helps avoid duplicate warnings etc on composer startup + * Fixed archiving generating long paths in zip files on Windows + +### [1.1.0-RC] - 2016-04-29 + + * Added ability for plugins to register their own composer commands + * Optimized the autoloader initialization using static loading on PHP 5.6 and above, this reduces the load time for large classmaps to almost nothing + * Added `--latest` to `show` command to show the latest version available of your dependencies + * Added `--outdated` to `show` command an `composer outdated` alias for it, to show only packages in need of update + * Added `--direct` to `show` and `outdated` commands to show only your direct dependencies in the listing + * Added support for editing all top-level properties (name, minimum-stability, ...) as well as extra values via the `config` command + * Added abandoned state warning to the `show` and `outdated` commands when listing latest packages + * Added support for `~/` and `$HOME/` in the path repository paths + * Added support for wildcards in the `show` command package filter, e.g. `composer show seld/*` + * Added ability to call composer itself from scripts via `@composer ...` + * Added untracked files detection to the `status` command + * Added warning to `validate` command when using exact-version requires + * Added warning once per domain when accessing insecure URLs with secure-http disabled + * Added a dependency on composer/ca-bundle (extracted CA bundle management to a standalone lib) + * Added support for empty directories when archiving to tar + * Added an `init` event for plugins to react to, which occurs right after a Composer instance is fully initialized + * Added many new detections of problems in the `why-not`/`prohibits` command to figure out why something does not get installed in the expected version + * Added a deprecation notice for script event listeners that use legacy script classes + * Fixed abandoned state not showing up if you had a package installed before it was marked abandoned + * Fixed --no-dev updates creating an incomplete lock file, everything is now always resolved on update + * Fixed partial updates in case the vendor dir was not up to date with the lock file + +### [1.0.3] - 2016-04-29 + + * Security: Fixed possible command injection from the env vars into our sudo detection + * Fixed interactive authentication with gitlab + * Fixed class name replacement in plugins + * Fixed classmap generation mistakenly detecting anonymous classes + * Fixed auto-detection of stability flags in complex constraints like `2.0-dev || ^1.5` + * Fixed content-length handling when redirecting to very small responses + +### [1.0.2] - 2016-04-21 + + * Fixed regression in 1.0.1 on systems with mbstring.func_overload enabled + * Fixed regression in 1.0.1 that made dev packages update to the latest reference even if not whitelisted in a partial update + * Fixed init command ignoring the COMPOSER env var for choosing the json file name + * Fixed error reporting bug when the dependency resolution fails + * Fixed handling of `$` sign in composer config command in some cases it could corrupt the json file + +### [1.0.1] - 2016-04-18 + + * Fixed URL updating when a package's URL changes, composer.lock now contains the right URL including correct reference + * Fixed URL updating of the origin git remote as well for packages installed as git clone + * Fixed binary .bat files generated from linux being incompatible with windows cmd + * Fixed handling of paths with trailing slashes in path repository + * Fixed create-project not using platform config when selecting a package + * Fixed self-update not showing the channel it uses to perform the update + * Fixed file downloads not failing loudly when the content does not match the Content-Length header + * Fixed secure-http detecting some malformed URLs as insecure + * Updated CA bundle + +### [1.0.0] - 2016-04-05 + + * Added support for bitbucket-oauth configuration + * Added warning when running composer as super user, set COMPOSER_ALLOW_SUPERUSER=1 to hide the warning if you really must + * Added PluginManager::getGlobalComposer getter to retrieve the global instance (which can be null!) + * Fixed dependency solver error reporting in many cases it now shows you proper errors instead of just saying a package does not exist + * Fixed output of failed downloads appearing as 100% done instead of Failed + * Fixed handling of empty directories when archiving, they are not skipped anymore + * Fixed installation of broken plugins corrupting the vendor state when combined with symlinked path repositories + +### [1.0.0-beta2] - 2016-03-27 + + * Break: The `install` command now turns into an `update` command automatically if you have no composer.lock. This was done only half-way before which caused inconsistencies + * Break: By default the `remove` command now removes dependencies as well, and --update-with-dependencies is deprecated. Use --no-update-with-dependencies to get old behavior + * Added support for update channels in `self-update`. All users will now update to stable builds by default. Run `self-update` with `--snapshot`, `--preview` or `--stable` to switch between update channels. + * Added support for SSL_CERT_DIR env var and openssl.capath ini value + * Added some conflict detection in `why-not` command + * Added suggestion of root package's suggests in `create-project` command + * Fixed `create-project` ignoring --ignore-platform-reqs when choosing a version of the package + * Fixed `search` command in a directory without composer.json + * Fixed path repository handling of symlinks on windows + * Fixed PEAR repo handling to prefer HTTPS mirrors over HTTP ones + * Fixed handling of Path env var on Windows, only PATH was accepted before + * Small error reporting and docs improvements + +### [1.0.0-beta1] - 2016-03-03 + + * Break: By default we now disable any non-secure protocols (http, git, svn). This may lead to issues if you rely on those. See `secure-http` config option. + * Break: `show` / `list` command now only show installed packages by default. An `--all` option is added to show all packages. + * Added VCS repo support for the GitLab API, see also `gitlab-oauth` and `gitlab-domains` config options + * Added `prohibits` / `why-not` command to show what blocks an upgrade to a given package:version pair + * Added --tree / -t to the `show` command to see all your installed packages in a tree view + * Added --interactive / -i to the `update` command, which lets you pick packages to update interactively + * Added `exec` command to run binaries while having bin-dir in the PATH for convenience + * Added --root-reqs to the `update` command to update only your direct, first degree dependencies + * Added `cafile` and `capath` config options to control HTTPS certificate authority + * Added pubkey verification of composer.phar when running self-update + * Added possibility to configure per-package `preferred-install` types for more flexibility between prefer-source and prefer-dist + * Added unpushed-changes detection when updating dependencies and in the `status` command + * Added COMPOSER_AUTH env var that lets you pass a json configuration like the auth.json file + * Added `secure-http` and `disable-tls` config options to control HTTPS/HTTP + * Added warning when Xdebug is enabled as it reduces performance quite a bit, hide it with COMPOSER_DISABLE_XDEBUG_WARN=1 if you must + * Added duplicate key detection when loading composer.json + * Added `sort-packages` config option to force sorting of the requirements when using the `require` command + * Added support for the XDG Base Directory spec on linux + * Added XzDownloader for xz file support + * Fixed SSL support to fully verify peers in all PHP versions, unsecure HTTP is also disabled by default + * Fixed stashing and cleaning up of untracked files when updating packages + * Fixed plugins being enabled after installation even when --no-plugins + * Many small bug fixes and additions + +### [1.0.0-alpha11] - 2015-11-14 + + * Added config.platform to let you specify what your target environment looks like and make sure you do not inadvertently install dependencies that would break it + * Added `exclude-from-classmap` in the autoload config that lets you ignore sub-paths of classmapped directories, or psr-0/4 directories when building optimized autoloaders + * Added `path` repository type to install/symlink packages from local paths + * Added possibility to reference script handlers from within other handlers using @script-name to reduce duplication + * Added `suggests` command to show what packages are suggested, use -v to see more details + * Added `content-hash` inside the composer.lock to restrict the warnings about outdated lock file to some specific changes in the composer.json file + * Added `archive-format` and `archive-dir` config options to specify default values for the archive command + * Added --classmap-authoritative to `install`, `update`, `require`, `remove` and `dump-autoload` commands, forcing the optimized classmap to be authoritative + * Added -A / --with-dependencies to the `validate` command to allow validating all your dependencies recursively + * Added --strict to the `validate` command to treat any warning as an error that then returns a non-zero exit code + * Added a dependency on composer/semver, which is the externalized lib for all the version constraints parsing and handling + * Added support for classmap autoloading to load plugin classes and script handlers + * Added `bin-compat` config option that if set to `full` will create .bat proxy for binaries even if Composer runs in a linux VM + * Added SPDX 2.0 support, and externalized that in a composer/spdx-licenses lib + * Added warnings when the classmap autoloader finds duplicate classes + * Added --file to the `archive` command to choose the filename + * Added Ctrl+C handling in create-project to cancel the operation cleanly + * Fixed version guessing to use ^ always, default to stable versions, and avoid versions that require a higher php version than you have + * Fixed the lock file switching back and forth between old and new URL when a package URL is changed and many people run updates + * Fixed partial updates updating things they shouldn't when the current vendor dir was out of date with the lock file + * Fixed PHAR file creation to be more reproducible and always generate the exact same phar file from a given source + * Fixed issue when checking out git branches or tags that are also the name of a file in the repo + * Many minor fixes and documentation additions and UX improvements + +### [1.0.0-alpha10] - 2015-04-14 + + * Break: The following event classes are deprecated and you should update your script handlers to use the new ones in type hints: + - `Composer\Script\CommandEvent` is deprecated, use `Composer\Script\Event` + - `Composer\Script\PackageEvent` is deprecated, use `Composer\Installer\PackageEvent` + * Break: Output is now split between stdout and stderr. Any irrelevant output to each command is on stderr as per unix best practices. + * Added support for npm-style semver operators (`^` and `-` ranges, ` ` = AND, `||` = OR) + * Added --prefer-lowest to `update` command to allow testing a package with the lowest declared dependencies + * Added support for parsing semver build metadata `+anything` at the end of versions + * Added --sort-packages option to `require` command for sorting dependencies + * Added --no-autoloader to `install` and `update` commands to skip autoload generation + * Added --list to `run-script` command to see available scripts + * Added --absolute to `config` command to get back absolute paths + * Added `classmap-authoritative` config option, if enabled only the classmap info will be used by the composer autoloader + * Added support for branch-alias on numeric branches + * Added support for the `https_proxy`/`HTTPS_PROXY` env vars used only for https URLs + * Added support for using real composer repos as local paths in `create-project` command + * Added --no-dev to `licenses` command + * Added support for PHP 7.0 nightly builds + * Fixed detection of stability when parsing multiple constraints + * Fixed installs from lock file containing updated composer.json requirement + * Fixed the autoloader suffix in vendor/autoload.php changing in every build + * Many minor fixes, documentation additions and UX improvements + +### [1.0.0-alpha9] - 2014-12-07 + + * Added `remove` command to do the reverse of `require` + * Added --ignore-platform-reqs to `install`/`update` commands to install even if you are missing a php extension or have an invalid php version + * Added a warning when abandoned packages are being installed + * Added auto-selection of the version constraint in the `require` command, which can now be used simply as `composer require foo/bar` + * Added ability to define custom composer commands using scripts + * Added `browse` command to open a browser to the given package's repo URL (or homepage with `-H`) + * Added an `autoload-dev` section to declare dev-only autoload rules + a --no-dev flag to dump-autoload + * Added an `auth.json` file, with `store-auths` config option + * Added a `http-basic` config option to store login/pwds to hosts + * Added failover to source/dist and vice-versa in case a download method fails + * Added --path (-P) flag to the show command to see the install path of packages + * Added --update-with-dependencies and --update-no-dev flags to the require command + * Added `optimize-autoloader` config option to force the `-o` flag from the config + * Added `clear-cache` command + * Added a GzipDownloader to download single gzipped files + * Added `ssh` support in the `github-protocols` config option + * Added `pre-dependencies-solving` and `post-dependencies-solving` events + * Added `pre-archive-cmd` and `post-archive-cmd` script events to the `archive` command + * Added a `no-api` flag to GitHub VCS repos to skip the API but still get zip downloads + * Added http-basic auth support for private git repos not on github + * Added support for autoloading `.hh` files when running HHVM + * Added support for PHP 5.6 + * Added support for OTP auth when retrieving a GitHub API key + * Fixed isolation of `files` autoloaded scripts to ensure they can not affect anything + * Improved performance of solving dependencies + * Improved SVN and Perforce support + * A boatload of minor fixes, documentation additions and UX improvements + +### [1.0.0-alpha8] - 2014-01-06 + + * Break: The `install` command now has --dev enabled by default. --no-dev can be used to install without dev requirements + * Added `composer-plugin` package type to allow extensibility, and deprecated `composer-installer` + * Added `psr-4` autoloading support and deprecated `target-dir` since it is a better alternative + * Added --no-plugins flag to replace --no-custom-installers where available + * Added `global` command to operate Composer in a user-global directory + * Added `licenses` command to list the license of all your dependencies + * Added `pre-status-cmd` and `post-status-cmd` script events to the `status` command + * Added `post-root-package-install` and `post-create-project-cmd` script events to the `create-project` command + * Added `pre-autoload-dump` script event + * Added --rollback flag to self-update + * Added --no-install flag to create-project to skip installing the dependencies + * Added a `hhvm` platform package to require Facebook's HHVM implementation of PHP + * Added `github-domains` config option to allow using GitHub Enterprise with Composer's GitHub support + * Added `prepend-autoloader` config option to allow appending Composer's autoloader instead of the default prepend behavior + * Added Perforce support to the VCS repository + * Added a vendor/composer/autoload_files.php file that lists all files being included by the files autoloader + * Added support for the `no_proxy` env var and other proxy support improvements + * Added many robustness tweaks to make sure zip downloads work more consistently and corrupted caches are invalidated + * Added the release date to `composer -V` output + * Added `autoloader-suffix` config option to allow overriding the randomly generated autoloader class suffix + * Fixed BitBucket API usage + * Fixed parsing of inferred stability flags that are more stable than the minimum stability + * Fixed installation order of plugins/custom installers + * Fixed tilde and wildcard version constraints to be more intuitive regarding stabilities + * Fixed handling of target-dir changes when updating packages + * Improved performance of the class loader + * Improved memory usage and performance of solving dependencies + * Tons of minor bug fixes and improvements + +### [1.0.0-alpha7] - 2013-05-04 + + * Break: For forward compatibility, you should change your deployment scripts to run `composer install --no-dev`. The install command will install dev dependencies by default starting in the next release + * Break: The `update` command now has --dev enabled by default. --no-dev can be used to update without dev requirements, but it will create an incomplete lock file and is discouraged + * Break: Removed support for lock files created before 2012-09-15 due to their outdated unusable format + * Added `prefer-stable` flag to pick stable packages over unstable ones when possible + * Added `preferred-install` config option to always enable --prefer-source or --prefer-dist + * Added `diagnose` command to to system/network checks and find common problems + * Added wildcard support in the update whitelist, e.g. to update all packages of a vendor do `composer update vendor/*` + * Added `archive` command to archive the current directory or a given package + * Added `run-script` command to manually trigger scripts + * Added `proprietary` as valid license identifier for non-free code + * Added a `php-64bit` platform package that you can require to force a 64bit php + * Added a `lib-ICU` platform package + * Added a new official package type `project` for project-bootstrapping packages + * Added zip/dist local cache to speed up repetitive installations + * Added `post-autoload-dump` script event + * Added `Event::getDevMode` to let script handlers know if dev requirements are being installed + * Added `discard-changes` config option to control the default behavior when updating "dirty" dependencies + * Added `use-include-path` config option to make the autoloader look for files in the include path too + * Added `cache-ttl`, `cache-files-ttl` and `cache-files-maxsize` config option + * Added `cache-dir`, `cache-files-dir`, `cache-repo-dir` and `cache-vcs-dir` config option + * Added support for using http(s) authentication to non-github repos + * Added support for using multiple autoloaders at once (e.g. PHPUnit + application both using Composer autoloader) + * Added support for .inc files for classmap autoloading (legacy support, do not do this on new projects!) + * Added support for version constraints in show command, e.g. `composer show monolog/monolog 1.4.*` + * Added support for svn repositories containing packages in a deeper path (see package-path option) + * Added an `artifact` repository to scan a directory containing zipped packages + * Added --no-dev flag to `install` and `update` commands + * Added --stability (-s) flag to create-project to lower the required stability + * Added --no-progress to `install` and `update` to hide the progress indicators + * Added --available (-a) flag to the `show` command to display only available packages + * Added --name-only (-N) flag to the `show` command to show only package names (one per line, no formatting) + * Added --optimize-autoloader (-o) flag to optimize the autoloader from the `install` and `update` commands + * Added -vv and -vvv flags to get more verbose output, can be useful to debug some issues + * Added COMPOSER_NO_INTERACTION env var to do the equivalent of --no-interaction (should be set on build boxes, CI, PaaS) + * Added PHP 5.2 compatibility to the autoloader configuration files so they can be used to configure another autoloader + * Fixed handling of platform requirements of the root package when installing from lock + * Fixed handling of require-dev dependencies + * Fixed handling of unstable packages that should be downgraded to stable packages when updating to new version constraints + * Fixed parsing of the `~` operator combined with unstable versions + * Fixed the `require` command corrupting the json if the new requirement was invalid + * Fixed support of aliases used together with `#` constraints + * Improved output of dependency solver problems by grouping versions of a package together + * Improved performance of classmap generation + * Improved mercurial support in various places + * Improved lock file format to minimize unnecessary diffs + * Improved the `config` command to support all options + * Improved the coverage of the `validate` command + * Tons of minor bug fixes and improvements + +### [1.0.0-alpha6] - 2012-10-23 + + * Schema: Added ability to pass additional options to repositories (i.e. ssh keys/client certificates to secure private repos) + * Schema: Added a new `~` operator that should be preferred over `>=`, see http://getcomposer.org/doc/01-basic-usage.md#package-versions + * Schema: Version constraints `` flags in require for restricting packages to a certain stability + * Schema: Removed `recommend` + * Schema: `suggest` is now informational and can use any description for a package, not only a constraint + * Break: vendor/.composer/autoload.php has been moved to vendor/autoload.php, other files are now in vendor/composer/ + * Added caching of repository metadata (faster startup times & failover if packagist is down) + * Added removal of packages that are not needed anymore + * Added include_path support for legacy projects that are full of require_once statements + * Added installation notifications API to allow better statistics on Composer repositories + * Added support for proxies that require authentication + * Added support for private github repositories over https + * Added autoloading support for root packages that use target-dir + * Added awareness of the root package presence and support for it's provide/replace/conflict keys + * Added IOInterface::isDecorated to test for colored output support + * Added validation of licenses based on the [SPDX registry](https://spdx.org/licenses/) + * Improved repository protocol to have large cacheable parts + * Fixed various bugs relating to package aliasing, proxy configuration, binaries + * Various bug fixes and docs improvements + +### [1.0.0-alpha2] - 2012-04-03 + + * Added `create-project` command to install a project from scratch with composer + * Added automated `classmap` autoloading support for non-PSR-0 compliant projects + * Added human readable error reporting when deps can not be solved + * Added support for private GitHub and SVN repositories (use --no-interaction for CI) + * Added "file" downloader type to download plain files + * Added support for authentication with svn repositories + * Added autoload support for PEAR repositories + * Improved clones from GitHub which now automatically select between git/https/http protocols + * Improved `validate` command to give more feedback + * Improved the `search` & `show` commands output + * Removed dependency on filter_var + * Various robustness & error handling improvements, docs fixes and more bug fixes + +### 1.0.0-alpha1 - 2012-03-01 + + * Initial release + +[1.9.3]: https://github.com/composer/composer/compare/1.9.2...1.9.3 +[1.9.2]: https://github.com/composer/composer/compare/1.9.1...1.9.2 +[1.9.1]: https://github.com/composer/composer/compare/1.9.0...1.9.1 +[1.9.0]: https://github.com/composer/composer/compare/1.8.6...1.9.0 +[1.8.6]: https://github.com/composer/composer/compare/1.8.5...1.8.6 +[1.8.5]: https://github.com/composer/composer/compare/1.8.4...1.8.5 +[1.8.4]: https://github.com/composer/composer/compare/1.8.3...1.8.4 +[1.8.3]: https://github.com/composer/composer/compare/1.8.2...1.8.3 +[1.8.2]: https://github.com/composer/composer/compare/1.8.1...1.8.2 +[1.8.1]: https://github.com/composer/composer/compare/1.8.0...1.8.1 +[1.8.0]: https://github.com/composer/composer/compare/1.7.3...1.8.0 +[1.7.3]: https://github.com/composer/composer/compare/1.7.2...1.7.3 +[1.7.2]: https://github.com/composer/composer/compare/1.7.1...1.7.2 +[1.7.1]: https://github.com/composer/composer/compare/1.7.0...1.7.1 +[1.7.0]: https://github.com/composer/composer/compare/1.7.0-RC...1.7.0 +[1.7.0-RC]: https://github.com/composer/composer/compare/1.6.5...1.7.0-RC +[1.6.5]: https://github.com/composer/composer/compare/1.6.4...1.6.5 +[1.6.4]: https://github.com/composer/composer/compare/1.6.3...1.6.4 +[1.6.3]: https://github.com/composer/composer/compare/1.6.2...1.6.3 +[1.6.2]: https://github.com/composer/composer/compare/1.6.1...1.6.2 +[1.6.1]: https://github.com/composer/composer/compare/1.6.0...1.6.1 +[1.6.0]: https://github.com/composer/composer/compare/1.6.0-RC...1.6.0 +[1.6.0-RC]: https://github.com/composer/composer/compare/1.5.6...1.6.0-RC +[1.5.6]: https://github.com/composer/composer/compare/1.5.5...1.5.6 +[1.5.5]: https://github.com/composer/composer/compare/1.5.4...1.5.5 +[1.5.4]: https://github.com/composer/composer/compare/1.5.3...1.5.4 +[1.5.3]: https://github.com/composer/composer/compare/1.5.2...1.5.3 +[1.5.2]: https://github.com/composer/composer/compare/1.5.1...1.5.2 +[1.5.1]: https://github.com/composer/composer/compare/1.5.0...1.5.1 +[1.5.0]: https://github.com/composer/composer/compare/1.4.3...1.5.0 +[1.4.3]: https://github.com/composer/composer/compare/1.4.2...1.4.3 +[1.4.2]: https://github.com/composer/composer/compare/1.4.1...1.4.2 +[1.4.1]: https://github.com/composer/composer/compare/1.4.0...1.4.1 +[1.4.0]: https://github.com/composer/composer/compare/1.3.3...1.4.0 +[1.3.3]: https://github.com/composer/composer/compare/1.3.2...1.3.3 +[1.3.2]: https://github.com/composer/composer/compare/1.3.1...1.3.2 +[1.3.1]: https://github.com/composer/composer/compare/1.3.0...1.3.1 +[1.3.0]: https://github.com/composer/composer/compare/1.3.0-RC...1.3.0 +[1.3.0-RC]: https://github.com/composer/composer/compare/1.2.4...1.3.0-RC +[1.2.4]: https://github.com/composer/composer/compare/1.2.3...1.2.4 +[1.2.3]: https://github.com/composer/composer/compare/1.2.2...1.2.3 +[1.2.2]: https://github.com/composer/composer/compare/1.2.1...1.2.2 +[1.2.1]: https://github.com/composer/composer/compare/1.2.0...1.2.1 +[1.2.0]: https://github.com/composer/composer/compare/1.2.0-RC...1.2.0 +[1.2.0-RC]: https://github.com/composer/composer/compare/1.1.3...1.2.0-RC +[1.1.3]: https://github.com/composer/composer/compare/1.1.2...1.1.3 +[1.1.2]: https://github.com/composer/composer/compare/1.1.1...1.1.2 +[1.1.1]: https://github.com/composer/composer/compare/1.1.0...1.1.1 +[1.1.0]: https://github.com/composer/composer/compare/1.0.3...1.1.0 +[1.1.0-RC]: https://github.com/composer/composer/compare/1.0.3...1.1.0-RC +[1.0.3]: https://github.com/composer/composer/compare/1.0.2...1.0.3 +[1.0.2]: https://github.com/composer/composer/compare/1.0.1...1.0.2 +[1.0.1]: https://github.com/composer/composer/compare/1.0.0...1.0.1 +[1.0.0]: https://github.com/composer/composer/compare/1.0.0-beta2...1.0.0 +[1.0.0-beta2]: https://github.com/composer/composer/compare/1.0.0-beta1...1.0.0-beta2 +[1.0.0-beta1]: https://github.com/composer/composer/compare/1.0.0-alpha11...1.0.0-beta1 +[1.0.0-alpha11]: https://github.com/composer/composer/compare/1.0.0-alpha10...1.0.0-alpha11 +[1.0.0-alpha10]: https://github.com/composer/composer/compare/1.0.0-alpha9...1.0.0-alpha10 +[1.0.0-alpha9]: https://github.com/composer/composer/compare/1.0.0-alpha8...1.0.0-alpha9 +[1.0.0-alpha8]: https://github.com/composer/composer/compare/1.0.0-alpha7...1.0.0-alpha8 +[1.0.0-alpha7]: https://github.com/composer/composer/compare/1.0.0-alpha6...1.0.0-alpha7 +[1.0.0-alpha6]: https://github.com/composer/composer/compare/1.0.0-alpha5...1.0.0-alpha6 +[1.0.0-alpha5]: https://github.com/composer/composer/compare/1.0.0-alpha4...1.0.0-alpha5 +[1.0.0-alpha4]: https://github.com/composer/composer/compare/1.0.0-alpha3...1.0.0-alpha4 +[1.0.0-alpha3]: https://github.com/composer/composer/compare/1.0.0-alpha2...1.0.0-alpha3 +[1.0.0-alpha2]: https://github.com/composer/composer/compare/1.0.0-alpha1...1.0.0-alpha2 diff --git a/vendor/composer/composer/LICENSE b/vendor/composer/composer/LICENSE new file mode 100644 index 0000000..62ecfd8 --- /dev/null +++ b/vendor/composer/composer/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/composer/composer/PORTING_INFO b/vendor/composer/composer/PORTING_INFO new file mode 100644 index 0000000..54d86b2 --- /dev/null +++ b/vendor/composer/composer/PORTING_INFO @@ -0,0 +1,39 @@ + * add rule + * p = direct literal; always < 0 for installed rpm rules + * d, if < 0 direct literal, if > 0 offset into whatprovides, if == 0 rule is assertion (look at p only) + * + * + * A requires b, b provided by B1,B2,B3 => (-A|B1|B2|B3) + * + * p < 0 : pkg id of A + * d > 0 : Offset in whatprovidesdata (list of providers of b) + * + * A conflicts b, b provided by B1,B2,B3 => (-A|-B1), (-A|-B2), (-A|-B3) + * p < 0 : pkg id of A + * d < 0 : Id of solvable (e.g. B1) + * + * d == 0: unary rule, assertion => (A) or (-A) + * + * Install: p > 0, d = 0 (A) user requested install + * Remove: p < 0, d = 0 (-A) user requested remove (also: uninstallable) + * Requires: p < 0, d > 0 (-A|B1|B2|...) d: + * Updates: p > 0, d > 0 (A|B1|B2|...) d: + * Conflicts: p < 0, d < 0 (-A|-B) either p (conflict issuer) or d (conflict provider) (binary rule) + * also used for obsoletes + * ?: p > 0, d < 0 (A|-B) + * No-op ?: p = 0, d = 0 (null) (used as policy rule placeholder) + * + * resulting watches: + * ------------------ + * Direct assertion (no watch needed)( if d <0 ) --> d = 0, w1 = p, w2 = 0 + * Binary rule: p = first literal, d = 0, w2 = second literal, w1 = p + * every other : w1 = p, w2 = whatprovidesdata[d]; + * Disabled rule: w1 = 0 + * + * always returns a rule for non-rpm rules + + + +p > 0, d = 0, (A), w1 = p, w2 = 0 +p < 0, d = 0, (-A), w1 = p, w2 = 0 +p !=0, d = 0, (p|q), w1 = p, w2 = q diff --git a/vendor/composer/composer/README.md b/vendor/composer/composer/README.md new file mode 100644 index 0000000..c538df8 --- /dev/null +++ b/vendor/composer/composer/README.md @@ -0,0 +1,62 @@ +Composer - Dependency Management for PHP +======================================== + +Composer helps you declare, manage, and install dependencies of PHP projects. + +See [https://getcomposer.org/](https://getcomposer.org/) for more information and documentation. + +[![Build Status](https://travis-ci.org/composer/composer.svg?branch=master)](https://travis-ci.org/composer/composer) + +Installation / Usage +-------------------- + +Download and install Composer by following the [official instructions](https://getcomposer.org/download/). + +For usage, see [the documentation](https://getcomposer.org/doc/). + +Packages +-------- + +Find packages on [Packagist](https://packagist.org). + +Community +--------- + +IRC channels are on irc.freenode.org: [#composer](irc://irc.freenode.org/composer) +for users and [#composer-dev](irc://irc.freenode.org/composer-dev) for development. + +For support, Stack Overflow also offers a good collection of +[Composer related questions](https://stackoverflow.com/questions/tagged/composer-php). + +Please note that this project is released with a +[Contributor Code of Conduct](http://contributor-covenant.org/version/1/4/). +By participating in this project and its community you agree to abide by those terms. + +Requirements +------------ + +PHP 5.3.2 or above (at least 5.3.4 recommended to avoid potential bugs) + +Authors +------- + +- Nils Adermann | [GitHub](https://github.com/naderman) | [Twitter](https://twitter.com/naderman) | | [naderman.de](http://naderman.de) +- Jordi Boggiano | [GitHub](https://github.com/Seldaek) | [Twitter](https://twitter.com/seldaek) | | [seld.be](http://seld.be) + +See also the list of [contributors](https://github.com/composer/composer/contributors) who participated in this project. + +Security Reports +---------------- + +Please send any sensitive issue to [security@packagist.org](mailto:security@packagist.org). Thanks! + +License +------- + +Composer is licensed under the MIT License - see the [LICENSE](LICENSE) file for details + +Acknowledgments +--------------- + +- This project's Solver started out as a PHP port of openSUSE's + [Libzypp satsolver](https://en.opensuse.org/openSUSE:Libzypp_satsolver). diff --git a/vendor/composer/composer/bin/compile b/vendor/composer/composer/bin/compile new file mode 100755 index 0000000..a2720a9 --- /dev/null +++ b/vendor/composer/composer/bin/compile @@ -0,0 +1,31 @@ +#!/usr/bin/env php +compile(); +} catch (\Exception $e) { + echo 'Failed to compile phar: ['.get_class($e).'] '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().PHP_EOL; + exit(1); +} diff --git a/vendor/composer/composer/bin/composer b/vendor/composer/composer/bin/composer new file mode 100755 index 0000000..3585787 --- /dev/null +++ b/vendor/composer/composer/bin/composer @@ -0,0 +1,62 @@ +#!/usr/bin/env php +check(); +unset($xdebug); + +if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '4.0', '>=')) { + echo 'HHVM 4.0 has dropped support for Composer, please use PHP instead. Aborting.'.PHP_EOL; + exit(1); +} + +if (function_exists('ini_set')) { + @ini_set('display_errors', 1); + + $memoryInBytes = function ($value) { + $unit = strtolower(substr($value, -1, 1)); + $value = (int) $value; + switch($unit) { + case 'g': + $value *= 1024; + // no break (cumulative multiplier) + case 'm': + $value *= 1024; + // no break (cumulative multiplier) + case 'k': + $value *= 1024; + } + + return $value; + }; + + $memoryLimit = trim(ini_get('memory_limit')); + // Increase memory_limit if it is lower than 1.5GB + if ($memoryLimit != -1 && $memoryInBytes($memoryLimit) < 1024 * 1024 * 1536) { + @ini_set('memory_limit', '1536M'); + } + // Set user defined memory limit + if ($memoryLimit = getenv('COMPOSER_MEMORY_LIMIT')) { + @ini_set('memory_limit', $memoryLimit); + } + unset($memoryInBytes, $memoryLimit); +} + +putenv('COMPOSER_BINARY='.realpath($_SERVER['argv'][0])); + +// run the command application +$application = new Application(); +$application->run(); diff --git a/vendor/composer/composer/composer.json b/vendor/composer/composer/composer.json new file mode 100644 index 0000000..0878f5b --- /dev/null +++ b/vendor/composer/composer/composer.json @@ -0,0 +1,86 @@ +{ + "name": "composer/composer", + "type": "library", + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "keywords": [ + "package", + "dependency", + "autoload" + ], + "homepage": "https://getcomposer.org/", + "license": "MIT", + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "require": { + "php": "^5.3.2 || ^7.0", + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "psr/log": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0" + }, + "conflict": { + "symfony/console": "2.8.38" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7", + "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "config": { + "platform": { + "php": "5.3.9" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "autoload-dev": { + "psr-4": { + "Composer\\Test\\": "tests/Composer/Test" + } + }, + "bin": [ + "bin/composer" + ], + "scripts": { + "compile": "@php -dphar.readonly=0 bin/compile", + "test": "phpunit" + }, + "scripts-descriptions": { + "compile": "Compile composer.phar", + "test": "Run all tests" + }, + "support": { + "issues": "https://github.com/composer/composer/issues", + "irc": "irc://irc.freenode.org/composer" + } +} diff --git a/vendor/composer/composer/doc/00-intro.md b/vendor/composer/composer/doc/00-intro.md new file mode 100644 index 0000000..ed7a17c --- /dev/null +++ b/vendor/composer/composer/doc/00-intro.md @@ -0,0 +1,156 @@ +# Introduction + +Composer is a tool for dependency management in PHP. It allows you to declare +the libraries your project depends on and it will manage (install/update) them +for you. + +## Dependency management + +Composer is **not** a package manager in the same sense as Yum or Apt are. Yes, +it deals with "packages" or libraries, but it manages them on a per-project +basis, installing them in a directory (e.g. `vendor`) inside your project. By +default it does not install anything globally. Thus, it is a dependency +manager. It does however support a "global" project for convenience via the +[global](03-cli.md#global) command. + +This idea is not new and Composer is strongly inspired by node's +[npm](https://www.npmjs.com/) and ruby's [bundler](https://bundler.io/). + +Suppose: + +1. You have a project that depends on a number of libraries. +1. Some of those libraries depend on other libraries. + +Composer: + +1. Enables you to declare the libraries you depend on. +1. Finds out which versions of which packages can and need to be installed, and + installs them (meaning it downloads them into your project). + +See the [Basic usage](01-basic-usage.md) chapter for more details on declaring +dependencies. + +## System Requirements + +Composer requires PHP 5.3.2+ to run. A few sensitive php settings and compile +flags are also required, but when using the installer you will be warned about +any incompatibilities. + +To install packages from sources instead of simple zip archives, you will need +git, svn, fossil or hg depending on how the package is version-controlled. + +Composer is multi-platform and we strive to make it run equally well on Windows, +Linux and macOS. + +## Installation - Linux / Unix / macOS + +### Downloading the Composer Executable + +Composer offers a convenient installer that you can execute directly from the +command line. Feel free to [download this file](https://getcomposer.org/installer) +or review it on [GitHub](https://github.com/composer/getcomposer.org/blob/master/web/installer) +if you wish to know more about the inner workings of the installer. The source +is plain PHP. + +There are in short, two ways to install Composer. Locally as part of your +project, or globally as a system wide executable. + +#### Locally + +To install Composer locally, run the installer in your project directory. See +[the Download page](https://getcomposer.org/download/) for instructions. + +The installer will check a few PHP settings and then download `composer.phar` +to your working directory. This file is the Composer binary. It is a PHAR +(PHP archive), which is an archive format for PHP which can be run on +the command line, amongst other things. + +Now run `php composer.phar` in order to run Composer. + +You can install Composer to a specific directory by using the `--install-dir` +option and additionally (re)name it as well using the `--filename` option. When +running the installer when following +[the Download page instructions](https://getcomposer.org/download/) add the +following parameters: + +```sh +php composer-setup.php --install-dir=bin --filename=composer +``` + +Now run `php bin/composer` in order to run Composer. + +#### Globally + +You can place the Composer PHAR anywhere you wish. If you put it in a directory +that is part of your `PATH`, you can access it globally. On Unix systems you +can even make it executable and invoke it without directly using the `php` +interpreter. + +After running the installer following [the Download page instructions](https://getcomposer.org/download/) +you can run this to move composer.phar to a directory that is in your path: + +```sh +mv composer.phar /usr/local/bin/composer +``` + +If you like to install it only for your user and avoid requiring root permissions, +you can use `~/.local/bin` instead which is available by default on some +Linux distributions. + +> **Note:** If the above fails due to permissions, you may need to run it again +> with sudo. + +> **Note:** On some versions of macOS the `/usr` directory does not exist by +> default. If you receive the error "/usr/local/bin/composer: No such file or +> directory" then you must create the directory manually before proceeding: +> `mkdir -p /usr/local/bin`. + +> **Note:** For information on changing your PATH, please read the +> [Wikipedia article](https://en.wikipedia.org/wiki/PATH_(variable)) and/or use Google. + +Now run `composer` in order to run Composer instead of `php composer.phar`. + +## Installation - Windows + +### Using the Installer + +This is the easiest way to get Composer set up on your machine. + +Download and run +[Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe). It will +install the latest Composer version and set up your PATH so that you can +call `composer` from any directory in your command line. + +> **Note:** Close your current terminal. Test usage with a new terminal: This is +> important since the PATH only gets loaded when the terminal starts. + +### Manual Installation + +Change to a directory on your `PATH` and run the installer following +[the Download page instructions](https://getcomposer.org/download/) +to download `composer.phar`. + +Create a new `composer.bat` file alongside `composer.phar`: + +```sh +C:\bin>echo @php "%~dp0composer.phar" %*>composer.bat +``` + +Add the directory to your PATH environment variable if it isn't already. +For information on changing your PATH variable, please see +[this article](https://www.computerhope.com/issues/ch000549.htm) and/or +use Google. + +Close your current terminal. Test usage with a new terminal: + +```sh +C:\Users\username>composer -V +Composer version 1.0.0 2016-01-10 20:34:53 +``` + +## Using Composer + +Now that you've installed Composer, you are ready to use it! Head on over to the +next chapter for a short and simple demonstration. + +[Basic usage](01-basic-usage.md) → diff --git a/vendor/composer/composer/doc/01-basic-usage.md b/vendor/composer/composer/doc/01-basic-usage.md new file mode 100644 index 0000000..4981542 --- /dev/null +++ b/vendor/composer/composer/doc/01-basic-usage.md @@ -0,0 +1,266 @@ +# Basic usage + +## Introduction + +For our basic usage introduction, we will be installing `monolog/monolog`, +a logging library. If you have not yet installed Composer, refer to the +[Intro](00-intro.md) chapter. + +> **Note:** for the sake of simplicity, this introduction will assume you +> have performed a [local](00-intro.md#locally) install of Composer. + +## `composer.json`: Project setup + +To start using Composer in your project, all you need is a `composer.json` +file. This file describes the dependencies of your project and may contain +other metadata as well. + +### The `require` key + +The first (and often only) thing you specify in `composer.json` is the +[`require`](04-schema.md#require) key. You are simply telling Composer which +packages your project depends on. + +```json +{ + "require": { + "monolog/monolog": "1.0.*" + } +} +``` + +As you can see, [`require`](04-schema.md#require) takes an object that maps +**package names** (e.g. `monolog/monolog`) to **version constraints** (e.g. +`1.0.*`). + +Composer uses this information to search for the right set of files in package +"repositories" that you register using the [`repositories`](04-schema.md#repositories) +key, or in Packagist, the default package repository. In the above example, +since no other repository has been registered in the `composer.json` file, it is +assumed that the `monolog/monolog` package is registered on Packagist. (See more +about Packagist [below](#packagist), or read more about repositories +[here](05-repositories.md)). + +### Package names + +The package name consists of a vendor name and the project's name. Often these +will be identical - the vendor name only exists to prevent naming clashes. For +example, it would allow two different people to create a library named `json`. +One might be named `igorw/json` while the other might be `seldaek/json`. + +Read more about publishing packages and package naming [here](02-libraries.md). +(Note that you can also specify "platform packages" as dependencies, allowing +you to require certain versions of server software. See +[platform packages](#platform-packages) below.) + +### Package version constraints + +In our example, we are requesting the Monolog package with the version constraint +[`1.0.*`](https://semver.mwl.be/#?package=monolog%2Fmonolog&version=1.0.*). +This means any version in the `1.0` development branch, or any version that is +greater than or equal to 1.0 and less than 1.1 (`>=1.0 <1.1`). + +Please read [versions](articles/versions.md) for more in-depth information on +versions, how versions relate to each other, and on version constraints. + +> **How does Composer download the right files?** When you specify a dependency in +> `composer.json`, Composer first takes the name of the package that you have requested +> and searches for it in any repositories that you have registered using the +> [`repositories`](04-schema.md#repositories) key. If you have not registered +> any extra repositories, or it does not find a package with that name in the +> repositories you have specified, it falls back to Packagist (more [below](#packagist)). +> +> When Composer finds the right package, either in Packagist or in a repo you have specified, +> it then uses the versioning features of the package's VCS (i.e., branches and tags) +> to attempt to find the best match for the version constraint you have specified. Be sure to read +> about versions and package resolution in the [versions article](articles/versions.md). + +> **Note:** If you are trying to require a package but Composer throws an error +> regarding package stability, the version you have specified may not meet your +> default minimum stability requirements. By default only stable releases are taken +> into consideration when searching for valid package versions in your VCS. +> +> You might run into this if you are trying to require dev, alpha, beta, or RC +> versions of a package. Read more about stability flags and the `minimum-stability` +> key on the [schema page](04-schema.md). + +## Installing dependencies + +To install the defined dependencies for your project, run the +[`install`](03-cli.md#install) command. + +```sh +php composer.phar install +``` + +When you run this command, one of two things may happen: + +### Installing without `composer.lock` + +If you have never run the command before and there is also no `composer.lock` file present, +Composer simply resolves all dependencies listed in your `composer.json` file and downloads +the latest version of their files into the `vendor` directory in your project. (The `vendor` +directory is the conventional location for all third-party code in a project). In our +example from above, you would end up with the Monolog source files in +`vendor/monolog/monolog/`. If Monolog listed any dependencies, those would also be in +folders under `vendor/`. + +> **Tip:** If you are using git for your project, you probably want to add +> `vendor` in your `.gitignore`. You really don't want to add all of that +> third-party code to your versioned repository. + +When Composer has finished installing, it writes all of the packages and the exact versions +of them that it downloaded to the `composer.lock` file, locking the project to those specific +versions. You should commit the `composer.lock` file to your project repo so that all people +working on the project are locked to the same versions of dependencies (more below). + +### Installing with `composer.lock` + +This brings us to the second scenario. If there is already a `composer.lock` file as well as a +`composer.json` file when you run `composer install`, it means either you ran the +`install` command before, or someone else on the project ran the `install` command and +committed the `composer.lock` file to the project (which is good). + +Either way, running `install` when a `composer.lock` file is present resolves and installs +all dependencies that you listed in `composer.json`, but Composer uses the exact versions listed +in `composer.lock` to ensure that the package versions are consistent for everyone +working on your project. As a result you will have all dependencies requested by your +`composer.json` file, but they may not all be at the very latest available versions +(some of the dependencies listed in the `composer.lock` file may have released newer versions since +the file was created). This is by design, it ensures that your project does not break because of +unexpected changes in dependencies. + +### Commit your `composer.lock` file to version control + +Committing this file to VC is important because it will cause anyone who sets +up the project to use the exact same +versions of the dependencies that you are using. Your CI server, production +machines, other developers in your team, everything and everyone runs on the +same dependencies, which mitigates the potential for bugs affecting only some +parts of the deployments. Even if you develop alone, in six months when +reinstalling the project you can feel confident the dependencies installed are +still working even if your dependencies released many new versions since then. +(See note below about using the `update` command.) + +## Updating dependencies to their latest versions + +As mentioned above, the `composer.lock` file prevents you from automatically getting +the latest versions of your dependencies. To update to the latest versions, use the +[`update`](03-cli.md#update) command. This will fetch the latest matching +versions (according to your `composer.json` file) and update the lock file +with the new versions. (This is equivalent to deleting the `composer.lock` file +and running `install` again.) + +```sh +php composer.phar update +``` + +> **Note:** Composer will display a Warning when executing an `install` command +> if the `composer.lock` has not been updated since changes were made to the +> `composer.json` that might affect dependency resolution. + +If you only want to install or update one dependency, you can whitelist them: + +```sh +php composer.phar update monolog/monolog [...] +``` + +> **Note:** For libraries it is not necessary to commit the lock +> file, see also: [Libraries - Lock file](02-libraries.md#lock-file). + +## Packagist + +[Packagist](https://packagist.org/) is the main Composer repository. A Composer +repository is basically a package source: a place where you can get packages +from. Packagist aims to be the central repository that everybody uses. This +means that you can automatically `require` any package that is available there, +without further specifying where Composer should look for the package. + +If you go to the [Packagist website](https://packagist.org/) (packagist.org), +you can browse and search for packages. + +Any open source project using Composer is recommended to publish their packages +on Packagist. A library does not need to be on Packagist to be used by Composer, +but it enables discovery and adoption by other developers more quickly. + +## Platform packages + +Composer has platform packages, which are virtual packages for things that are +installed on the system but are not actually installable by Composer. This +includes PHP itself, PHP extensions and some system libraries. + +* `php` represents the PHP version of the user, allowing you to apply + constraints, e.g. `^7.1`. To require a 64bit version of php, you can + require the `php-64bit` package. + +* `hhvm` represents the version of the HHVM runtime and allows you to apply + a constraint, e.g., `^2.3`. + +* `ext-` allows you to require PHP extensions (includes core + extensions). Versioning can be quite inconsistent here, so it's often + a good idea to set the constraint to `*`. An example of an extension + package name is `ext-gd`. + +* `lib-` allows constraints to be made on versions of libraries used by + PHP. The following are available: `curl`, `iconv`, `icu`, `libxml`, + `openssl`, `pcre`, `uuid`, `xsl`. + +You can use [`show --platform`](03-cli.md#show) to get a list of your locally +available platform packages. + +## Autoloading + +For libraries that specify autoload information, Composer generates a +`vendor/autoload.php` file. You can simply include this file and start +using the classes that those libraries provide without any extra work: + +```php +require __DIR__ . '/vendor/autoload.php'; + +$log = new Monolog\Logger('name'); +$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); +$log->addWarning('Foo'); +``` + +You can even add your own code to the autoloader by adding an +[`autoload`](04-schema.md#autoload) field to `composer.json`. + +```json +{ + "autoload": { + "psr-4": {"Acme\\": "src/"} + } +} +``` + +Composer will register a [PSR-4](http://www.php-fig.org/psr/psr-4/) autoloader +for the `Acme` namespace. + +You define a mapping from namespaces to directories. The `src` directory would +be in your project root, on the same level as `vendor` directory is. An example +filename would be `src/Foo.php` containing an `Acme\Foo` class. + +After adding the [`autoload`](04-schema.md#autoload) field, you have to re-run +[`dump-autoload`](03-cli.md#dump-autoload) to re-generate the +`vendor/autoload.php` file. + +Including that file will also return the autoloader instance, so you can store +the return value of the include call in a variable and add more namespaces. +This can be useful for autoloading classes in a test suite, for example. + +```php +$loader = require __DIR__ . '/vendor/autoload.php'; +$loader->addPsr4('Acme\\Test\\', __DIR__); +``` + +In addition to PSR-4 autoloading, Composer also supports PSR-0, classmap and +files autoloading. See the [`autoload`](04-schema.md#autoload) reference for +more information. + +See also the docs on [optimizing the autoloader](articles/autoloader-optimization.md). + +> **Note:** Composer provides its own autoloader. If you don't want to use that +> one, you can include `vendor/composer/autoload_*.php` files, which return +> associative arrays allowing you to configure your own autoloader. + +← [Intro](00-intro.md) | [Libraries](02-libraries.md) → diff --git a/vendor/composer/composer/doc/02-libraries.md b/vendor/composer/composer/doc/02-libraries.md new file mode 100644 index 0000000..e59f505 --- /dev/null +++ b/vendor/composer/composer/doc/02-libraries.md @@ -0,0 +1,153 @@ +# Libraries + +This chapter will tell you how to make your library installable through +Composer. + +## Every project is a package + +As soon as you have a `composer.json` in a directory, that directory is a +package. When you add a [`require`](04-schema.md#require) to a project, you are +making a package that depends on other packages. The only difference between +your project and a library is that your project is a package without a name. + +In order to make that package installable you need to give it a name. You do +this by adding the [`name`](04-schema.md#name) property in `composer.json`: + +```json +{ + "name": "acme/hello-world", + "require": { + "monolog/monolog": "1.0.*" + } +} +``` + +In this case the project name is `acme/hello-world`, where `acme` is the vendor +name. Supplying a vendor name is mandatory. + +> **Note:** If you don't know what to use as a vendor name, your GitHub +> username is usually a good bet. While package names are case insensitive, the +> convention is all lowercase and dashes for word separation. + +## Library Versioning + +In the vast majority of cases, you will be maintaining your library using some +sort of version control system like git, svn, hg or fossil. In these cases, +Composer infers versions from your VCS and you **should not** specify a version +in your `composer.json` file. (See the [Versions article](articles/versions.md) +to learn about how Composer uses VCS branches and tags to resolve version +constraints.) + +If you are maintaining packages by hand (i.e., without a VCS), you'll need to +specify the version explicitly by adding a `version` value in your `composer.json` +file: + +```json +{ + "version": "1.0.0" +} +``` + +> **Note:** When you add a hardcoded version to a VCS, the version will conflict +> with tag names. Composer will not be able to determine the version number. + +### VCS Versioning + +Composer uses your VCS's branch and tag features to resolve the version +constraints you specify in your `require` field to specific sets of files. +When determining valid available versions, Composer looks at all of your tags +and branches and translates their names into an internal list of options that +it then matches against the version constraint you provided. + +For more on how Composer treats tags and branches and how it resolves package +version constraints, read the [versions](articles/versions.md) article. + +## Lock file + +For your library you may commit the `composer.lock` file if you want to. This +can help your team to always test against the same dependency versions. +However, this lock file will not have any effect on other projects that depend +on it. It only has an effect on the main project. + +If you do not want to commit the lock file and you are using git, add it to +the `.gitignore`. + +## Publishing to a VCS + +Once you have a VCS repository (version control system, e.g. git) containing a +`composer.json` file, your library is already composer-installable. In this +example we will publish the `acme/hello-world` library on GitHub under +`github.com/username/hello-world`. + +Now, to test installing the `acme/hello-world` package, we create a new +project locally. We will call it `acme/blog`. This blog will depend on +`acme/hello-world`, which in turn depends on `monolog/monolog`. We can +accomplish this by creating a new `blog` directory somewhere, containing a +`composer.json`: + +```json +{ + "name": "acme/blog", + "require": { + "acme/hello-world": "dev-master" + } +} +``` + +The name is not needed in this case, since we don't want to publish the blog +as a library. It is added here to clarify which `composer.json` is being +described. + +Now we need to tell the blog app where to find the `hello-world` dependency. +We do this by adding a package repository specification to the blog's +`composer.json`: + +```json +{ + "name": "acme/blog", + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/username/hello-world" + } + ], + "require": { + "acme/hello-world": "dev-master" + } +} +``` + +For more details on how package repositories work and what other types are +available, see [Repositories](05-repositories.md). + +That's all. You can now install the dependencies by running Composer's +[`install`](03-cli.md#install) command! + +**Recap:** Any git/svn/hg/fossil repository containing a `composer.json` can be +added to your project by specifying the package repository and declaring the +dependency in the [`require`](04-schema.md#require) field. + +## Publishing to packagist + +Alright, so now you can publish packages. But specifying the VCS repository +every time is cumbersome. You don't want to force all your users to do that. + +The other thing that you may have noticed is that we did not specify a package +repository for `monolog/monolog`. How did that work? The answer is Packagist. + +[Packagist](https://packagist.org/) is the main package repository for +Composer, and it is enabled by default. Anything that is published on +Packagist is available automatically through Composer. Since +[Monolog is on Packagist](https://packagist.org/packages/monolog/monolog), we +can depend on it without having to specify any additional repositories. + +If we wanted to share `hello-world` with the world, we would publish it on +Packagist as well. Doing so is really easy. + +You simply visit [Packagist](https://packagist.org) and hit the "Submit" +button. This will prompt you to sign up if you haven't already, and then +allows you to submit the URL to your VCS repository, at which point Packagist +will start crawling it. Once it is done, your package will be available to +anyone! + +← [Basic usage](01-basic-usage.md) | [Command-line interface](03-cli.md) → diff --git a/vendor/composer/composer/doc/03-cli.md b/vendor/composer/composer/doc/03-cli.md new file mode 100644 index 0000000..8cfd5ca --- /dev/null +++ b/vendor/composer/composer/doc/03-cli.md @@ -0,0 +1,941 @@ +# Command-line interface / Commands + +You've already learned how to use the command-line interface to do some +things. This chapter documents all the available commands. + +To get help from the command-line, simply call `composer` or `composer list` +to see the complete list of commands, then `--help` combined with any of those +can give you more information. + +As Composer uses [symfony/console](https://github.com/symfony/console) you can call commands by short name if it's not ambiguous. +```sh +composer dump +``` +calls `composer dump-autoload`. + +## Global Options + +The following options are available with every command: + +* **--verbose (-v):** Increase verbosity of messages. +* **--help (-h):** Display help information. +* **--quiet (-q):** Do not output any message. +* **--no-interaction (-n):** Do not ask any interactive question. +* **--no-plugins:** Disables plugins. +* **--no-cache:** Disables the use of the cache directory. Same as setting the COMPOSER_CACHE_DIR + env var to /dev/null (or NUL on Windows). +* **--working-dir (-d):** If specified, use the given directory as working directory. +* **--profile:** Display timing and memory usage information +* **--ansi:** Force ANSI output. +* **--no-ansi:** Disable ANSI output. +* **--version (-V):** Display this application version. + +## Process Exit Codes + +* **0:** OK +* **1:** Generic/unknown error code +* **2:** Dependency solving error code + +## init + +In the [Libraries](02-libraries.md) chapter we looked at how to create a +`composer.json` by hand. There is also an `init` command available that makes +it a bit easier to do this. + +When you run the command it will interactively ask you to fill in the fields, +while using some smart defaults. + +```sh +php composer.phar init +``` + +### Options + +* **--name:** Name of the package. +* **--description:** Description of the package. +* **--author:** Author name of the package. +* **--type:** Type of package. +* **--homepage:** Homepage of the package. +* **--require:** Package to require with a version constraint. Should be + in format `foo/bar:1.0.0`. +* **--require-dev:** Development requirements, see **--require**. +* **--stability (-s):** Value for the `minimum-stability` field. +* **--license (-l):** License of package. +* **--repository:** Provide one (or more) custom repositories. They will be stored + in the generated composer.json, and used for auto-completion when prompting for + the list of requires. Every repository can be either an HTTP URL pointing + to a `composer` repository or a JSON string which similar to what the + [repositories](04-schema.md#repositories) key accepts. + +## install / i + +The `install` command reads the `composer.json` file from the current +directory, resolves the dependencies, and installs them into `vendor`. + +```sh +php composer.phar install +``` + +If there is a `composer.lock` file in the current directory, it will use the +exact versions from there instead of resolving them. This ensures that +everyone using the library will get the same versions of the dependencies. + +If there is no `composer.lock` file, Composer will create one after dependency +resolution. + +### Options + +* **--prefer-source:** There are two ways of downloading a package: `source` + and `dist`. For stable versions Composer will use the `dist` by default. + The `source` is a version control repository. If `--prefer-source` is + enabled, Composer will install from `source` if there is one. This is + useful if you want to make a bugfix to a project and get a local git + clone of the dependency directly. +* **--prefer-dist:** Reverse of `--prefer-source`, Composer will install + from `dist` if possible. This can speed up installs substantially on build + servers and other use cases where you typically do not run updates of the + vendors. It is also a way to circumvent problems with git if you do not + have a proper setup. +* **--dry-run:** If you want to run through an installation without actually + installing a package, you can use `--dry-run`. This will simulate the + installation and show you what would happen. +* **--dev:** Install packages listed in `require-dev` (this is the default behavior). +* **--no-dev:** Skip installing packages listed in `require-dev`. The autoloader + generation skips the `autoload-dev` rules. +* **--no-autoloader:** Skips autoloader generation. +* **--no-scripts:** Skips execution of scripts defined in `composer.json`. +* **--no-progress:** Removes the progress display that can mess with some + terminals or scripts which don't handle backspace characters. +* **--no-suggest:** Skips suggested packages in the output. +* **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to get a faster + autoloader. This is recommended especially for production, but can take + a bit of time to run so it is currently not done by default. +* **--classmap-authoritative (-a):** Autoload classes from the classmap only. + Implicitly enables `--optimize-autoloader`. +* **--apcu-autoloader:** Use APCu to cache found/not-found classes. +* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` + requirements and force the installation even if the local machine does not + fulfill these. See also the [`platform`](06-config.md#platform) config option. + +## update / u + +In order to get the latest versions of the dependencies and to update the +`composer.lock` file, you should use the `update` command. This command is also +aliased as `upgrade` as it does the same as `upgrade` does if you are thinking +of `apt-get` or similar package managers. + +```sh +php composer.phar update +``` + +This will resolve all dependencies of the project and write the exact versions +into `composer.lock`. + +If you only want to update a few packages and not all, you can list them as such: + +```sh +php composer.phar update vendor/package vendor/package2 +``` + +You can also use wildcards to update a bunch of packages at once: + +```sh +php composer.phar update "vendor/*" +``` + +### Options + +* **--prefer-source:** Install packages from `source` when available. +* **--prefer-dist:** Install packages from `dist` when available. +* **--dry-run:** Simulate the command without actually doing anything. +* **--dev:** Install packages listed in `require-dev` (this is the default behavior). +* **--no-dev:** Skip installing packages listed in `require-dev`. The autoloader generation skips the `autoload-dev` rules. +* **--lock:** Only updates the lock file hash to suppress warning about the + lock file being out of date. +* **--no-autoloader:** Skips autoloader generation. +* **--no-scripts:** Skips execution of scripts defined in `composer.json`. +* **--no-progress:** Removes the progress display that can mess with some + terminals or scripts which don't handle backspace characters. +* **--no-suggest:** Skips suggested packages in the output. +* **--with-dependencies:** Add also dependencies of whitelisted packages to the whitelist, except those that are root requirements. +* **--with-all-dependencies:** Add also all dependencies of whitelisted packages to the whitelist, including those that are root requirements. +* **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to get a faster + autoloader. This is recommended especially for production, but can take + a bit of time to run so it is currently not done by default. +* **--classmap-authoritative (-a):** Autoload classes from the classmap only. + Implicitly enables `--optimize-autoloader`. +* **--apcu-autoloader:** Use APCu to cache found/not-found classes. +* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` + requirements and force the installation even if the local machine does not + fulfill these. See also the [`platform`](06-config.md#platform) config option. +* **--prefer-stable:** Prefer stable versions of dependencies. +* **--prefer-lowest:** Prefer lowest versions of dependencies. Useful for testing minimal + versions of requirements, generally used with `--prefer-stable`. +* **--interactive:** Interactive interface with autocompletion to select the packages to update. +* **--root-reqs:** Restricts the update to your first degree dependencies. + +## require + +The `require` command adds new packages to the `composer.json` file from +the current directory. If no file exists one will be created on the fly. + +```sh +php composer.phar require +``` + +After adding/changing the requirements, the modified requirements will be +installed or updated. + +If you do not want to choose requirements interactively, you can pass them +to the command. + +```sh +php composer.phar require vendor/package:2.* vendor/package2:dev-master +``` + +If you do not specify a package, composer will prompt you to search for a package, and given results, provide a list of matches to require. + +### Options + +* **--dev:** Add packages to `require-dev`. +* **--prefer-source:** Install packages from `source` when available. +* **--prefer-dist:** Install packages from `dist` when available. +* **--no-progress:** Removes the progress display that can mess with some + terminals or scripts which don't handle backspace characters. +* **--no-suggest:** Skips suggested packages in the output. +* **--no-update:** Disables the automatic update of the dependencies. +* **--no-scripts:** Skips execution of scripts defined in `composer.json`. +* **--update-no-dev:** Run the dependency update with the `--no-dev` option. +* **--update-with-dependencies:** Also update dependencies of the newly required packages, except those that are root requirements. +* **--update-with-all-dependencies:** Also update dependencies of the newly required packages, including those that are root requirements. +* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` + requirements and force the installation even if the local machine does not + fulfill these. See also the [`platform`](06-config.md#platform) config option. +* **--prefer-stable:** Prefer stable versions of dependencies. +* **--prefer-lowest:** Prefer lowest versions of dependencies. Useful for testing minimal + versions of requirements, generally used with `--prefer-stable`. +* **--sort-packages:** Keep packages sorted in `composer.json`. +* **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to + get a faster autoloader. This is recommended especially for production, but + can take a bit of time to run so it is currently not done by default. +* **--classmap-authoritative (-a):** Autoload classes from the classmap only. + Implicitly enables `--optimize-autoloader`. +* **--apcu-autoloader:** Use APCu to cache found/not-found classes. + +## remove + +The `remove` command removes packages from the `composer.json` file from +the current directory. + +```sh +php composer.phar remove vendor/package vendor/package2 +``` + +After removing the requirements, the modified requirements will be +uninstalled. + +### Options +* **--dev:** Remove packages from `require-dev`. +* **--no-progress:** Removes the progress display that can mess with some + terminals or scripts which don't handle backspace characters. +* **--no-update:** Disables the automatic update of the dependencies. +* **--no-scripts:** Skips execution of scripts defined in `composer.json`. +* **--update-no-dev:** Run the dependency update with the --no-dev option. +* **--update-with-dependencies:** Also update dependencies of the removed packages. +* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` + requirements and force the installation even if the local machine does not + fulfill these. See also the [`platform`](06-config.md#platform) config option. +* **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to + get a faster autoloader. This is recommended especially for production, but + can take a bit of time to run so it is currently not done by default. +* **--classmap-authoritative (-a):** Autoload classes from the classmap only. + Implicitly enables `--optimize-autoloader`. +* **--apcu-autoloader:** Use APCu to cache found/not-found classes. + +## check-platform-reqs + +The check-platform-reqs command checks that your PHP and extensions versions +match the platform requirements of the installed packages. This can be used +to verify that a production server has all the extensions needed to run a +project after installing it for example. + +Unlike update/install, this command will ignore config.platform settings and +check the real platform packages so you can be certain you have the required +platform dependencies. + +## global + +The global command allows you to run other commands like `install`, `remove`, `require` +or `update` as if you were running them from the [COMPOSER_HOME](#composer-home) +directory. + +This is merely a helper to manage a project stored in a central location that +can hold CLI tools or Composer plugins that you want to have available everywhere. + +This can be used to install CLI utilities globally. Here is an example: + +```sh +php composer.phar global require friendsofphp/php-cs-fixer +``` + +Now the `php-cs-fixer` binary is available globally. Make sure your global +[vendor binaries](articles/vendor-binaries.md) directory is in your `$PATH` +environment variable, you can get its location with the following command : + +```sh +php composer.phar global config bin-dir --absolute +``` + +If you wish to update the binary later on you can run a global update: + +```sh +php composer.phar global update +``` + +## search + +The search command allows you to search through the current project's package +repositories. Usually this will be packagist. You simply pass it the +terms you want to search for. + +```sh +php composer.phar search monolog +``` + +You can also search for more than one term by passing multiple arguments. + +### Options + +* **--only-name (-N):** Search only in name. +* **--type (-t):** Search for a specific package type. + +## show + +To list all of the available packages, you can use the `show` command. + +```sh +php composer.phar show +``` + +To filter the list you can pass a package mask using wildcards. + +```sh +php composer.phar show monolog/* + +monolog/monolog 1.19.0 Sends your logs to files, sockets, inboxes, databases and various web services +``` + +If you want to see the details of a certain package, you can pass the package +name. + +```sh +php composer.phar show monolog/monolog + +name : monolog/monolog +versions : master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1 +type : library +names : monolog/monolog +source : [git] https://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da +dist : [zip] https://github.com/Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da +license : MIT + +autoload +psr-0 +Monolog : src/ + +requires +php >=5.3.0 +``` + +You can even pass the package version, which will tell you the details of that +specific version. + +```sh +php composer.phar show monolog/monolog 1.0.2 +``` + +### Options + +* **--all :** List all packages available in all your repositories. +* **--installed (-i):** List the packages that are installed (this is enabled by default, and deprecated). +* **--platform (-p):** List only platform packages (php & extensions). +* **--available (-a):** List available packages only. +* **--self (-s):** List the root package info. +* **--name-only (-N):** List package names only. +* **--path (-P):** List package paths. +* **--tree (-t):** List your dependencies as a tree. If you pass a package name it will show the dependency tree for that package. +* **--latest (-l):** List all installed packages including their latest version. +* **--outdated (-o):** Implies --latest, but this lists *only* packages that have a newer version available. +* **--minor-only (-m):** Use with --latest. Only shows packages that have minor SemVer-compatible updates. +* **--direct (-D):** Restricts the list of packages to your direct dependencies. +* **--strict:** Return a non-zero exit code when there are outdated packages. +* **--format (-f):** Lets you pick between text (default) or json output format. + +## outdated + +The `outdated` command shows a list of installed packages that have updates available, +including their current and latest versions. This is basically an alias for +`composer show -lo`. + +The color coding is as such: + +- **green (=)**: Dependency is in the latest version and is up to date. +- **yellow (~)**: Dependency has a new version available that includes backwards compatibility breaks according to semver, so upgrade when + you can but it may involve work. +- **red (!)**: Dependency has a new version that is semver-compatible and you should upgrade it. + +### Options + +* **--all (-a):** Show all packages, not just outdated (alias for `composer show -l`). +* **--direct (-D):** Restricts the list of packages to your direct dependencies. +* **--strict:** Returns non-zero exit code if any package is outdated. +* **--minor-only (-m):** Only shows packages that have minor SemVer-compatible updates. +* **--format (-f):** Lets you pick between text (default) or json output format. + +## browse / home + +The `browse` (aliased to `home`) opens a package's repository URL or homepage +in your browser. + +### Options + +* **--homepage (-H):** Open the homepage instead of the repository URL. +* **--show (-s):** Only show the homepage or repository URL. + +## suggests + +Lists all packages suggested by currently installed set of packages. You can +optionally pass one or multiple package names in the format of `vendor/package` +to limit output to suggestions made by those packages only. + +Use the `--by-package` or `--by-suggestion` flags to group the output by +the package offering the suggestions or the suggested packages respectively. + +Use the `--verbose (-v)` flag to display the suggesting package and the suggestion reason. +This implies `--by-package --by-suggestion`, showing both lists. + +### Options + +* **--by-package:** Groups output by suggesting package. +* **--by-suggestion:** Groups output by suggested package. +* **--no-dev:** Excludes suggestions from `require-dev` packages. + +## depends (why) + +The `depends` command tells you which other packages depend on a certain +package. As with installation `require-dev` relationships are only considered +for the root package. + +```sh +php composer.phar depends doctrine/lexer + doctrine/annotations v1.2.7 requires doctrine/lexer (1.*) + doctrine/common v2.6.1 requires doctrine/lexer (1.*) +``` + +You can optionally specify a version constraint after the package to limit the +search. + +Add the `--tree` or `-t` flag to show a recursive tree of why the package is +depended upon, for example: + +```sh +php composer.phar depends psr/log -t +psr/log 1.0.0 Common interface for logging libraries +|- aboutyou/app-sdk 2.6.11 (requires psr/log 1.0.*) +| `- __root__ (requires aboutyou/app-sdk ^2.6) +|- monolog/monolog 1.17.2 (requires psr/log ~1.0) +| `- laravel/framework v5.2.16 (requires monolog/monolog ~1.11) +| `- __root__ (requires laravel/framework ^5.2) +`- symfony/symfony v3.0.2 (requires psr/log ~1.0) + `- __root__ (requires symfony/symfony ^3.0) +``` + +### Options + +* **--recursive (-r):** Recursively resolves up to the root package. +* **--tree (-t):** Prints the results as a nested tree, implies -r. + +## prohibits (why-not) + +The `prohibits` command tells you which packages are blocking a given package +from being installed. Specify a version constraint to verify whether upgrades +can be performed in your project, and if not why not. See the following +example: + +```sh +php composer.phar prohibits symfony/symfony 3.1 + laravel/framework v5.2.16 requires symfony/var-dumper (2.8.*|3.0.*) +``` + +Note that you can also specify platform requirements, for example to check +whether you can upgrade your server to PHP 8.0: + +```sh +php composer.phar prohibits php:8 + doctrine/cache v1.6.0 requires php (~5.5|~7.0) + doctrine/common v2.6.1 requires php (~5.5|~7.0) + doctrine/instantiator 1.0.5 requires php (>=5.3,<8.0-DEV) +``` + +As with `depends` you can request a recursive lookup, which will list all +packages depending on the packages that cause the conflict. + +### Options + +* **--recursive (-r):** Recursively resolves up to the root package. +* **--tree (-t):** Prints the results as a nested tree, implies -r. + +## validate + +You should always run the `validate` command before you commit your +`composer.json` file, and before you tag a release. It will check if your +`composer.json` is valid. + +```sh +php composer.phar validate +``` + +### Options + +* **--no-check-all:** Do not emit a warning if requirements in `composer.json` use unbound or overly strict version constraints. +* **--no-check-lock:** Do not emit an error if `composer.lock` exists and is not up to date. +* **--no-check-publish:** Do not emit an error if `composer.json` is unsuitable for publishing as a package on Packagist but is otherwise valid. +* **--with-dependencies:** Also validate the composer.json of all installed dependencies. +* **--strict:** Return a non-zero exit code for warnings as well as errors. + +## status + +If you often need to modify the code of your dependencies and they are +installed from source, the `status` command allows you to check if you have +local changes in any of them. + +```sh +php composer.phar status +``` + +With the `--verbose` option you get some more information about what was +changed: + +```sh +php composer.phar status -v + +You have changes in the following dependencies: +vendor/seld/jsonlint: + M README.mdown +``` + +## self-update (selfupdate) + +To update Composer itself to the latest version, run the `self-update` +command. It will replace your `composer.phar` with the latest version. + +```sh +php composer.phar self-update +``` + +If you would like to instead update to a specific release simply specify it: + +```sh +php composer.phar self-update 1.0.0-alpha7 +``` + +If you have installed Composer for your entire system (see [global installation](00-intro.md#globally)), +you may have to run the command with `root` privileges + +```sh +sudo -H composer self-update +``` + +### Options + +* **--rollback (-r):** Rollback to the last version you had installed. +* **--clean-backups:** Delete old backups during an update. This makes the + current version of Composer the only backup available after the update. +* **--no-progress:** Do not output download progress. +* **--update-keys:** Prompt user for a key update. +* **--stable:** Force an update to the stable channel. +* **--preview:** Force an update to the preview channel. +* **--snapshot:** Force an update to the snapshot channel. + +## config + +The `config` command allows you to edit composer config settings and repositories +in either the local `composer.json` file or the global `config.json` file. + +Additionally it lets you edit most properties in the local `composer.json`. + +```sh +php composer.phar config --list +``` + +### Usage + +`config [options] [setting-key] [setting-value1] ... [setting-valueN]` + +`setting-key` is a configuration option name and `setting-value1` is a +configuration value. For settings that can take an array of values (like +`github-protocols`), more than one setting-value arguments are allowed. + +You can also edit the values of the following properties: + +`description`, `homepage`, `keywords`, `license`, `minimum-stability`, +`name`, `prefer-stable`, `type` and `version`. + +See the [Config](06-config.md) chapter for valid configuration options. + +### Options + +* **--global (-g):** Operate on the global config file located at + `$COMPOSER_HOME/config.json` by default. Without this option, this command + affects the local composer.json file or a file specified by `--file`. +* **--editor (-e):** Open the local composer.json file using in a text editor as + defined by the `EDITOR` env variable. With the `--global` option, this opens + the global config file. +* **--auth (-a):** Affect auth config file (only used for --editor). +* **--unset:** Remove the configuration element named by `setting-key`. +* **--list (-l):** Show the list of current config variables. With the `--global` + option this lists the global configuration only. +* **--file="..." (-f):** Operate on a specific file instead of composer.json. Note + that this cannot be used in conjunction with the `--global` option. +* **--absolute:** Returns absolute paths when fetching *-dir config values + instead of relative. + +### Modifying Repositories + +In addition to modifying the config section, the `config` command also supports making +changes to the repositories section by using it the following way: + +```sh +php composer.phar config repositories.foo vcs https://github.com/foo/bar +``` + +If your repository requires more configuration options, you can instead pass its JSON representation : + +```sh +php composer.phar config repositories.foo '{"type": "vcs", "url": "http://svn.example.org/my-project/", "trunk-path": "master"}' +``` + +### Modifying Extra Values + +In addition to modifying the config section, the `config` command also supports making +changes to the extra section by using it the following way: + +```sh +php composer.phar config extra.foo.bar value +``` + +The dots indicate array nesting, a max depth of 3 levels is allowed though. The above +would set `"extra": { "foo": { "bar": "value" } }`. + +## create-project + +You can use Composer to create new projects from an existing package. This is +the equivalent of doing a git clone/svn checkout followed by a `composer install` +of the vendors. + +There are several applications for this: + +1. You can deploy application packages. +2. You can check out any package and start developing on patches for example. +3. Projects with multiple developers can use this feature to bootstrap the + initial application for development. + +To create a new project using Composer you can use the `create-project` command. +Pass it a package name, and the directory to create the project in. You can also +provide a version as third argument, otherwise the latest version is used. + +If the directory does not currently exist, it will be created during installation. + +```sh +php composer.phar create-project doctrine/orm path 2.2.* +``` + +It is also possible to run the command without params in a directory with an +existing `composer.json` file to bootstrap a project. + +By default the command checks for the packages on packagist.org. + +### Options + +* **--stability (-s):** Minimum stability of package. Defaults to `stable`. +* **--prefer-source:** Install packages from `source` when available. +* **--prefer-dist:** Install packages from `dist` when available. +* **--repository:** Provide a custom repository to search for the package, + which will be used instead of packagist. Can be either an HTTP URL pointing + to a `composer` repository, a path to a local `packages.json` file, or a + JSON string which similar to what the [repositories](04-schema.md#repositories) + key accepts. +* **--dev:** Install packages listed in `require-dev`. +* **--no-dev:** Disables installation of require-dev packages. +* **--no-scripts:** Disables the execution of the scripts defined in the root + package. +* **--no-progress:** Removes the progress display that can mess with some + terminals or scripts which don't handle backspace characters. +* **--no-secure-http:** Disable the secure-http config option temporarily while + installing the root package. Use at your own risk. Using this flag is a bad + idea. +* **--keep-vcs:** Skip the deletion of the VCS metadata for the created + project. This is mostly useful if you run the command in non-interactive + mode. +* **--remove-vcs:** Force-remove the VCS metadata without prompting. +* **--no-install:** Disables installation of the vendors. +* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` + requirements and force the installation even if the local machine does not + fulfill these. + +## dump-autoload (dumpautoload) + +If you need to update the autoloader because of new classes in a classmap +package for example, you can use `dump-autoload` to do that without having to +go through an install or update. + +Additionally, it can dump an optimized autoloader that converts PSR-0/4 packages +into classmap ones for performance reasons. In large applications with many +classes, the autoloader can take up a substantial portion of every request's +time. Using classmaps for everything is less convenient in development, but +using this option you can still use PSR-0/4 for convenience and classmaps for +performance. + +### Options +* **--no-scripts:** Skips the execution of all scripts defined in `composer.json` file. +* **--optimize (-o):** Convert PSR-0/4 autoloading to classmap to get a faster + autoloader. This is recommended especially for production, but can take + a bit of time to run so it is currently not done by default. +* **--classmap-authoritative (-a):** Autoload classes from the classmap only. + Implicitly enables `--optimize`. +* **--apcu:** Use APCu to cache found/not-found classes. +* **--no-dev:** Disables autoload-dev rules. + +## clear-cache (clearcache) + +Deletes all content from Composer's cache directories. + +## licenses + +Lists the name, version and license of every package installed. Use +`--format=json` to get machine readable output. + +### Options + +* **--format:** Format of the output: text or json (default: "text") +* **--no-dev:** Remove dev dependencies from the output + +## run-script + +### Options + +* **--timeout:** Set the script timeout in seconds, or 0 for no timeout. +* **--dev:** Sets the dev mode. +* **--no-dev:** Disable dev mode. +* **--list (-l):** List user defined scripts. + +To run [scripts](articles/scripts.md) manually you can use this command, +give it the script name and optionally any required arguments. + +## exec + +Executes a vendored binary/script. You can execute any command and this will +ensure that the Composer bin-dir is pushed on your PATH before the command +runs. + +### Options + +* **--list (-l):** List the available composer binaries. + +## diagnose + +If you think you found a bug, or something is behaving strangely, you might +want to run the `diagnose` command to perform automated checks for many common +problems. + +```sh +php composer.phar diagnose +``` + +## archive + +This command is used to generate a zip/tar archive for a given package in a +given version. It can also be used to archive your entire project without +excluded/ignored files. + +```sh +php composer.phar archive vendor/package 2.0.21 --format=zip +``` + +### Options + +* **--format (-f):** Format of the resulting archive: tar or zip (default: + "tar") +* **--dir:** Write the archive to this directory (default: ".") +* **--file:** Write the archive with the given file name. + +## help + +To get more information about a certain command, you can use `help`. + +```sh +php composer.phar help install +``` + +## Command-line completion + +Command-line completion can be enabled by following instructions +[on this page](https://github.com/bamarni/symfony-console-autocomplete). + +## Environment variables + +You can set a number of environment variables that override certain settings. +Whenever possible it is recommended to specify these settings in the `config` +section of `composer.json` instead. It is worth noting that the env vars will +always take precedence over the values specified in `composer.json`. + +### COMPOSER + +By setting the `COMPOSER` env variable it is possible to set the filename of +`composer.json` to something else. + +For example: + +```sh +COMPOSER=composer-other.json php composer.phar install +``` + +The generated lock file will use the same name: `composer-other.lock` in this example. + +### COMPOSER_ALLOW_SUPERUSER + +If set to 1, this env disables the warning about running commands as root/super user. +It also disables automatic clearing of sudo sessions, so you should really only set this +if you use Composer as super user at all times like in docker containers. + +### COMPOSER_AUTH + +The `COMPOSER_AUTH` var allows you to set up authentication as an environment variable. +The contents of the variable should be a JSON formatted object containing http-basic, +github-oauth, bitbucket-oauth, ... objects as needed, and following the +[spec from the config](06-config.md#gitlab-oauth). + +### COMPOSER_BIN_DIR + +By setting this option you can change the `bin` ([Vendor Binaries](articles/vendor-binaries.md)) +directory to something other than `vendor/bin`. + +### COMPOSER_CACHE_DIR + +The `COMPOSER_CACHE_DIR` var allows you to change the Composer cache directory, +which is also configurable via the [`cache-dir`](06-config.md#cache-dir) option. + +By default it points to `$COMPOSER_HOME/cache` on \*nix and macOS, and +`C:\Users\\AppData\Local\Composer` (or `%LOCALAPPDATA%/Composer`) on Windows. + +### COMPOSER_CAFILE + +By setting this environmental value, you can set a path to a certificate bundle +file to be used during SSL/TLS peer verification. + +### COMPOSER_DISCARD_CHANGES + +This env var controls the [`discard-changes`](06-config.md#discard-changes) config option. + +### COMPOSER_HOME + +The `COMPOSER_HOME` var allows you to change the Composer home directory. This +is a hidden, global (per-user on the machine) directory that is shared between +all projects. + +By default it points to `C:\Users\\AppData\Roaming\Composer` on Windows +and `/Users//.composer` on macOS. On \*nix systems that follow the [XDG Base +Directory Specifications](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html), +it points to `$XDG_CONFIG_HOME/composer`. On other \*nix systems, it points to +`/home//.composer`. + +#### COMPOSER_HOME/config.json + +You may put a `config.json` file into the location which `COMPOSER_HOME` points +to. Composer will merge this configuration with your project's `composer.json` +when you run the `install` and `update` commands. + +This file allows you to set [repositories](05-repositories.md) and +[configuration](06-config.md) for the user's projects. + +In case global configuration matches _local_ configuration, the _local_ +configuration in the project's `composer.json` always wins. + +### COMPOSER_HTACCESS_PROTECT + +Defaults to `1`. If set to `0`, Composer will not create `.htaccess` files in the +composer home, cache, and data directories. + +### COMPOSER_MEMORY_LIMIT + +If set, the value is used as php's memory_limit. + +### COMPOSER_MIRROR_PATH_REPOS + +If set to 1, this env changes the default path repository strategy to `mirror` instead +of `symlink`. As it is the default strategy being set it can still be overwritten by +repository options. + +### COMPOSER_NO_INTERACTION + +If set to 1, this env var will make Composer behave as if you passed the +`--no-interaction` flag to every command. This can be set on build boxes/CI. + +### COMPOSER_PROCESS_TIMEOUT + +This env var controls the time Composer waits for commands (such as git +commands) to finish executing. The default value is 300 seconds (5 minutes). + +### COMPOSER_ROOT_VERSION + +By setting this var you can specify the version of the root package, if it can +not be guessed from VCS info and is not present in `composer.json`. + +### COMPOSER_VENDOR_DIR + +By setting this var you can make Composer install the dependencies into a +directory other than `vendor`. + +### http_proxy or HTTP_PROXY + +If you are using Composer from behind an HTTP proxy, you can use the standard +`http_proxy` or `HTTP_PROXY` env vars. Simply set it to the URL of your proxy. +Many operating systems already set this variable for you. + +Using `http_proxy` (lowercased) or even defining both might be preferable since +some tools like git or curl will only use the lower-cased `http_proxy` version. +Alternatively you can also define the git proxy using +`git config --global http.proxy `. + +If you are using Composer in a non-CLI context (i.e. integration into a CMS or +similar use case), and need to support proxies, please provide the `CGI_HTTP_PROXY` +environment variable instead. See [httpoxy.org](https://httpoxy.org/) for further +details. + +### HTTP_PROXY_REQUEST_FULLURI + +If you use a proxy but it does not support the request_fulluri flag, then you +should set this env var to `false` or `0` to prevent Composer from setting the +request_fulluri option. + +### HTTPS_PROXY_REQUEST_FULLURI + +If you use a proxy but it does not support the request_fulluri flag for HTTPS +requests, then you should set this env var to `false` or `0` to prevent Composer +from setting the request_fulluri option. + +### COMPOSER_SELF_UPDATE_TARGET + +If set, makes the self-update command write the new Composer phar file into that path instead of overwriting itself. Useful for updating Composer on read-only filesystem. + +### no_proxy or NO_PROXY + +If you are behind a proxy and would like to disable it for certain domains, you +can use the `no_proxy` or `NO_PROXY` env var. Simply set it to a comma separated list of +domains the proxy should *not* be used for. + +The env var accepts domains, IP addresses, and IP address blocks in CIDR +notation. You can restrict the filter to a particular port (e.g. `:80`). You +can also set it to `*` to ignore the proxy for all HTTP requests. + +← [Libraries](02-libraries.md) | [Schema](04-schema.md) → diff --git a/vendor/composer/composer/doc/04-schema.md b/vendor/composer/composer/doc/04-schema.md new file mode 100644 index 0000000..7c66813 --- /dev/null +++ b/vendor/composer/composer/doc/04-schema.md @@ -0,0 +1,924 @@ +# The composer.json Schema + +This chapter will explain all of the fields available in `composer.json`. + +## JSON schema + +We have a [JSON schema](http://json-schema.org) that documents the format and +can also be used to validate your `composer.json`. In fact, it is used by the +`validate` command. You can find it at: https://getcomposer.org/schema.json + +## Root Package + +The root package is the package defined by the `composer.json` at the root of +your project. It is the main `composer.json` that defines your project +requirements. + +Certain fields only apply when in the root package context. One example of +this is the `config` field. Only the root package can define configuration. +The config of dependencies is ignored. This makes the `config` field +`root-only`. + +> **Note:** A package can be the root package or not, depending on the context. +> For example, if your project depends on the `monolog` library, your project +> is the root package. However, if you clone `monolog` from GitHub in order to +> fix a bug in it, then `monolog` is the root package. + +## Properties + +### name + +The name of the package. It consists of vendor name and project name, +separated by `/`. Examples: + +* monolog/monolog +* igorw/event-source + +The name can contain any character, including white spaces, and it's case +insensitive (`foo/bar` and `Foo/Bar` are considered the same package). In order +to simplify its installation, it's recommended to define a short and lowercase +name that doesn't include non-alphanumeric characters or white spaces. + +Required for published packages (libraries). + +### description + +A short description of the package. Usually this is one line long. + +Required for published packages (libraries). + +### version + +The version of the package. In most cases this is not required and should +be omitted (see below). + +This must follow the format of `X.Y.Z` or `vX.Y.Z` with an optional suffix +of `-dev`, `-patch` (`-p`), `-alpha` (`-a`), `-beta` (`-b`) or `-RC`. +The patch, alpha, beta and RC suffixes can also be followed by a number. + +Examples: + +- 1.0.0 +- 1.0.2 +- 1.1.0 +- 0.2.5 +- 1.0.0-dev +- 1.0.0-alpha3 +- 1.0.0-beta2 +- 1.0.0-RC5 +- v2.0.4-p1 + +Optional if the package repository can infer the version from somewhere, such +as the VCS tag name in the VCS repository. In that case it is also recommended +to omit it. + +> **Note:** Packagist uses VCS repositories, so the statement above is very +> much true for Packagist as well. Specifying the version yourself will +> most likely end up creating problems at some point due to human error. + +### type + +The type of the package. It defaults to `library`. + +Package types are used for custom installation logic. If you have a package +that needs some special logic, you can define a custom type. This could be a +`symfony-bundle`, a `wordpress-plugin` or a `typo3-cms-extension`. These types +will all be specific to certain projects, and they will need to provide an +installer capable of installing packages of that type. + +Out of the box, Composer supports four types: + +- **library:** This is the default. It will simply copy the files to `vendor`. +- **project:** This denotes a project rather than a library. For example + application shells like the [Symfony standard edition](https://github.com/symfony/symfony-standard), + CMSs like the [SilverStripe installer](https://github.com/silverstripe/silverstripe-installer) + or full fledged applications distributed as packages. This can for example + be used by IDEs to provide listings of projects to initialize when creating + a new workspace. +- **metapackage:** An empty package that contains requirements and will trigger + their installation, but contains no files and will not write anything to the + filesystem. As such, it does not require a dist or source key to be + installable. +- **composer-plugin:** A package of type `composer-plugin` may provide an + installer for other packages that have a custom type. Read more in the + [dedicated article](articles/custom-installers.md). + +Only use a custom type if you need custom logic during installation. It is +recommended to omit this field and have it default to `library`. + +### keywords + +An array of keywords that the package is related to. These can be used for +searching and filtering. + +Examples: + +- logging +- events +- database +- redis +- templating + +Optional. + +### homepage + +An URL to the website of the project. + +Optional. + +### readme + +A relative path to the readme document. + +Optional. + +### time + +Release date of the version. + +Must be in `YYYY-MM-DD` or `YYYY-MM-DD HH:MM:SS` format. + +Optional. + +### license + +The license of the package. This can be either a string or an array of strings. + +The recommended notation for the most common licenses is (alphabetical): + +- Apache-2.0 +- BSD-2-Clause +- BSD-3-Clause +- BSD-4-Clause +- GPL-2.0-only / GPL-2.0-or-later +- GPL-3.0-only / GPL-3.0-or-later +- LGPL-2.1-only / LGPL-2.1-or-later +- LGPL-3.0-only / LGPL-3.0-or-later +- MIT + +Optional, but it is highly recommended to supply this. More identifiers are +listed at the [SPDX Open Source License Registry](https://spdx.org/licenses/). + +For closed-source software, you may use `"proprietary"` as the license identifier. + +An Example: + +```json +{ + "license": "MIT" +} +``` + +For a package, when there is a choice between licenses ("disjunctive license"), +multiple can be specified as array. + +An Example for disjunctive licenses: + +```json +{ + "license": [ + "LGPL-2.1-only", + "GPL-3.0-or-later" + ] +} +``` + +Alternatively they can be separated with "or" and enclosed in parenthesis; + +```json +{ + "license": "(LGPL-2.1-only or GPL-3.0-or-later)" +} +``` + +Similarly when multiple licenses need to be applied ("conjunctive license"), +they should be separated with "and" and enclosed in parenthesis. + +### authors + +The authors of the package. This is an array of objects. + +Each author object can have following properties: + +* **name:** The author's name. Usually their real name. +* **email:** The author's email address. +* **homepage:** An URL to the author's website. +* **role:** The author's role in the project (e.g. developer or translator) + +An example: + +```json +{ + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de", + "role": "Developer" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be", + "role": "Developer" + } + ] +} +``` + +Optional, but highly recommended. + +### support + +Various information to get support about the project. + +Support information includes the following: + +* **email:** Email address for support. +* **issues:** URL to the issue tracker. +* **forum:** URL to the forum. +* **wiki:** URL to the wiki. +* **irc:** IRC channel for support, as irc://server/channel. +* **source:** URL to browse or download the sources. +* **docs:** URL to the documentation. +* **rss:** URL to the RSS feed. +* **chat:** URL to the chat channel. + +An example: + +```json +{ + "support": { + "email": "support@example.org", + "irc": "irc://irc.freenode.org/composer" + } +} +``` + +Optional. + +### Package links + +All of the following take an object which maps package names to +versions of the package via version constraints. Read more about +versions [here](articles/versions.md). + +Example: + +```json +{ + "require": { + "monolog/monolog": "1.0.*" + } +} +``` + +All links are optional fields. + +`require` and `require-dev` additionally support stability flags ([root-only](04-schema.md#root-package)). +These allow you to further restrict or expand the stability of a package beyond +the scope of the [minimum-stability](#minimum-stability) setting. You can apply +them to a constraint, or apply them to an empty constraint if you want to +allow unstable packages of a dependency for example. + +Example: + +```json +{ + "require": { + "monolog/monolog": "1.0.*@beta", + "acme/foo": "@dev" + } +} +``` + +If one of your dependencies has a dependency on an unstable package you need to +explicitly require it as well, along with its sufficient stability flag. + +Example: + +Assuming `doctrine/doctrine-fixtures-bundle` requires `"doctrine/data-fixtures": "dev-master"` +then inside the root composer.json you need to add the second line below to allow dev +releases for the `doctrine/data-fixtures` package : + +```json +{ + "require": { + "doctrine/doctrine-fixtures-bundle": "dev-master", + "doctrine/data-fixtures": "@dev" + } +} +``` + +`require` and `require-dev` additionally support explicit references (i.e. +commit) for dev versions to make sure they are locked to a given state, even +when you run update. These only work if you explicitly require a dev version +and append the reference with `#`. This is also a +[root-only](04-schema.md#root-package) feature and will be ignored in +dependencies. + +Example: + +```json +{ + "require": { + "monolog/monolog": "dev-master#2eb0c0978d290a1c45346a1955188929cb4e5db7", + "acme/foo": "1.0.x-dev#abc123" + } +} +``` + +> **Note:** This feature has severe technical limitations, as the +> composer.json metadata will still be read from the branch name you specify +> before the hash. You should therefore only use this as a temporary solution +> during development to remediate transient issues, until you can switch to +> tagged releases. The Composer team does not actively support this feature +> and will not accept bug reports related to it. + +It is also possible to inline-alias a package constraint so that it matches +a constraint that it otherwise would not. For more information [see the +aliases article](articles/aliases.md). + +`require` and `require-dev` also support references to specific PHP versions +and PHP extensions your project needs to run successfully. + +Example: + +```json +{ + "require" : { + "php" : "^5.5 || ^7.0", + "ext-mbstring": "*" + } +} +``` + +> **Note:** It is important to list PHP extensions your project requires. +> Not all PHP installations are created equal: some may miss extensions you +> may consider as standard (such as `ext-mysqli` which is not installed by +> default in Fedora/CentOS minimal installation systems). Failure to list +> required PHP extensions may lead to a bad user experience: Composer will +> install your package without any errors but it will then fail at run-time. +> The `composer show --platform` command lists all PHP extensions available on +> your system. You may use it to help you compile the list of extensions you +> use and require. Alternatively you may use third party tools to analyze +> your project for the list of extensions used. + +#### require + +Lists packages required by this package. The package will not be installed +unless those requirements can be met. + +#### require-dev ([root-only](04-schema.md#root-package)) + +Lists packages required for developing this package, or running +tests, etc. The dev requirements of the root package are installed by default. +Both `install` or `update` support the `--no-dev` option that prevents dev +dependencies from being installed. + +#### conflict + +Lists packages that conflict with this version of this package. They +will not be allowed to be installed together with your package. + +Note that when specifying ranges like `<1.0 >=1.1` in a `conflict` link, +this will state a conflict with all versions that are less than 1.0 *and* equal +or newer than 1.1 at the same time, which is probably not what you want. You +probably want to go for `<1.0 || >=1.1` in this case. + +#### replace + +Lists packages that are replaced by this package. This allows you to fork a +package, publish it under a different name with its own version numbers, while +packages requiring the original package continue to work with your fork because +it replaces the original package. + +This is also useful for packages that contain sub-packages, for example the main +symfony/symfony package contains all the Symfony Components which are also +available as individual packages. If you require the main package it will +automatically fulfill any requirement of one of the individual components, +since it replaces them. + +Caution is advised when using replace for the sub-package purpose explained +above. You should then typically only replace using `self.version` as a version +constraint, to make sure the main package only replaces the sub-packages of +that exact version, and not any other version, which would be incorrect. + +#### provide + +List of other packages that are provided by this package. This is mostly +useful for common interfaces. A package could depend on some virtual +`logger` package, any library that implements this logger interface would +simply list it in `provide`. + +#### suggest + +Suggested packages that can enhance or work well with this package. These are +informational and are displayed after the package is installed, to give +your users a hint that they could add more packages, even though they are not +strictly required. + +The format is like package links above, except that the values are free text +and not version constraints. + +Example: + +```json +{ + "suggest": { + "monolog/monolog": "Allows more advanced logging of the application flow", + "ext-xml": "Needed to support XML format in class Foo" + } +} +``` + +### autoload + +Autoload mapping for a PHP autoloader. + +[`PSR-4`](http://www.php-fig.org/psr/psr-4/) and [`PSR-0`](http://www.php-fig.org/psr/psr-0/) +autoloading, `classmap` generation and `files` includes are supported. + +PSR-4 is the recommended way since it offers greater ease of use (no need +to regenerate the autoloader when you add classes). + +#### PSR-4 + +Under the `psr-4` key you define a mapping from namespaces to paths, relative to the +package root. When autoloading a class like `Foo\\Bar\\Baz` a namespace prefix +`Foo\\` pointing to a directory `src/` means that the autoloader will look for a +file named `src/Bar/Baz.php` and include it if present. Note that as opposed to +the older PSR-0 style, the prefix (`Foo\\`) is **not** present in the file path. + +Namespace prefixes must end in `\\` to avoid conflicts between similar prefixes. +For example `Foo` would match classes in the `FooBar` namespace so the trailing +backslashes solve the problem: `Foo\\` and `FooBar\\` are distinct. + +The PSR-4 references are all combined, during install/update, into a single +key => value array which may be found in the generated file +`vendor/composer/autoload_psr4.php`. + +Example: + +```json +{ + "autoload": { + "psr-4": { + "Monolog\\": "src/", + "Vendor\\Namespace\\": "" + } + } +} +``` + +If you need to search for a same prefix in multiple directories, +you can specify them as an array as such: + +```json +{ + "autoload": { + "psr-4": { "Monolog\\": ["src/", "lib/"] } + } +} +``` + +If you want to have a fallback directory where any namespace will be looked for, +you can use an empty prefix like: + +```json +{ + "autoload": { + "psr-4": { "": "src/" } + } +} +``` + +#### PSR-0 + +Under the `psr-0` key you define a mapping from namespaces to paths, relative to the +package root. Note that this also supports the PEAR-style non-namespaced convention. + +Please note namespace declarations should end in `\\` to make sure the autoloader +responds exactly. For example `Foo` would match in `FooBar` so the trailing +backslashes solve the problem: `Foo\\` and `FooBar\\` are distinct. + +The PSR-0 references are all combined, during install/update, into a single key => value +array which may be found in the generated file `vendor/composer/autoload_namespaces.php`. + +Example: + +```json +{ + "autoload": { + "psr-0": { + "Monolog\\": "src/", + "Vendor\\Namespace\\": "src/", + "Vendor_Namespace_": "src/" + } + } +} +``` + +If you need to search for a same prefix in multiple directories, +you can specify them as an array as such: + +```json +{ + "autoload": { + "psr-0": { "Monolog\\": ["src/", "lib/"] } + } +} +``` + +The PSR-0 style is not limited to namespace declarations only but may be +specified right down to the class level. This can be useful for libraries with +only one class in the global namespace. If the php source file is also located +in the root of the package, for example, it may be declared like this: + +```json +{ + "autoload": { + "psr-0": { "UniqueGlobalClass": "" } + } +} +``` + +If you want to have a fallback directory where any namespace can be, you can +use an empty prefix like: + +```json +{ + "autoload": { + "psr-0": { "": "src/" } + } +} +``` + +#### Classmap + +The `classmap` references are all combined, during install/update, into a single +key => value array which may be found in the generated file +`vendor/composer/autoload_classmap.php`. This map is built by scanning for +classes in all `.php` and `.inc` files in the given directories/files. + +You can use the classmap generation support to define autoloading for all libraries +that do not follow PSR-0/4. To configure this you specify all directories or files +to search for classes. + +Example: + +```json +{ + "autoload": { + "classmap": ["src/", "lib/", "Something.php"] + } +} +``` + +#### Files + +If you want to require certain files explicitly on every request then you can use +the `files` autoloading mechanism. This is useful if your package includes PHP functions +that cannot be autoloaded by PHP. + +Example: + +```json +{ + "autoload": { + "files": ["src/MyLibrary/functions.php"] + } +} +``` + +#### Exclude files from classmaps + +If you want to exclude some files or folders from the classmap you can use the `exclude-from-classmap` property. +This might be useful to exclude test classes in your live environment, for example, as those will be skipped +from the classmap even when building an optimized autoloader. + +The classmap generator will ignore all files in the paths configured here. The paths are absolute from the package +root directory (i.e. composer.json location), and support `*` to match anything but a slash, and `**` to +match anything. `**` is implicitly added to the end of the paths. + +Example: + +```json +{ + "autoload": { + "exclude-from-classmap": ["/Tests/", "/test/", "/tests/"] + } +} +``` + +#### Optimizing the autoloader + +The autoloader can have quite a substantial impact on your request time +(50-100ms per request in large frameworks using a lot of classes). See the +[article about optimizing the autoloader](articles/autoloader-optimization.md) +for more details on how to reduce this impact. + +### autoload-dev ([root-only](04-schema.md#root-package)) + +This section allows to define autoload rules for development purposes. + +Classes needed to run the test suite should not be included in the main autoload +rules to avoid polluting the autoloader in production and when other people use +your package as a dependency. + +Therefore, it is a good idea to rely on a dedicated path for your unit tests +and to add it within the autoload-dev section. + +Example: + +```json +{ + "autoload": { + "psr-4": { "MyLibrary\\": "src/" } + }, + "autoload-dev": { + "psr-4": { "MyLibrary\\Tests\\": "tests/" } + } +} +``` + +### include-path + +> **DEPRECATED**: This is only present to support legacy projects, and all new code +> should preferably use autoloading. As such it is a deprecated practice, but the +> feature itself will not likely disappear from Composer. + +A list of paths which should get appended to PHP's `include_path`. + +Example: + +```json +{ + "include-path": ["lib/"] +} +``` + +Optional. + +### target-dir + +> **DEPRECATED**: This is only present to support legacy PSR-0 style autoloading, +> and all new code should preferably use PSR-4 without target-dir and projects +> using PSR-0 with PHP namespaces are encouraged to migrate to PSR-4 instead. + +Defines the installation target. + +In case the package root is below the namespace declaration you cannot +autoload properly. `target-dir` solves this problem. + +An example is Symfony. There are individual packages for the components. The +Yaml component is under `Symfony\Component\Yaml`. The package root is that +`Yaml` directory. To make autoloading possible, we need to make sure that it +is not installed into `vendor/symfony/yaml`, but instead into +`vendor/symfony/yaml/Symfony/Component/Yaml`, so that the autoloader can load +it from `vendor/symfony/yaml`. + +To do that, `autoload` and `target-dir` are defined as follows: + +```json +{ + "autoload": { + "psr-0": { "Symfony\\Component\\Yaml\\": "" } + }, + "target-dir": "Symfony/Component/Yaml" +} +``` + +Optional. + +### minimum-stability ([root-only](04-schema.md#root-package)) + +This defines the default behavior for filtering packages by stability. This +defaults to `stable`, so if you rely on a `dev` package, you should specify +it in your file to avoid surprises. + +All versions of each package are checked for stability, and those that are less +stable than the `minimum-stability` setting will be ignored when resolving +your project dependencies. (Note that you can also specify stability requirements +on a per-package basis using stability flags in the version constraints that you +specify in a `require` block (see [package links](#package-links) for more details). + +Available options (in order of stability) are `dev`, `alpha`, `beta`, `RC`, +and `stable`. + +### prefer-stable ([root-only](04-schema.md#root-package)) + +When this is enabled, Composer will prefer more stable packages over unstable +ones when finding compatible stable packages is possible. If you require a +dev version or only alphas are available for a package, those will still be +selected granted that the minimum-stability allows for it. + +Use `"prefer-stable": true` to enable. + +### repositories ([root-only](04-schema.md#root-package)) + +Custom package repositories to use. + +By default Composer only uses the packagist repository. By specifying +repositories you can get packages from elsewhere. + +Repositories are not resolved recursively. You can only add them to your main +`composer.json`. Repository declarations of dependencies' `composer.json`s are +ignored. + +The following repository types are supported: + +* **composer:** A Composer repository is simply a `packages.json` file served + via the network (HTTP, FTP, SSH), that contains a list of `composer.json` + objects with additional `dist` and/or `source` information. The `packages.json` + file is loaded using a PHP stream. You can set extra options on that stream + using the `options` parameter. +* **vcs:** The version control system repository can fetch packages from git, + svn, fossil and hg repositories. +* **pear:** With this you can import any pear repository into your Composer + project. +* **package:** If you depend on a project that does not have any support for + composer whatsoever you can define the package inline using a `package` + repository. You basically inline the `composer.json` object. + +For more information on any of these, see [Repositories](05-repositories.md). + +Example: + +```json +{ + "repositories": [ + { + "type": "composer", + "url": "http://packages.example.com" + }, + { + "type": "composer", + "url": "https://packages.example.com", + "options": { + "ssl": { + "verify_peer": "true" + } + } + }, + { + "type": "vcs", + "url": "https://github.com/Seldaek/monolog" + }, + { + "type": "pear", + "url": "https://pear2.php.net" + }, + { + "type": "package", + "package": { + "name": "smarty/smarty", + "version": "3.1.7", + "dist": { + "url": "https://www.smarty.net/files/Smarty-3.1.7.zip", + "type": "zip" + }, + "source": { + "url": "https://smarty-php.googlecode.com/svn/", + "type": "svn", + "reference": "tags/Smarty_3_1_7/distribution/" + } + } + } + ] +} +``` + +> **Note:** Order is significant here. When looking for a package, Composer +will look from the first to the last repository, and pick the first match. +By default Packagist is added last which means that custom repositories can +override packages from it. + +Using JSON object notation is also possible. However, JSON key/value pairs +are to be considered unordered so consistent behaviour cannot be guaranteed. + + ```json +{ + "repositories": { + "foo": { + "type": "composer", + "url": "http://packages.foo.com" + } + } +} + ``` + +### config ([root-only](04-schema.md#root-package)) + +A set of configuration options. It is only used for projects. See +[Config](06-config.md) for a description of each individual option. + +### scripts ([root-only](04-schema.md#root-package)) + +Composer allows you to hook into various parts of the installation process +through the use of scripts. + +See [Scripts](articles/scripts.md) for events details and examples. + +### extra + +Arbitrary extra data for consumption by `scripts`. + +This can be virtually anything. To access it from within a script event +handler, you can do: + +```php +$extra = $event->getComposer()->getPackage()->getExtra(); +``` + +Optional. + +### bin + +A set of files that should be treated as binaries and symlinked into the `bin-dir` +(from config). + +See [Vendor Binaries](articles/vendor-binaries.md) for more details. + +Optional. + +### archive + +A set of options for creating package archives. + +The following options are supported: + +* **exclude:** Allows configuring a list of patterns for excluded paths. The + pattern syntax matches .gitignore files. A leading exclamation mark (!) will + result in any matching files to be included even if a previous pattern + excluded them. A leading slash will only match at the beginning of the project + relative path. An asterisk will not expand to a directory separator. + +Example: + +```json +{ + "archive": { + "exclude": ["/foo/bar", "baz", "/*.test", "!/foo/bar/baz"] + } +} +``` + +The example will include `/dir/foo/bar/file`, `/foo/bar/baz`, `/file.php`, +`/foo/my.test` but it will exclude `/foo/bar/any`, `/foo/baz`, and `/my.test`. + +Optional. + +### abandoned + +Indicates whether this package has been abandoned. + +It can be boolean or a package name/URL pointing to a recommended alternative. + +Examples: + +Use `"abandoned": true` to indicates this package is abandoned. +Use `"abandoned": "monolog/monolog"` to indicates this package is abandoned and the +recommended alternative is `monolog/monolog`. + +Defaults to false. + +Optional. + +### non-feature-branches + +A list of regex patterns of branch names that are non-numeric (e.g. "latest" or something), +that will NOT be handled as feature branches. This is an array of strings. + +If you have non-numeric branch names, for example like "latest", "current", "latest-stable" +or something, that do not look like a version number, then Composer handles such branches +as feature branches. This means it searches for parent branches, that look like a version +or ends at special branches (like master) and the root package version number becomes the +version of the parent branch or at least master or something. + +To handle non-numeric named branches as versions instead of searching for a parent branch +with a valid version or special branch name like master, you can set patterns for branch +names, that should be handled as dev version branches. + +This is really helpful when you have dependencies using "self.version", so that not dev-master, +but the same branch is installed (in the example: latest-testing). + +An example: + +If you have a testing branch, that is heavily maintained during a testing phase and is +deployed to your staging environment, normally `composer show -s` will give you `versions : * dev-master`. + +If you configure `latest-.*` as a pattern for non-feature-branches like this: + +```json +{ + "non-feature-branches": ["latest-.*"] +} +``` + +Then `composer show -s` will give you `versions : * dev-latest-testing`. + +Optional. + +← [Command-line interface](03-cli.md) | [Repositories](05-repositories.md) → diff --git a/vendor/composer/composer/doc/05-repositories.md b/vendor/composer/composer/doc/05-repositories.md new file mode 100644 index 0000000..ba5713a --- /dev/null +++ b/vendor/composer/composer/doc/05-repositories.md @@ -0,0 +1,717 @@ +# Repositories + +This chapter will explain the concept of packages and repositories, what kinds +of repositories are available, and how they work. + +## Concepts + +Before we look at the different types of repositories that exist, we need to +understand some of the basic concepts that Composer is built on. + +### Package + +Composer is a dependency manager. It installs packages locally. A package is +essentially a directory containing something. In this case it is PHP +code, but in theory it could be anything. And it contains a package +description which has a name and a version. The name and the version are used +to identify the package. + +In fact, internally Composer sees every version as a separate package. While +this distinction does not matter when you are using Composer, it's quite +important when you want to change it. + +In addition to the name and the version, there is useful metadata. The +information most relevant for installation is the source definition, which +describes where to get the package contents. The package data points to the +contents of the package. And there are two options here: dist and source. + +**Dist:** The dist is a packaged version of the package data. Usually a +released version, usually a stable release. + +**Source:** The source is used for development. This will usually originate +from a source code repository, such as git. You can fetch this when you want +to modify the downloaded package. + +Packages can supply either of these, or even both. Depending on certain +factors, such as user-supplied options and stability of the package, one will +be preferred. + +### Repository + +A repository is a package source. It's a list of packages/versions. Composer +will look in all your repositories to find the packages your project requires. + +By default only the Packagist repository is registered in Composer. You can +add more repositories to your project by declaring them in `composer.json`. + +Repositories are only available to the root package and the repositories +defined in your dependencies will not be loaded. Read the +[FAQ entry](faqs/why-can't-composer-load-repositories-recursively.md) if you +want to learn why. + +## Types + +### Composer + +The main repository type is the `composer` repository. It uses a single +`packages.json` file that contains all of the package metadata. + +This is also the repository type that packagist uses. To reference a +`composer` repository, supply the path before the `packages.json` file. +In the case of packagist, that file is located at `/packages.json`, so the URL of +the repository would be `repo.packagist.org`. For `example.org/packages.json` the +repository URL would be `example.org`. + +#### packages + +The only required field is `packages`. The JSON structure is as follows: + +```json +{ + "packages": { + "vendor/package-name": { + "dev-master": { @composer.json }, + "1.0.x-dev": { @composer.json }, + "0.0.1": { @composer.json }, + "1.0.0": { @composer.json } + } + } +} +``` + +The `@composer.json` marker would be the contents of the `composer.json` from +that package version including as a minimum: + +* name +* version +* dist or source + +Here is a minimal package definition: + +```json +{ + "name": "smarty/smarty", + "version": "3.1.7", + "dist": { + "url": "https://www.smarty.net/files/Smarty-3.1.7.zip", + "type": "zip" + } +} +``` + +It may include any of the other fields specified in the [schema](04-schema.md). + +#### notify-batch + +The `notify-batch` field allows you to specify a URL that will be called +every time a user installs a package. The URL can be either an absolute path +(that will use the same domain as the repository) or a fully qualified URL. + +An example value: + +```json +{ + "notify-batch": "/downloads/" +} +``` + +For `example.org/packages.json` containing a `monolog/monolog` package, this +would send a `POST` request to `example.org/downloads/` with following +JSON request body: + +```json +{ + "downloads": [ + {"name": "monolog/monolog", "version": "1.2.1.0"} + ] +} +``` + +The version field will contain the normalized representation of the version +number. + +This field is optional. + +#### provider-includes and providers-url + +The `provider-includes` field allows you to list a set of files that list +package names provided by this repository. The hash should be a sha256 of +the files in this case. + +The `providers-url` describes how provider files are found on the server. It +is an absolute path from the repository root. It must contain the placeholders +`%package%` and `%hash%`. + +An example: + +```json +{ + "provider-includes": { + "providers-a.json": { + "sha256": "f5b4bc0b354108ef08614e569c1ed01a2782e67641744864a74e788982886f4c" + }, + "providers-b.json": { + "sha256": "b38372163fac0573053536f5b8ef11b86f804ea8b016d239e706191203f6efac" + } + }, + "providers-url": "/p/%package%$%hash%.json" +} +``` + +Those files contain lists of package names and hashes to verify the file +integrity, for example: + +```json +{ + "providers": { + "acme/foo": { + "sha256": "38968de1305c2e17f4de33aea164515bc787c42c7e2d6e25948539a14268bb82" + }, + "acme/bar": { + "sha256": "4dd24c930bd6e1103251306d6336ac813b563a220d9ca14f4743c032fb047233" + } + } +} +``` + +The file above declares that acme/foo and acme/bar can be found in this +repository, by loading the file referenced by `providers-url`, replacing +`%package%` by the vendor namespaced package name and `%hash%` by the +sha256 field. Those files themselves contain package definitions as +described [above](#packages). + +These fields are optional. You probably don't need them for your own custom +repository. + +#### stream options + +The `packages.json` file is loaded using a PHP stream. You can set extra +options on that stream using the `options` parameter. You can set any valid +PHP stream context option. See [Context options and +parameters](https://php.net/manual/en/context.php) for more information. + +### VCS + +VCS stands for version control system. This includes versioning systems like +git, svn, fossil or hg. Composer has a repository type for installing packages +from these systems. + +#### Loading a package from a VCS repository + +There are a few use cases for this. The most common one is maintaining your +own fork of a third party library. If you are using a certain library for your +project and you decide to change something in the library, you will want your +project to use the patched version. If the library is on GitHub (this is the +case most of the time), you can simply fork it there and push your changes to +your fork. After that you update the project's `composer.json`. All you have +to do is add your fork as a repository and update the version constraint to +point to your custom branch. In `composer.json`, you should prefix your custom +branch name with `"dev-"`. For version constraint naming conventions see +[Libraries](02-libraries.md) for more information. + +Example assuming you patched monolog to fix a bug in the `bugfix` branch: + +```json +{ + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/igorw/monolog" + } + ], + "require": { + "monolog/monolog": "dev-bugfix" + } +} +``` + +When you run `php composer.phar update`, you should get your modified version +of `monolog/monolog` instead of the one from packagist. + +Note that you should not rename the package unless you really intend to fork +it in the long term, and completely move away from the original package. +Composer will correctly pick your package over the original one since the +custom repository has priority over packagist. If you want to rename the +package, you should do so in the default (often master) branch and not in a +feature branch, since the package name is taken from the default branch. + +Also note that the override will not work if you change the `name` property +in your forked repository's `composer.json` file as this needs to match the +original for the override to work. + +If other dependencies rely on the package you forked, it is possible to +inline-alias it so that it matches a constraint that it otherwise would not. +For more information [see the aliases article](articles/aliases.md). + +#### Using private repositories + +Exactly the same solution allows you to work with your private repositories at +GitHub and BitBucket: + +```json +{ + "require": { + "vendor/my-private-repo": "dev-master" + }, + "repositories": [ + { + "type": "vcs", + "url": "git@bitbucket.org:vendor/my-private-repo.git" + } + ] +} +``` + +The only requirement is the installation of SSH keys for a git client. + +#### Git alternatives + +Git is not the only version control system supported by the VCS repository. +The following are supported: + +* **Git:** [git-scm.com](https://git-scm.com) +* **Subversion:** [subversion.apache.org](https://subversion.apache.org) +* **Mercurial:** [mercurial-scm.org](https://www.mercurial-scm.org) +* **Fossil**: [fossil-scm.org](https://www.fossil-scm.org/) + +To get packages from these systems you need to have their respective clients +installed. That can be inconvenient. And for this reason there is special +support for GitHub and BitBucket that use the APIs provided by these sites, to +fetch the packages without having to install the version control system. The +VCS repository provides `dist`s for them that fetch the packages as zips. + +* **GitHub:** [github.com](https://github.com) (Git) +* **BitBucket:** [bitbucket.org](https://bitbucket.org) (Git and Mercurial) + +The VCS driver to be used is detected automatically based on the URL. However, +should you need to specify one for whatever reason, you can use `git-bitbucket`, +`hg-bitbucket`, `github`, `gitlab`, `perforce`, `fossil`, `git`, `svn` or `hg` +as the repository type instead of `vcs`. + +If you set the `no-api` key to `true` on a github repository it will clone the +repository as it would with any other git repository instead of using the +GitHub API. But unlike using the `git` driver directly, Composer will still +attempt to use github's zip files. + +Please note: +* **To let Composer choose which driver to use** the repository type needs to be defined as "vcs" +* **If you already used a private repository**, this means Composer should have cloned it in cache. If you want to install the same package with drivers, remember to launch the command `composer clearcache` followed by the command `composer update` to update composer cache and install the package from dist. + +#### BitBucket Driver Configuration + +The BitBucket driver uses OAuth to access your private repositories via the BitBucket REST APIs and you will need to create an OAuth consumer to use the driver, please refer to [Atlassian's Documentation](https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html). You will need to fill the callback url with something to satisfy BitBucket, but the address does not need to go anywhere and is not used by Composer. + +After creating an OAuth consumer in the BitBucket control panel, you need to setup your auth.json file with +the credentials like this (more info [here](https://getcomposer.org/doc/06-config.md#bitbucket-oauth)): +```json +{ + "bitbucket-oauth": { + "bitbucket.org": { + "consumer-key": "myKey", + "consumer-secret": "mySecret" + } + } +} +``` +**Note that the repository endpoint needs to be https rather than git.** + +Alternatively if you prefer not to have your OAuth credentials on your filesystem you may export the ```bitbucket-oauth``` block above to the [COMPOSER_AUTH](https://getcomposer.org/doc/03-cli.md#composer-auth) environment variable instead. + +#### Subversion Options + +Since Subversion has no native concept of branches and tags, Composer assumes +by default that code is located in `$url/trunk`, `$url/branches` and +`$url/tags`. If your repository has a different layout you can change those +values. For example if you used capitalized names you could configure the +repository like this: + +```json +{ + "repositories": [ + { + "type": "vcs", + "url": "http://svn.example.org/projectA/", + "trunk-path": "Trunk", + "branches-path": "Branches", + "tags-path": "Tags" + } + ] +} +``` + +If you have no branches or tags directory you can disable them entirely by +setting the `branches-path` or `tags-path` to `false`. + +If the package is in a sub-directory, e.g. `/trunk/foo/bar/composer.json` and +`/tags/1.0/foo/bar/composer.json`, then you can make Composer access it by +setting the `"package-path"` option to the sub-directory, in this example it +would be `"package-path": "foo/bar/"`. + +If you have a private Subversion repository you can save credentials in the +http-basic section of your config (See [Schema](04-schema.md)): + +```json +{ + "http-basic": { + "svn.example.org": { + "username": "username", + "password": "password" + } + } +} +``` + +If your Subversion client is configured to store credentials by default these +credentials will be saved for the current user and existing saved credentials +for this server will be overwritten. To change this behavior by setting the +`"svn-cache-credentials"` option in your repository configuration: + +```json +{ + "repositories": [ + { + "type": "vcs", + "url": "http://svn.example.org/projectA/", + "svn-cache-credentials": false + } + ] +} +``` + +### PEAR + +It is possible to install packages from any PEAR channel by using the `pear` +repository. Composer will prefix all package names with `pear-{channelName}/` +to avoid conflicts. All packages are also aliased with prefix +`pear-{channelAlias}/`. + +Example using `pear2.php.net`: + +```json +{ + "repositories": [ + { + "type": "pear", + "url": "https://pear2.php.net" + } + ], + "require": { + "pear-pear2.php.net/PEAR2_Text_Markdown": "*", + "pear-pear2/PEAR2_HTTP_Request": "*" + } +} +``` + +In this case the short name of the channel is `pear2`, so the +`PEAR2_HTTP_Request` package name becomes `pear-pear2/PEAR2_HTTP_Request`. + +> **Note:** The `pear` repository requires doing quite a few requests per +> package, so this may considerably slow down the installation process. + +#### Custom vendor alias + +It is possible to alias PEAR channel packages with a custom vendor name. + +Example: + +Suppose you have a private PEAR repository and wish to use Composer to +incorporate dependencies from a VCS. Your PEAR repository contains the +following packages: + + * `BasePackage` + * `IntermediatePackage`, which depends on `BasePackage` + * `TopLevelPackage1` and `TopLevelPackage2` which both depend + on `IntermediatePackage` + +Without a vendor alias, Composer will use the PEAR channel name as the +vendor portion of the package name: + + * `pear-pear.foobar.repo/BasePackage` + * `pear-pear.foobar.repo/IntermediatePackage` + * `pear-pear.foobar.repo/TopLevelPackage1` + * `pear-pear.foobar.repo/TopLevelPackage2` + +Suppose at a later time you wish to migrate your PEAR packages to a +Composer repository and naming scheme, and adopt the vendor name of `foobar`. +Projects using your PEAR packages would not see the updated packages, since +they have a different vendor name (`foobar/IntermediatePackage` vs +`pear-pear.foobar.repo/IntermediatePackage`). + +By specifying `vendor-alias` for the PEAR repository from the start, you can +avoid this scenario and future-proof your package names. + +To illustrate, the following example would get the `BasePackage`, +`TopLevelPackage1`, and `TopLevelPackage2` packages from your PEAR repository +and `IntermediatePackage` from a Github repository: + +```json +{ + "repositories": [ + { + "type": "git", + "url": "https://github.com/foobar/intermediate.git" + }, + { + "type": "pear", + "url": "http://pear.foobar.repo", + "vendor-alias": "foobar" + } + ], + "require": { + "foobar/TopLevelPackage1": "*", + "foobar/TopLevelPackage2": "*" + } +} +``` + +### Package + +If you want to use a project that does not support Composer through any of the +means above, you still can define the package yourself by using a `package` +repository. + +Basically, you define the same information that is included in the `composer` +repository's `packages.json`, but only for a single package. Again, the +minimum required fields are `name`, `version`, and either of `dist` or +`source`. + +Here is an example for the smarty template engine: + +```json +{ + "repositories": [ + { + "type": "package", + "package": { + "name": "smarty/smarty", + "version": "3.1.7", + "dist": { + "url": "https://www.smarty.net/files/Smarty-3.1.7.zip", + "type": "zip" + }, + "source": { + "url": "http://smarty-php.googlecode.com/svn/", + "type": "svn", + "reference": "tags/Smarty_3_1_7/distribution/" + }, + "autoload": { + "classmap": ["libs/"] + } + } + } + ], + "require": { + "smarty/smarty": "3.1.*" + } +} +``` + +Typically you would leave the source part off, as you don't really need it. + +> **Note**: This repository type has a few limitations and should be avoided +> whenever possible: +> +> - Composer will not update the package unless you change the `version` field. +> - Composer will not update the commit references, so if you use `master` as +> reference you will have to delete the package to force an update, and will +> have to deal with an unstable lock file. + +The `"package"` key in a `package` repository may be set to an array to define multiple versions of a package: + +```json +{ + "repositories": [ + { + "type": "package", + "package": [ + { + "name": "foo/bar", + "version": "1.0.0", + ... + }, + { + "name": "foo/bar", + "version": "2.0.0", + ... + } + ] + } + ] +} +``` + +## Hosting your own + +While you will probably want to put your packages on packagist most of the +time, there are some use cases for hosting your own repository. + +* **Private company packages:** If you are part of a company that uses Composer + for their packages internally, you might want to keep those packages private. + +* **Separate ecosystem:** If you have a project which has its own ecosystem, + and the packages aren't really reusable by the greater PHP community, you + might want to keep them separate to packagist. An example of this would be + wordpress plugins. + +For hosting your own packages, a native `composer` type of repository is +recommended, which provides the best performance. + +There are a few tools that can help you create a `composer` repository. + +### Private Packagist + +[Private Packagist](https://packagist.com/) is a hosted or self-hosted +application providing private package hosting as well as mirroring of +GitHub, Packagist.org and other package repositories. + +Check out [Packagist.com](https://packagist.com/) for more information. + +### Satis + +Satis is a static `composer` repository generator. It is a bit like an ultra- +lightweight, static file-based version of packagist. + +You give it a `composer.json` containing repositories, typically VCS and +package repository definitions. It will fetch all the packages that are +`require`d and dump a `packages.json` that is your `composer` repository. + +Check [the satis GitHub repository](https://github.com/composer/satis) and +the [Satis article](articles/handling-private-packages-with-satis.md) for more +information. + +### Artifact + +There are some cases, when there is no ability to have one of the previously +mentioned repository types online, even the VCS one. Typical example could be +cross-organisation library exchange through built artifacts. Of course, most +of the times they are private. To simplify maintenance, one can simply use a +repository of type `artifact` with a folder containing ZIP archives of those +private packages: + +```json +{ + "repositories": [ + { + "type": "artifact", + "url": "path/to/directory/with/zips/" + } + ], + "require": { + "private-vendor-one/core": "15.6.2", + "private-vendor-two/connectivity": "*", + "acme-corp/parser": "10.3.5" + } +} +``` + +Each zip artifact is a ZIP archive with `composer.json` in root folder: + +```sh +unzip -l acme-corp-parser-10.3.5.zip + +composer.json +... +``` + +If there are two archives with different versions of a package, they are both +imported. When an archive with a newer version is added in the artifact folder +and you run `update`, that version will be imported as well and Composer will +update to the latest version. + +### Path + +In addition to the artifact repository, you can use the path one, which allows +you to depend on a local directory, either absolute or relative. This can be +especially useful when dealing with monolithic repositories. + +For instance, if you have the following directory structure in your repository: +``` +- apps +\_ my-app + \_ composer.json +- packages +\_ my-package + \_ composer.json +``` + +Then, to add the package `my/package` as a dependency, in your +`apps/my-app/composer.json` file, you can use the following configuration: + +```json +{ + "repositories": [ + { + "type": "path", + "url": "../../packages/my-package" + } + ], + "require": { + "my/package": "*" + } +} +``` + +If the package is a local VCS repository, the version may be inferred by +the branch or tag that is currently checked out. Otherwise, the version should +be explicitly defined in the package's `composer.json` file. If the version +cannot be resolved by these means, it is assumed to be `dev-master`. + +The local package will be symlinked if possible, in which case the output in +the console will read `Symlinking from ../../packages/my-package`. If symlinking +is _not_ possible the package will be copied. In that case, the console will +output `Mirrored from ../../packages/my-package`. + +Instead of default fallback strategy you can force to use symlink with +`"symlink": true` or mirroring with `"symlink": false` option. Forcing +mirroring can be useful when deploying or generating package from a +monolithic repository. + +> **Note:** On Windows, directory symlinks are implemented using NTFS junctions +> because they can be created by non-admin users. Mirroring will always be used +> on versions below Windows 7 or if `proc_open` has been disabled. + +```json +{ + "repositories": [ + { + "type": "path", + "url": "../../packages/my-package", + "options": { + "symlink": false + } + } + ] +} +``` + +Leading tildes are expanded to the current user's home folder, and environment +variables are parsed in both Windows and Linux/Mac notations. For example +`~/git/mypackage` will automatically load the mypackage clone from +`/home//git/mypackage`, equivalent to `$HOME/git/mypackage` or +`%USERPROFILE%/git/mypackage`. + +> **Note:** Repository paths can also contain wildcards like ``*`` and ``?``. +> For details, see the [PHP glob function](http://php.net/glob). + +## Disabling Packagist.org + +You can disable the default Packagist.org repository by adding this to your +`composer.json`: + +```json +{ + "repositories": [ + { + "packagist.org": false + } + ] +} +``` + +You can disable Packagist.org globally by using the global config flag: + +```bash +composer config -g repo.packagist false +``` + +← [Schema](04-schema.md) | [Config](06-config.md) → diff --git a/vendor/composer/composer/doc/06-config.md b/vendor/composer/composer/doc/06-config.md new file mode 100644 index 0000000..f3afc4e --- /dev/null +++ b/vendor/composer/composer/doc/06-config.md @@ -0,0 +1,299 @@ +# Config + +This chapter will describe the `config` section of the `composer.json` +[schema](04-schema.md). + +## process-timeout + +Defaults to `300`. The duration processes like git clones can run before +Composer assumes they died out. You may need to make this higher if you have a +slow connection or huge vendors. + +To disable the process timeout on a custom command under `scripts`, a static +helper is available: + +```json +{ + "scripts": { + "test": [ + "Composer\\Config::disableProcessTimeout", + "phpunit" + ] + } +} +``` + +## use-include-path + +Defaults to `false`. If `true`, the Composer autoloader will also look for classes +in the PHP include path. + +## preferred-install + +Defaults to `auto` and can be any of `source`, `dist` or `auto`. This option +allows you to set the install method Composer will prefer to use. Can +optionally be a hash of patterns for more granular install preferences. + +```json +{ + "config": { + "preferred-install": { + "my-organization/stable-package": "dist", + "my-organization/*": "source", + "partner-organization/*": "auto", + "*": "dist" + } + } +} +``` + +> **Note:** Order matters. More specific patterns should be earlier than +> more relaxed patterns. When mixing the string notation with the hash +> configuration in global and package configurations the string notation +> is translated to a `*` package pattern. + +## store-auths + +What to do after prompting for authentication, one of: `true` (always store), +`false` (do not store) and `"prompt"` (ask every time), defaults to `"prompt"`. + +## github-protocols + +Defaults to `["https", "ssh", "git"]`. A list of protocols to use when cloning +from github.com, in priority order. By default `git` is present but only if [secure-http](#secure-http) +is disabled, as the git protocol is not encrypted. If you want your origin remote +push URLs to be using https and not ssh (`git@github.com:...`), then set the protocol +list to be only `["https"]` and Composer will stop overwriting the push URL to an ssh +URL. + +## github-oauth + +A list of domain names and oauth keys. For example using `{"github.com": +"oauthtoken"}` as the value of this option will use `oauthtoken` to access +private repositories on github and to circumvent the low IP-based rate limiting +of their API. [Read +more](articles/troubleshooting.md#api-rate-limit-and-oauth-tokens) on how to get +an OAuth token for GitHub. + +## gitlab-oauth + +A list of domain names and oauth keys. For example using `{"gitlab.com": +"oauthtoken"}` as the value of this option will use `oauthtoken` to access +private repositories on gitlab. Please note: If the package is not hosted at +gitlab.com the domain names must be also specified with the +[`gitlab-domains`](06-config.md#gitlab-domains) option. + +## gitlab-token + +A list of domain names and private tokens. For example using `{"gitlab.com": +"privatetoken"}` as the value of this option will use `privatetoken` to access +private repositories on gitlab. Please note: If the package is not hosted at +gitlab.com the domain names must be also specified with the +[`gitlab-domains`](06-config.md#gitlab-domains) option. + +## disable-tls + +Defaults to `false`. If set to true all HTTPS URLs will be tried with HTTP +instead and no network level encryption is performed. Enabling this is a +security risk and is NOT recommended. The better way is to enable the +php_openssl extension in php.ini. + +## secure-http + +Defaults to `true`. If set to true only HTTPS URLs are allowed to be +downloaded via Composer. If you really absolutely need HTTP access to something +then you can disable it, but using [Let's Encrypt](https://letsencrypt.org/) to +get a free SSL certificate is generally a better alternative. + +## bitbucket-oauth + +A list of domain names and consumers. For example using `{"bitbucket.org": +{"consumer-key": "myKey", "consumer-secret": "mySecret"}}`. [Read](https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html) +how to set up a consumer on Bitbucket. + +## cafile + +Location of Certificate Authority file on local filesystem. In PHP 5.6+ you +should rather set this via openssl.cafile in php.ini, although PHP 5.6+ should +be able to detect your system CA file automatically. + +## capath + +If cafile is not specified or if the certificate is not found there, the +directory pointed to by capath is searched for a suitable certificate. +capath must be a correctly hashed certificate directory. + +## http-basic + +A list of domain names and username/passwords to authenticate against them. For +example using `{"example.org": {"username": "alice", "password": "foo"}}` as the +value of this option will let Composer authenticate against example.org. + +> **Note:** Authentication-related config options like `http-basic` and +> `github-oauth` can also be specified inside a `auth.json` file that goes +> besides your `composer.json`. That way you can gitignore it and every +> developer can place their own credentials in there. + +## platform + +Lets you fake platform packages (PHP and extensions) so that you can emulate a +production env or define your target platform in the config. Example: `{"php": +"7.0.3", "ext-something": "4.0.3"}`. + +## vendor-dir + +Defaults to `vendor`. You can install dependencies into a different directory if +you want to. `$HOME` and `~` will be replaced by your home directory's path in +vendor-dir and all `*-dir` options below. + +## bin-dir + +Defaults to `vendor/bin`. If a project includes binaries, they will be symlinked +into this directory. + +## data-dir + +Defaults to `C:\Users\\AppData\Roaming\Composer` on Windows, +`$XDG_DATA_HOME/composer` on unix systems that follow the XDG Base Directory +Specifications, and `$home` on other unix systems. Right now it is only +used for storing past composer.phar files to be able to rollback to older +versions. See also [COMPOSER_HOME](03-cli.md#composer-home). + +## cache-dir + +Defaults to `C:\Users\\AppData\Local\Composer` on Windows, +`$XDG_CACHE_HOME/composer` on unix systems that follow the XDG Base Directory +Specifications, and `$home/cache` on other unix systems. Stores all the caches +used by Composer. See also [COMPOSER_HOME](03-cli.md#composer-home). + +## cache-files-dir + +Defaults to `$cache-dir/files`. Stores the zip archives of packages. + +## cache-repo-dir + +Defaults to `$cache-dir/repo`. Stores repository metadata for the `composer` +type and the VCS repos of type `svn`, `fossil`, `github` and `bitbucket`. + +## cache-vcs-dir + +Defaults to `$cache-dir/vcs`. Stores VCS clones for loading VCS repository +metadata for the `git`/`hg` types and to speed up installs. + +## cache-files-ttl + +Defaults to `15552000` (6 months). Composer caches all dist (zip, tar, ..) +packages that it downloads. Those are purged after six months of being unused by +default. This option allows you to tweak this duration (in seconds) or disable +it completely by setting it to 0. + +## cache-files-maxsize + +Defaults to `300MiB`. Composer caches all dist (zip, tar, ..) packages that it +downloads. When the garbage collection is periodically ran, this is the maximum +size the cache will be able to use. Older (less used) files will be removed +first until the cache fits. + +## bin-compat + +Defaults to `auto`. Determines the compatibility of the binaries to be installed. +If it is `auto` then Composer only installs .bat proxy files when on Windows. If +set to `full` then both .bat files for Windows and scripts for Unix-based +operating systems will be installed for each binary. This is mainly useful if you +run Composer inside a linux VM but still want the .bat proxies available for use +in the Windows host OS. + +## prepend-autoloader + +Defaults to `true`. If `false`, the Composer autoloader will not be prepended to +existing autoloaders. This is sometimes required to fix interoperability issues +with other autoloaders. + +## autoloader-suffix + +Defaults to `null`. String to be used as a suffix for the generated Composer +autoloader. When null a random one will be generated. + +## optimize-autoloader + +Defaults to `false`. If `true`, always optimize when dumping the autoloader. + +## sort-packages + +Defaults to `false`. If `true`, the `require` command keeps packages sorted +by name in `composer.json` when adding a new package. + +## classmap-authoritative + +Defaults to `false`. If `true`, the Composer autoloader will only load classes +from the classmap. Implies `optimize-autoloader`. + +## apcu-autoloader + +Defaults to `false`. If `true`, the Composer autoloader will check for APCu and +use it to cache found/not-found classes when the extension is enabled. + +## github-domains + +Defaults to `["github.com"]`. A list of domains to use in github mode. This is +used for GitHub Enterprise setups. + +## github-expose-hostname + +Defaults to `true`. If `false`, the OAuth tokens created to access the +github API will have a date instead of the machine hostname. + +## gitlab-domains + +Defaults to `["gitlab.com"]`. A list of domains of GitLab servers. +This is used if you use the `gitlab` repository type. + +## use-github-api + +Defaults to `true`. Similar to the `no-api` key on a specific repository, +setting `use-github-api` to `false` will define the global behavior for all +GitHub repositories to clone the repository as it would with any other git +repository instead of using the GitHub API. But unlike using the `git` +driver directly, Composer will still attempt to use GitHub's zip files. + +## notify-on-install + +Defaults to `true`. Composer allows repositories to define a notification URL, +so that they get notified whenever a package from that repository is installed. +This option allows you to disable that behaviour. + +## discard-changes + +Defaults to `false` and can be any of `true`, `false` or `"stash"`. This option +allows you to set the default style of handling dirty updates when in +non-interactive mode. `true` will always discard changes in vendors, while +`"stash"` will try to stash and reapply. Use this for CI servers or deploy +scripts if you tend to have modified vendors. + +## archive-format + +Defaults to `tar`. Composer allows you to add a default archive format when the +workflow needs to create a dedicated archiving format. + +## archive-dir + +Defaults to `.`. Composer allows you to add a default archive directory when the +workflow needs to create a dedicated archiving format. Or for easier development +between modules. + +Example: + +```json +{ + "config": { + "archive-dir": "/home/user/.composer/repo" + } +} +``` + +## htaccess-protect + +Defaults to `true`. If set to `false`, Composer will not create `.htaccess` files +in the composer home, cache, and data directories. + +← [Repositories](05-repositories.md) | [Community](07-community.md) → diff --git a/vendor/composer/composer/doc/07-community.md b/vendor/composer/composer/doc/07-community.md new file mode 100644 index 0000000..4296f90 --- /dev/null +++ b/vendor/composer/composer/doc/07-community.md @@ -0,0 +1,35 @@ +# Community + +There are many people using Composer already, and quite a few of them are +contributing. + +## Contributing + +If you would like to contribute to Composer, please read the +[README](https://github.com/composer/composer) and +[CONTRIBUTING](https://github.com/composer/composer/blob/master/.github/CONTRIBUTING.md) +documents. + +The most important guidelines are described as follows: + +> All code contributions - including those of people having commit access - must +> go through a pull request and approved by a core developer before being +> merged. This is to ensure proper review of all the code. +> +> Fork the project, create a feature branch, and send us a pull request. +> +> To ensure a consistent code base, you should make sure the code follows +> the [PSR-2 Coding Standards](http://www.php-fig.org/psr/psr-2/). + +## IRC / mailing list + +Mailing lists for [user support](https://groups.google.com/group/composer-users) and +[development](https://groups.google.com/group/composer-dev). + +IRC channels are on irc.freenode.org: [#composer](irc://irc.freenode.org/composer) +for users and [#composer-dev](irc://irc.freenode.org/composer-dev) for development. + +Stack Overflow has a growing collection of +[Composer related questions](https://stackoverflow.com/questions/tagged/composer-php). + +← [Config](06-config.md) diff --git a/vendor/composer/composer/doc/articles/aliases.md b/vendor/composer/composer/doc/articles/aliases.md new file mode 100644 index 0000000..d36eb11 --- /dev/null +++ b/vendor/composer/composer/doc/articles/aliases.md @@ -0,0 +1,111 @@ + + +# Aliases + +## Why aliases? + +When you are using a VCS repository, you will only get comparable versions for +branches that look like versions, such as `2.0` or `2.0.x`. For your `master` branch, you +will get a `dev-master` version. For your `bugfix` branch, you will get a +`dev-bugfix` version. + +If your `master` branch is used to tag releases of the `1.0` development line, +i.e. `1.0.1`, `1.0.2`, `1.0.3`, etc., any package depending on it will +probably require version `1.0.*`. + +If anyone wants to require the latest `dev-master`, they have a problem: Other +packages may require `1.0.*`, so requiring that dev version will lead to +conflicts, since `dev-master` does not match the `1.0.*` constraint. + +Enter aliases. + +## Branch alias + +The `dev-master` branch is one in your main VCS repo. It is rather common that +someone will want the latest master dev version. Thus, Composer allows you to +alias your `dev-master` branch to a `1.0.x-dev` version. It is done by +specifying a `branch-alias` field under `extra` in `composer.json`: + +```json +{ + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} +``` + +If you alias a non-comparable version (such as dev-develop) `dev-` must prefix the +branch name. You may also alias a comparable version (i.e. start with numbers, +and end with `.x-dev`), but only as a more specific version. +For example, 1.x-dev could be aliased as 1.2.x-dev. + +The alias must be a comparable dev version, and the `branch-alias` must be present on +the branch that it references. For `dev-master`, you need to commit it on the +`master` branch. + +As a result, anyone can now require `1.0.*` and it will happily install +`dev-master`. + +In order to use branch aliasing, you must own the repository of the package +being aliased. If you want to alias a third party package without maintaining +a fork of it, use inline aliases as described below. + +## Require inline alias + +Branch aliases are great for aliasing main development lines. But in order to +use them you need to have control over the source repository, and you need to +commit changes to version control. + +This is not really fun when you want to try a bugfix of some library that +is a dependency of your local project. + +For this reason, you can alias packages in your `require` and `require-dev` +fields. Let's say you found a bug in the `monolog/monolog` package. You cloned +[Monolog](https://github.com/Seldaek/monolog) on GitHub and fixed the issue in +a branch named `bugfix`. Now you want to install that version of monolog in your +local project. + +You are using `symfony/monolog-bundle` which requires `monolog/monolog` version +`1.*`. So you need your `dev-bugfix` to match that constraint. + +Add this to your project's root `composer.json`: + +```json +{ + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/you/monolog" + } + ], + "require": { + "symfony/monolog-bundle": "2.0", + "monolog/monolog": "dev-bugfix as 1.0.x-dev" + } +} +``` + +Or let composer add it for you with: + +``` +php composer.phar require monolog/monolog:"dev-bugfix as 1.0.x-dev" +``` + +That will fetch the `dev-bugfix` version of `monolog/monolog` from your GitHub +and alias it to `1.0.x-dev`. + +> **Note:** Inline aliasing is a root-only feature. If a package with inline +> aliases is required, the alias (right of the `as`) is used as the version +> constraint. The part left of the `as` is discarded. As a consequence, if +> A requires B and B requires `monolog/monolog` version `dev-bugfix as 1.0.x-dev`, +> installing A will make B require `1.0.x-dev`, which may exist as a branch +> alias or an actual `1.0` branch. If it does not, it must be +> inline-aliased again in A's `composer.json`. + +> **Note:** Inline aliasing should be avoided, especially for published +> packages/libraries. If you found a bug, try and get your fix merged upstream. +> This helps to avoid issues for users of your package. diff --git a/vendor/composer/composer/doc/articles/autoloader-optimization.md b/vendor/composer/composer/doc/articles/autoloader-optimization.md new file mode 100644 index 0000000..41bd4a6 --- /dev/null +++ b/vendor/composer/composer/doc/articles/autoloader-optimization.md @@ -0,0 +1,111 @@ + + +# Autoloader Optimization + +By default, the Composer autoloader runs relatively fast. However, due to the way +PSR-4 and PSR-0 autoloading rules are set up, it needs to check the filesystem +before resolving a classname conclusively. This slows things down quite a bit, +but it is convenient in development environments because when you add a new class +it can immediately be discovered/used without having to rebuild the autoloader +configuration. + +The problem however is in production you generally want things to happen as fast +as possible, as you can simply rebuild the configuration every time you deploy and +new classes do not appear at random between deploys. + +For this reason, Composer offers a few strategies to optimize the autoloader. + +> **Note:** You **should not** enable any of these optimizations in **development** as +> they all will cause various problems when adding/removing classes. The performance +> gains are not worth the trouble in a development setting. + +## Optimization Level 1: Class map generation + +### How to run it? + +There are a few options to enable this: + +- Set `"optimize-autoloader": true` inside the config key of composer.json +- Call `install` or `update` with `-o` / `--optimize-autoloader` +- Call `dump-autoload` with `-o` / `--optimize` + +### What does it do? + +Class map generation essentially converts PSR-4/PSR-0 rules into classmap rules. +This makes everything quite a bit faster as for known classes the class map +returns instantly the path, and Composer can guarantee the class is in there so +there is no filesystem check needed. + +On PHP 5.6+, the class map is also cached in opcache which improves the initialization +time greatly. If you make sure opcache is enabled, then the class map should load +almost instantly and then class loading is fast. + +### Trade-offs + +There are no real trade-offs with this method. It should always be enabled in +production. + +The only issue is it does not keep track of autoload misses (i.e. when +it can not find a given class), so those fallback to PSR-4 rules and can still +result in slow filesystem checks. To solve this issue two Level 2 optimization +options exist, and you can decide to enable either if you have a lot of +class_exists checks that are done for classes that do not exist in your project. + +## Optimization Level 2/A: Authoritative class maps + +### How to run it? + +There are a few options to enable this: + +- Set `"classmap-authoritative": true` inside the config key of composer.json +- Call `install` or `update` with `-a` / `--classmap-authoritative` +- Call `dump-autoload` with `-a` / `--classmap-authoritative` + +### What does it do? + +Enabling this automatically enables Level 1 class map optimizations. + +This option is very simple, it says that if something is not found in the classmap, +then it does not exist and the autoloader should not attempt to look on the +filesystem according to PSR-4 rules. + +### Trade-offs + +This option makes the autoloader always return very quickly. On the flipside it +also means that in case a class is generated at runtime for some reason, it will +not be allowed to be autoloaded. If your project or any of your dependencies does that +then you might experience "class not found" issues in production. Enable this with care. + +> Note: This can not be combined with Level 2/B optimizations. You have to choose one as +> they address the same issue in different ways. + +## Optimization Level 2/B: APCu cache + +### How to run it? + +There are a few options to enable this: + +- Set `"apcu-autoloader": true` inside the config key of composer.json +- Call `install` or `update` with `--apcu-autoloader` +- Call `dump-autoload` with `--apcu` + +### What does it do? + +This option adds an APCu cache as a fallback for the class map. It will not +automatically generate the class map though, so you should still enable Level 1 +optimizations manually if you so desire. + +Whether a class is found or not, that fact is always cached in APCu so it can be +returned quickly on the next request. + +### Trade-offs + +This option requires APCu which may or may not be available to you. It also +uses APCu memory for autoloading purposes, but it is safe to use and can not +result in classes not being found like the authoritative class map +optimization above. + +> Note: This can not be combined with Level 2/A optimizations. You have to choose one as +> they address the same issue in different ways. diff --git a/vendor/composer/composer/doc/articles/custom-installers.md b/vendor/composer/composer/doc/articles/custom-installers.md new file mode 100644 index 0000000..791c049 --- /dev/null +++ b/vendor/composer/composer/doc/articles/custom-installers.md @@ -0,0 +1,204 @@ + + +# Setting up and using custom installers + +## Synopsis + +At times it may be necessary for a package to require additional actions during +installation, such as installing packages outside of the default `vendor` +library. + +In these cases you could consider creating a Custom Installer to handle your +specific logic. + +## Calling a Custom Installer + +Suppose that your project already has a Custom Installer for specific modules +then invoking that installer is a matter of defining the correct [type][1] in +your package file. + +> _See the next chapter for an instruction how to create Custom Installers._ + +Every Custom Installer defines which [type][1] string it will recognize. Once +recognized it will completely override the default installer and only apply its +own logic. + +An example use-case would be: + +> phpDocumentor features Templates that need to be installed outside of the +> default /vendor folder structure. As such they have chosen to adopt the +> `phpdocumentor-template` [type][1] and create a plugin providing the Custom +> Installer to send these templates to the correct folder. + +An example composer.json of such a template package would be: + +```json +{ + "name": "phpdocumentor/template-responsive", + "type": "phpdocumentor-template", + "require": { + "phpdocumentor/template-installer-plugin": "*" + } +} +``` + +> **IMPORTANT**: to make sure that the template installer is present at the +> time the template package is installed, template packages should require +> the plugin package. + +## Creating an Installer + +A Custom Installer is defined as a class that implements the +[`Composer\Installer\InstallerInterface`][4] and is usually distributed in a +Composer Plugin. + +A basic Installer Plugin would thus compose of three files: + +1. the package file: composer.json +2. The Plugin class, e.g.: `My\Project\Composer\Plugin.php`, containing a class that implements `Composer\Plugin\PluginInterface`. +3. The Installer class, e.g.: `My\Project\Composer\Installer.php`, containing a class that implements `Composer\Installer\InstallerInterface`. + +### composer.json + +The package file is the same as any other package file but with the following +requirements: + +1. the [type][1] attribute must be `composer-plugin`. +2. the [extra][2] attribute must contain an element `class` defining the + class name of the plugin (including namespace). If a package contains + multiple plugins this can be array of class names. + +Example: + +```json +{ + "name": "phpdocumentor/template-installer-plugin", + "type": "composer-plugin", + "license": "MIT", + "autoload": { + "psr-0": {"phpDocumentor\\Composer": "src/"} + }, + "extra": { + "class": "phpDocumentor\\Composer\\TemplateInstallerPlugin" + }, + "require": { + "composer-plugin-api": "^1.0" + }, + "require-dev": { + "composer/composer": "^1.3" + } +} +``` + +The example above has Composer itself in its require-dev, which allows you to use +the Composer classes in your test suite for example. + +### The Plugin class + +The class defining the Composer plugin must implement the +[`Composer\Plugin\PluginInterface`][3]. It can then register the Custom +Installer in its `activate()` method. + +The class may be placed in any location and have any name, as long as it is +autoloadable and matches the `extra.class` element in the package definition. + +Example: + +```php +getInstallationManager()->addInstaller($installer); + } +} +``` + +### The Custom Installer class + +The class that executes the custom installation should implement the +[`Composer\Installer\InstallerInterface`][4] (or extend another installer that +implements that interface). It defines the [type][1] string as it will be +recognized by packages that will use this installer in the `supports()` method. + +> **NOTE**: _choose your [type][1] name carefully, it is recommended to follow +> the format: `vendor-type`_. For example: `phpdocumentor-template`. + +The InstallerInterface class defines the following methods (please see the +source for the exact signature): + +* **supports()**, here you test whether the passed [type][1] matches the name + that you declared for this installer (see the example). +* **isInstalled()**, determines whether a supported package is installed or not. +* **install()**, here you can determine the actions that need to be executed + upon installation. +* **update()**, here you define the behavior that is required when Composer is + invoked with the update argument. +* **uninstall()**, here you can determine the actions that need to be executed + when the package needs to be removed. +* **getInstallPath()**, this method should return the location where the + package is to be installed, _relative from the location of composer.json._ + +Example: + +```php +getPrettyName(), 0, 23); + if ('phpdocumentor/template-' !== $prefix) { + throw new \InvalidArgumentException( + 'Unable to install template, phpdocumentor templates ' + .'should always start their package name with ' + .'"phpdocumentor/template-"' + ); + } + + return 'data/templates/'.substr($package->getPrettyName(), 23); + } + + /** + * {@inheritDoc} + */ + public function supports($packageType) + { + return 'phpdocumentor-template' === $packageType; + } +} +``` + +The example demonstrates that it is quite simple to extend the +[`Composer\Installer\LibraryInstaller`][5] class to strip a prefix +(`phpdocumentor/template-`) and use the remaining part to assemble a completely +different installation path. + +> _Instead of being installed in `/vendor` any package installed using this +> Installer will be put in the `/data/templates/` folder._ + +[1]: ../04-schema.md#type +[2]: ../04-schema.md#extra +[3]: https://github.com/composer/composer/blob/master/src/Composer/Plugin/PluginInterface.php +[4]: https://github.com/composer/composer/blob/master/src/Composer/Installer/InstallerInterface.php +[5]: https://github.com/composer/composer/blob/master/src/Composer/Installer/LibraryInstaller.php diff --git a/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md b/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md new file mode 100644 index 0000000..3ef604f --- /dev/null +++ b/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md @@ -0,0 +1,356 @@ + + +# Handling private packages + +# Private Packagist + +[Private Packagist](https://packagist.com) is a commercial package hosting product +offering professional support and web based management of private and public packages, +and granular access permissions. Private Packagist provides mirroring for packages' zip +files which makes installs faster and independent from third party systems - e.g. +you can deploy even if GitHub is down because your zip files are mirrored. + +Private Packagist is available as a hosted SaaS solution or as an on-premise self-hosted +package, providing an easy interactive set up experience. + +Some of Private Packagist's revenue is used to pay for Composer and Packagist.org +development and hosting so using it is a good way to support the maintenance of +these open source projects financially. You can find more information about how to +set up your own package archive on [Packagist.com](https://packagist.com). + +# Satis + +Satis on the other hand is open source but only a static `composer` repository +generator. It is a bit like an ultra-lightweight, static file-based version of +packagist and can be used to host the metadata of your company's private +packages, or your own. You can get it from +[GitHub](https://github.com/composer/satis) or install via CLI: + + php composer.phar create-project composer/satis --stability=dev --keep-vcs + +## Setup + +For example let's assume you have a few packages you want to reuse across your +company but don't really want to open-source. You would first define a Satis +configuration: a json file with an arbitrary name that lists your curated +[repositories](../05-repositories.md). + +Here is an example configuration, you see that it holds a few VCS repositories, +but those could be any types of [repositories](../05-repositories.md). Then it +uses `"require-all": true` which selects all versions of all packages in the +repositories you defined. + +The default file Satis looks for is `satis.json` in the root of the repository. + +```json +{ + "name": "My Repository", + "homepage": "http://packages.example.org", + "repositories": [ + { "type": "vcs", "url": "https://github.com/mycompany/privaterepo" }, + { "type": "vcs", "url": "http://svn.example.org/private/repo" }, + { "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" } + ], + "require-all": true +} +``` + +If you want to cherry pick which packages you want, you can list all the +packages you want to have in your satis repository inside the classic composer +`require` key, using a `"*"` constraint to make sure all versions are selected, +or another constraint if you want really specific versions. + +```json +{ + "repositories": [ + { "type": "vcs", "url": "https://github.com/mycompany/privaterepo" }, + { "type": "vcs", "url": "http://svn.example.org/private/repo" }, + { "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" } + ], + "require": { + "company/package": "*", + "company/package2": "*", + "company/package3": "2.0.0" + } +} +``` + +Once you've done this, you run: + + php bin/satis build + +When you ironed out that process, what you would typically do is run this +command as a cron job on a server. It would then update all your package info +much like Packagist does. + +Note that if your private packages are hosted on GitHub, your server should +have an ssh key that gives it access to those packages, and then you should add +the `--no-interaction` (or `-n`) flag to the command to make sure it falls back +to ssh key authentication instead of prompting for a password. This is also a +good trick for continuous integration servers. + +Set up a virtual-host that points to that `web/` directory, let's say it is +`packages.example.org`. Alternatively, with PHP >= 5.4.0, you can use the +built-in CLI server `php -S localhost:port -t satis-output-dir/` for a +temporary solution. + +### Partial Updates + +You can tell Satis to selectively update only particular packages or process +only a repository with a given URL. This cuts down the time it takes to rebuild +the `package.json` file and is helpful if you use (custom) webhooks to trigger +rebuilds whenever code is pushed into one of your repositories. + +To rebuild only particular packages, pass the package names on the command line +like so: + + php bin/satis build satis.json web/ this/package that/other-package + +Note that this will still need to pull and scan all of your VCS repositories +because any VCS repository might contain (on any branch) one of the selected +packages. + +If you want to scan only the selected package and not all VCS repositories you need +to declare a *name* for all your package (this only work on VCS repositories type) : + +```json +{ + "repositories": [ + { "name": "company/privaterepo", "type": "vcs", "url": "https://github.com/mycompany/privaterepo" }, + { "name": "private/repo", "type": "vcs", "url": "http://svn.example.org/private/repo" }, + { "name": "mycompany/privaterepo2", "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" } + ] +} +``` + +If you want to scan only a single repository and update all packages found in +it, pass the VCS repository URL as an optional argument: + + php bin/satis build --repository-url https://only.my/repo.git satis.json web/ + +## Usage + +In your projects all you need to add now is your own composer repository using +the `packages.example.org` as URL, then you can require your private packages +and everything should work smoothly. You don't need to copy all your +repositories in every project anymore. Only that one unique repository that +will update itself. + +```json +{ + "repositories": [ { "type": "composer", "url": "http://packages.example.org/" } ], + "require": { + "company/package": "1.2.0", + "company/package2": "1.5.2", + "company/package3": "dev-master" + } +} +``` + +### Security + +To secure your private repository you can host it over SSH or SSL using a client +certificate. In your project you can use the `options` parameter to specify the +connection options for the server. + +Example using a custom repository using SSH (requires the SSH2 PECL extension): + +```json +{ + "repositories": [{ + "type": "composer", + "url": "ssh2.sftp://example.org", + "options": { + "ssh2": { + "username": "composer", + "pubkey_file": "/home/composer/.ssh/id_rsa.pub", + "privkey_file": "/home/composer/.ssh/id_rsa" + } + } + }] +} +``` + +> **Tip:** See [ssh2 context options] for more information. + +Example using SSL/TLS (HTTPS) using a client certificate: + +```json +{ + "repositories": [{ + "type": "composer", + "url": "https://example.org", + "options": { + "ssl": { + "local_cert": "/home/composer/.ssl/composer.pem" + } + } + }] +} +``` + +> **Tip:** See [ssl context options] for more information. + +Example using a custom HTTP Header field for token authentication: + +```json +{ + "repositories": [{ + "type": "composer", + "url": "https://example.org", + "options": { + "http": { + "header": [ + "API-TOKEN: YOUR-API-TOKEN" + ] + } + } + }] +} +``` + +### Authentication + +When your private repositories are password protected, you can store the +authentication details permanently. The first time Composer needs to +authenticate against some domain it will prompt you for a username/password and +then you will be asked whether you want to store it. + +The storage can be done either globally in the `COMPOSER_HOME/auth.json` file +(`COMPOSER_HOME` defaults to `~/.composer` or `%APPDATA%/Composer` on Windows) +or also in the project directory directly sitting besides your composer.json. + +You can also configure these by hand using the config command if you need to +configure a production machine to be able to run non-interactive installs. For +example to enter credentials for example.org one could type: + + composer config http-basic.example.org username password + +That will store it in the current directory's auth.json, but if you want it +available globally you can use the `--global` (`-g`) flag. + +### Downloads + +When GitHub, GitLab or BitBucket repositories are mirrored on your local satis, the +build process will include the location of the downloads these platforms make +available. This means that the repository and your setup depend on the +availability of these services. + +At the same time, this implies that all code which is hosted somewhere else (on +another service or for example in Subversion) will not have downloads available +and thus installations usually take a lot longer. + +To enable your satis installation to create downloads for all (Git, Mercurial +and Subversion) your packages, add the following to your `satis.json`: + +``` json +{ + "archive": { + "directory": "dist", + "format": "tar", + "prefix-url": "https://amazing.cdn.example.org", + "skip-dev": true + } +} +``` + +#### Options explained + + * `directory`: required, the location of the dist files (inside the + `output-dir`) + * `format`: optional, `zip` (default) or `tar` + * `prefix-url`: optional, location of the downloads, homepage (from + `satis.json`) followed by `directory` by default + * `skip-dev`: optional, `false` by default, when enabled (`true`) satis will + not create downloads for branches + * `absolute-directory`: optional, a _local_ directory where the dist files are + dumped instead of `output-dir`/`directory` + * `whitelist`: optional, if set as a list of package names, satis will only + dump the dist files of these packages + * `blacklist`: optional, if set as a list of package names, satis will not + dump the dist files of these packages + * `checksum`: optional, `true` by default, when disabled (`false`) satis will + not provide the sha1 checksum for the dist files + +Once enabled, all downloads (include those from GitHub and BitBucket) will be +replaced with a _local_ version. + +#### prefix-url + +Prefixing the URL with another host is especially helpful if the downloads end +up in a private Amazon S3 bucket or on a CDN host. A CDN would drastically +improve download times and therefore package installation. + +Example: A `prefix-url` of `https://my-bucket.s3.amazonaws.com` (and +`directory` set to `dist`) creates download URLs which look like the following: +`https://my-bucket.s3.amazonaws.com/dist/vendor-package-version-ref.zip`. + +### Web outputs + + * `output-html`: optional, `true` by default, when disabled (`false`) satis + will not generate the `output-dir`/index.html page. + * `twig-template`: optional, a path to a personalized [Twig] template for + the `output-dir`/index.html page. + +### Abandoned packages + +To enable your satis installation to indicate that some packages are abandoned, +add the following to your `satis.json`: + +```json +{ + "abandoned": { + "company/package": true, + "company/package2": "company/newpackage" + } +} +``` + +The `true` value indicates that the package is truly abandoned while the +`"company/newpackage"` value specifies that the package is replaced by the +`company/newpackage` package. + +Note that all packages set as abandoned in their own `composer.json` file will +be marked abandoned as well. + +### Resolving dependencies + +It is possible to make satis automatically resolve and add all dependencies for +your projects. This can be used with the Downloads functionality to have a +complete local mirror of packages. Add the following to your `satis.json`: + +```json +{ + "require-dependencies": true, + "require-dev-dependencies": true +} +``` + +When searching for packages, satis will attempt to resolve all the required +packages from the listed repositories. Therefore, if you are requiring a +package from Packagist, you will need to define it in your `satis.json`. + +Dev dependencies are packaged only if the `require-dev-dependencies` parameter +is set to true. + +### Other options + + * `providers`: optional, `false` by default, when enabled (`true`) each + package will be dumped into a separate include file which will be only + loaded by composer when the package is really required. Speeds up composer + handling for repositories with huge number of packages like f.i. packagist. + * `output-dir`: optional, defines where to output the repository files if not + provided as an argument when calling the `build` command. + * `config`: optional, lets you define all config options from composer, except + `archive-format` and `archive-dir` as the configuration is done through + [archive](#downloads) instead. See docs on [config schema] for more details. + * `notify-batch`: optional, specify a URL that will be called every time a + user installs a package. See [notify-batch]. + +[ssh2 context options]: https://secure.php.net/manual/en/wrappers.ssh2.php#refsect1-wrappers.ssh2-options +[ssl context options]: https://secure.php.net/manual/en/context.ssl.php +[Twig]: https://twig.sensiolabs.org/ +[config schema]: https://getcomposer.org/doc/04-schema.md#config +[notify-batch]: https://getcomposer.org/doc/05-repositories.md#notify-batch diff --git a/vendor/composer/composer/doc/articles/http-basic-authentication.md b/vendor/composer/composer/doc/articles/http-basic-authentication.md new file mode 100644 index 0000000..7284e1c --- /dev/null +++ b/vendor/composer/composer/doc/articles/http-basic-authentication.md @@ -0,0 +1,59 @@ + + +# HTTP basic authentication + +Your [Satis or Toran Proxy](handling-private-packages-with-satis.md) server +could be secured with http basic authentication. In order to allow your project +to have access to these packages you will have to tell composer how to +authenticate with your credentials. + +The simplest way to provide your credentials is providing your set +of credentials inline with the repository specification such as: + +```json +{ + "repositories": [ + { + "type": "composer", + "url": "https://extremely:secret@repo.example.org" + } + ] +} +``` + +This will basically teach composer how to authenticate automatically +when reading packages from the provided composer repository. + +This does not work for everybody especially when you don't want to +hard code your credentials into your composer.json. There is a second +way to provide these details and it is via interaction. If you don't +provide the authentication credentials composer will prompt you upon +connection to enter the username and password. + +The third way if you want to pre-configure it is via an `auth.json` file +located in your `COMPOSER_HOME` or besides your `composer.json`. + +The file should contain a set of hostnames followed each with their own +username/password pairs, for example: + +```json +{ + "http-basic": { + "repo.example1.org": { + "username": "my-username1", + "password": "my-secret-password1" + }, + "repo.example2.org": { + "username": "my-username2", + "password": "my-secret-password2" + } + } +} +``` + +The main advantage of the auth.json file is that it can be gitignored so +that every developer in your team can place their own credentials in there, +which makes revocation of credentials much easier than if you all share the +same. diff --git a/vendor/composer/composer/doc/articles/plugins.md b/vendor/composer/composer/doc/articles/plugins.md new file mode 100644 index 0000000..86e24d8 --- /dev/null +++ b/vendor/composer/composer/doc/articles/plugins.md @@ -0,0 +1,290 @@ + + +# Setting up and using plugins + +## Synopsis + +You may wish to alter or expand Composer's functionality with your own. For +example if your environment poses special requirements on the behaviour of +Composer which do not apply to the majority of its users or if you wish to +accomplish something with composer in a way that is not desired by most users. + +In these cases you could consider creating a plugin to handle your +specific logic. + +## Creating a Plugin + +A plugin is a regular Composer package which ships its code as part of the +package and may also depend on further packages. + +### Plugin Package + +The package file is the same as any other package file but with the following +requirements: + +1. The [type][1] attribute must be `composer-plugin`. +2. The [extra][2] attribute must contain an element `class` defining the + class name of the plugin (including namespace). If a package contains + multiple plugins, this can be array of class names. +3. You must require the special package called `composer-plugin-api` + to define which Plugin API versions your plugin is compatible with. + +The required version of the `composer-plugin-api` follows the same [rules][7] +as a normal package's. + +The current composer plugin API version is 1.1.0. + +An example of a valid plugin `composer.json` file (with the autoloading +part omitted): + +```json +{ + "name": "my/plugin-package", + "type": "composer-plugin", + "require": { + "composer-plugin-api": "^1.1" + }, + "extra": { + "class": "My\\Plugin" + } +} +``` + +### Plugin Class + +Every plugin has to supply a class which implements the +[`Composer\Plugin\PluginInterface`][3]. The `activate()` method of the plugin +is called after the plugin is loaded and receives an instance of +[`Composer\Composer`][4] as well as an instance of +[`Composer\IO\IOInterface`][5]. Using these two objects all configuration can +be read and all internal objects and state can be manipulated as desired. + +Example: + +```php +getInstallationManager()->addInstaller($installer); + } +} +``` + +## Event Handler + +Furthermore plugins may implement the +[`Composer\EventDispatcher\EventSubscriberInterface`][6] in order to have its +event handlers automatically registered with the `EventDispatcher` when the +plugin is loaded. + +To register a method to an event, implement the method `getSubscribedEvents()` +and have it return an array. The array key must be the +[event name](https://getcomposer.org/doc/articles/scripts.md#event-names) +and the value is the name of the method in this class to be called. + +```php +public static function getSubscribedEvents() +{ + return array( + 'post-autoload-dump' => 'methodToBeCalled', + // ^ event name ^ ^ method name ^ + ); +} +``` + +By default, the priority of an event handler is set to 0. The priority can be +changed by attaching a tuple where the first value is the method name, as +before, and the second value is an integer representing the priority. +Higher integers represent higher priorities. Priority 2 is called before +priority 1, etc. + +```php +public static function getSubscribedEvents() +{ + return array( + // Will be called before events with priority 0 + 'post-autoload-dump' => array('methodToBeCalled', 1) + ); +} +``` + +If multiple methods should be called, then an array of tuples can be attached +to each event. The tuples do not need to include the priority. If it is +omitted, it will default to 0. + +```php +public static function getSubscribedEvents() +{ + return array( + 'post-autoload-dump' => array( + array('methodToBeCalled' ), // Priority defaults to 0 + array('someOtherMethodName', 1), // This fires first + ) + ); +} +``` + +Here's a complete example: + +```php +composer = $composer; + $this->io = $io; + } + + public static function getSubscribedEvents() + { + return array( + PluginEvents::PRE_FILE_DOWNLOAD => array( + array('onPreFileDownload', 0) + ), + ); + } + + public function onPreFileDownload(PreFileDownloadEvent $event) + { + $protocol = parse_url($event->getProcessedUrl(), PHP_URL_SCHEME); + + if ($protocol === 's3') { + $awsClient = new AwsClient($this->io, $this->composer->getConfig()); + $s3RemoteFilesystem = new S3RemoteFilesystem($this->io, $event->getRemoteFilesystem()->getOptions(), $awsClient); + $event->setRemoteFilesystem($s3RemoteFilesystem); + } + } +} +``` + +## Plugin capabilities + +Composer defines a standard set of capabilities which may be implemented by plugins. +Their goal is to make the plugin ecosystem more stable as it reduces the need to mess +with [`Composer\Composer`][4]'s internal state, by providing explicit extension points +for common plugin requirements. + +Capable Plugins classes must implement the [`Composer\Plugin\Capable`][8] interface +and declare their capabilities in the `getCapabilities()` method. +This method must return an array, with the _key_ as a Composer Capability class name, +and the _value_ as the Plugin's own implementation class name of said Capability: + +```php + 'My\Composer\CommandProvider', + ); + } +} +``` + +### Command provider + +The [`Composer\Plugin\Capability\CommandProvider`][9] capability allows to register +additional commands for Composer : + +```php +setName('custom-plugin-command'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $output->writeln('Executing'); + } +} +``` + +Now the `custom-plugin-command` is available alongside Composer commands. + +> _Composer commands are based on the [Symfony Console Component][10]._ + +## Running plugins manually + +Plugins for an event can be run manually by the `run-script` command. This works the same way as +[running scripts manually](scripts.md#running-scripts-manually). + +## Using Plugins + +Plugin packages are automatically loaded as soon as they are installed and will +be loaded when composer starts up if they are found in the current project's +list of installed packages. Additionally all plugin packages installed in the +`COMPOSER_HOME` directory using the composer global command are loaded before +local project plugins are loaded. + +> You may pass the `--no-plugins` option to composer commands to disable all +> installed plugins. This may be particularly helpful if any of the plugins +> causes errors and you wish to update or uninstall it. + +[1]: ../04-schema.md#type +[2]: ../04-schema.md#extra +[3]: https://github.com/composer/composer/blob/master/src/Composer/Plugin/PluginInterface.php +[4]: https://github.com/composer/composer/blob/master/src/Composer/Composer.php +[5]: https://github.com/composer/composer/blob/master/src/Composer/IO/IOInterface.php +[6]: https://github.com/composer/composer/blob/master/src/Composer/EventDispatcher/EventSubscriberInterface.php +[7]: ../01-basic-usage.md#package-versions +[8]: https://github.com/composer/composer/blob/master/src/Composer/Plugin/Capable.php +[9]: https://github.com/composer/composer/blob/master/src/Composer/Plugin/Capability/CommandProvider.php +[10]: https://symfony.com/doc/current/components/console.html diff --git a/vendor/composer/composer/doc/articles/scripts.md b/vendor/composer/composer/doc/articles/scripts.md new file mode 100644 index 0000000..38f6861 --- /dev/null +++ b/vendor/composer/composer/doc/articles/scripts.md @@ -0,0 +1,357 @@ + + +# Scripts + +## What is a script? + +A script, in Composer's terms, can either be a PHP callback (defined as a +static method) or any command-line executable command. Scripts are useful +for executing a package's custom code or package-specific commands during +the Composer execution process. + +> **Note:** Only scripts defined in the root package's `composer.json` are +> executed. If a dependency of the root package specifies its own scripts, +> Composer does not execute those additional scripts. + +## Event names + +Composer fires the following named events during its execution process: + +### Command Events + +- **pre-install-cmd**: occurs before the `install` command is executed with a + lock file present. +- **post-install-cmd**: occurs after the `install` command has been executed + with a lock file present. +- **pre-update-cmd**: occurs before the `update` command is executed, or before + the `install` command is executed without a lock file present. +- **post-update-cmd**: occurs after the `update` command has been executed, or + after the `install` command has been executed without a lock file present. +- **post-status-cmd**: occurs after the `status` command has been executed. +- **pre-archive-cmd**: occurs before the `archive` command is executed. +- **post-archive-cmd**: occurs after the `archive` command has been executed. +- **pre-autoload-dump**: occurs before the autoloader is dumped, either during + `install`/`update`, or via the `dump-autoload` command. +- **post-autoload-dump**: occurs after the autoloader has been dumped, either + during `install`/`update`, or via the `dump-autoload` command. +- **post-root-package-install**: occurs after the root package has been + installed, during the `create-project` command. +- **post-create-project-cmd**: occurs after the `create-project` command has + been executed. + +### Installer Events + +- **pre-dependencies-solving**: occurs before the dependencies are resolved. +- **post-dependencies-solving**: occurs after the dependencies have been resolved. + +### Package Events + +- **pre-package-install**: occurs before a package is installed. +- **post-package-install**: occurs after a package has been installed. +- **pre-package-update**: occurs before a package is updated. +- **post-package-update**: occurs after a package has been updated. +- **pre-package-uninstall**: occurs before a package is uninstalled. +- **post-package-uninstall**: occurs after a package has been uninstalled. + +### Plugin Events + +- **init**: occurs after a Composer instance is done being initialized. +- **command**: occurs before any Composer Command is executed on the CLI. It + provides you with access to the input and output objects of the program. +- **pre-file-download**: occurs before files are downloaded and allows + you to manipulate the `RemoteFilesystem` object prior to downloading files + based on the URL to be downloaded. +- **pre-command-run**: occurs before a command is executed and allows you to + manipulate the `InputInterface` object's options and arguments to tweak + a command's behavior. + +> **Note:** Composer makes no assumptions about the state of your dependencies +> prior to `install` or `update`. Therefore, you should not specify scripts +> that require Composer-managed dependencies in the `pre-update-cmd` or +> `pre-install-cmd` event hooks. If you need to execute scripts prior to +> `install` or `update` please make sure they are self-contained within your +> root package. + +## Defining scripts + +The root JSON object in `composer.json` should have a property called +`"scripts"`, which contains pairs of named events and each event's +corresponding scripts. An event's scripts can be defined as either a string +(only for a single script) or an array (for single or multiple scripts.) + +For any given event: + +- Scripts execute in the order defined when their corresponding event is fired. +- An array of scripts wired to a single event can contain both PHP callbacks +and command-line executable commands. +- PHP classes containing defined callbacks must be autoloadable via Composer's +autoload functionality. +- Callbacks can only autoload classes from psr-0, psr-4 and classmap +definitions. If a defined callback relies on functions defined outside of a +class, the callback itself is responsible for loading the file containing these +functions. + +Script definition example: + +```json +{ + "scripts": { + "post-update-cmd": "MyVendor\\MyClass::postUpdate", + "post-package-install": [ + "MyVendor\\MyClass::postPackageInstall" + ], + "post-install-cmd": [ + "MyVendor\\MyClass::warmCache", + "phpunit -c app/" + ], + "post-autoload-dump": [ + "MyVendor\\MyClass::postAutoloadDump" + ], + "post-create-project-cmd": [ + "php -r \"copy('config/local-example.php', 'config/local.php');\"" + ] + } +} +``` + +Using the previous definition example, here's the class `MyVendor\MyClass` +that might be used to execute the PHP callbacks: + +```php +getComposer(); + // do stuff + } + + public static function postAutoloadDump(Event $event) + { + $vendorDir = $event->getComposer()->getConfig()->get('vendor-dir'); + require $vendorDir . '/autoload.php'; + + some_function_from_an_autoloaded_file(); + } + + public static function postPackageInstall(PackageEvent $event) + { + $installedPackage = $event->getOperation()->getPackage(); + // do stuff + } + + public static function warmCache(Event $event) + { + // make cache toasty + } +} +``` + +**Note:** During a composer install or update process, a variable named +`COMPOSER_DEV_MODE` will be added to the environment. If the command was run +with the `--no-dev` flag, this variable will be set to 0, otherwise it will be +set to 1. + +## Event classes + +When an event is fired, your PHP callback receives as first argument a +`Composer\EventDispatcher\Event` object. This object has a `getName()` method +that lets you retrieve the event name. + +Depending on the [script types](#event-names) you will get various event +subclasses containing various getters with relevant data and associated +objects: + +- Base class: [`Composer\EventDispatcher\Event`](https://getcomposer.org/apidoc/master/Composer/EventDispatcher/Event.html) +- Command Events: [`Composer\Script\Event`](https://getcomposer.org/apidoc/master/Composer/Script/Event.html) +- Installer Events: [`Composer\Installer\InstallerEvent`](https://getcomposer.org/apidoc/master/Composer/Installer/InstallerEvent.html) +- Package Events: [`Composer\Installer\PackageEvent`](https://getcomposer.org/apidoc/master/Composer/Installer/PackageEvent.html) +- Plugin Events: + - init: [`Composer\EventDispatcher\Event`](https://getcomposer.org/apidoc/master/Composer/EventDispatcher/Event.html) + - command: [`Composer\Plugin\CommandEvent`](https://getcomposer.org/apidoc/master/Composer/Plugin/CommandEvent.html) + - pre-file-download: [`Composer\Plugin\PreFileDownloadEvent`](https://getcomposer.org/apidoc/master/Composer/Plugin/PreFileDownloadEvent.html) + +## Running scripts manually + +If you would like to run the scripts for an event manually, the syntax is: + +```sh +composer run-script [--dev] [--no-dev] script +``` + +For example `composer run-script post-install-cmd` will run any +**post-install-cmd** scripts and [plugins](plugins.md) that have been defined. + +You can also give additional arguments to the script handler by appending `--` +followed by the handler arguments. e.g. +`composer run-script post-install-cmd -- --check` will pass`--check` along to +the script handler. Those arguments are received as CLI arg by CLI handlers, +and can be retrieved as an array via `$event->getArguments()` by PHP handlers. + +## Writing custom commands + +If you add custom scripts that do not fit one of the predefined event name +above, you can either run them with run-script or also run them as native +Composer commands. For example the handler defined below is executable by +simply running `composer test`: + +```json +{ + "scripts": { + "test": "phpunit" + } +} +``` + +Similar to the `run-script` command you can give additional arguments to scripts, +e.g. `composer test -- --filter ` will pass `--filter ` along +to the `phpunit` script. + +> **Note:** Before executing scripts, Composer's bin-dir is temporarily pushed +> on top of the PATH environment variable so that binaries of dependencies +> are easily accessible. In this example no matter if the `phpunit` binary is +> actually in `vendor/bin/phpunit` or `bin/phpunit` it will be found and executed. + +Although Composer is not intended to manage long-running processes and other +such aspects of PHP projects, it can sometimes be handy to disable the process +timeout on custom commands. This timeout defaults to 300 seconds and can be +overridden in a variety of ways depending on the desired effect: + +- disable it for all commands using the config key `process-timeout`, +- disable it for the current or future invocations of composer using the + environment variable `COMPOSER_PROCESS_TIMEOUT`, +- for a specific invocation using the `--timeout` flag of the `run-script` command, +- using a static helper for specific scripts. + +To disable the timeout for specific scripts with the static helper directly in +composer.json: + +```json +{ + "scripts": { + "test": [ + "Composer\\Config::disableProcessTimeout", + "phpunit" + ] + } +} +``` + +To disable the timeout for every script on a given project, you can use the +composer.json configuration: + +```json +{ + "config": { + "process-timeout": 0 + } +} +``` + +It's also possible to set the global environment variable to disable the timeout +of all following scripts in the current terminal environment: + +``` +export COMPOSER_PROCESS_TIMEOUT=0 +``` + +To disable the timeout of a single script call, you must use the `run-script` composer +command and specify the `--timeout` parameter: + +``` +composer run-script --timeout=0 test +``` + +## Referencing scripts + +To enable script re-use and avoid duplicates, you can call a script from another +one by prefixing the command name with `@`: + +```json +{ + "scripts": { + "test": [ + "@clearCache", + "phpunit" + ], + "clearCache": "rm -rf cache/*" + } +} +``` + +You can also refer a script and pass it new arguments: + +```json +{ + "scripts": { + "tests": "phpunit", + "testsVerbose": "@tests -vvv" + } +} +``` + +## Calling Composer commands + +To call Composer commands, you can use `@composer` which will automatically +resolve to whatever composer.phar is currently being used: + +```json +{ + "scripts": { + "test": [ + "@composer install", + "phpunit" + ] + } +} +``` + +One limitation of this is that you can not call multiple composer commands in +a row like `@composer install && @composer foo`. You must split them up in a +JSON array of commands. + +## Executing PHP scripts + +To execute PHP scripts, you can use `@php` which will automatically +resolve to whatever php process is currently being used: + +```json +{ + "scripts": { + "test": [ + "@php script.php", + "phpunit" + ] + } +} +``` + +One limitation of this is that you can not call multiple commands in +a row like `@php install && @php foo`. You must split them up in a +JSON array of commands. + +You can also call a shell/bash script, which will have the path to +the PHP executable available in it as a `PHP_BINARY` env var. + +## Custom descriptions. + +You can set custom script descriptions with the following in your `composer.json`: + +```json +{ + "scripts-descriptions": { + "test": "Run all tests!" + } +} +``` + +> **Note:** You can only set custom descriptions of custom commands. diff --git a/vendor/composer/composer/doc/articles/troubleshooting.md b/vendor/composer/composer/doc/articles/troubleshooting.md new file mode 100644 index 0000000..d0a6450 --- /dev/null +++ b/vendor/composer/composer/doc/articles/troubleshooting.md @@ -0,0 +1,309 @@ + +# Troubleshooting + +This is a list of common pitfalls on using Composer, and how to avoid them. + +## General + +1. Before asking anyone, run [`composer diagnose`](../03-cli.md#diagnose) to check + for common problems. If it all checks out, proceed to the next steps. + +2. When facing any kind of problems using Composer, be sure to **work with the + latest version**. See [self-update](../03-cli.md#self-update) for details. + +3. Make sure you have no problems with your setup by running the installer's + checks via `curl -sS https://getcomposer.org/installer | php -- --check`. + +4. Ensure you're **installing vendors straight from your `composer.json`** via + `rm -rf vendor && composer update -v` when troubleshooting, excluding any + possible interferences with existing vendor installations or `composer.lock` + entries. + +5. Try clearing Composer's cache by running `composer clear-cache`. + +## Package not found + +1. Double-check you **don't have typos** in your `composer.json` or repository + branches and tag names. + +2. Be sure to **set the right + [minimum-stability](../04-schema.md#minimum-stability)**. To get started or be + sure this is no issue, set `minimum-stability` to "dev". + +3. Packages **not coming from [Packagist](https://packagist.org/)** should + always be **defined in the root package** (the package depending on all + vendors). + +4. Use the **same vendor and package name** throughout all branches and tags of + your repository, especially when maintaining a third party fork and using + `replace`. + +5. If you are updating to a recently published version of a package, be aware that + Packagist has a delay of up to 1 minute before new packages are visible to Composer. + +6. If you are updating a single package, it may depend on newer versions itself. + In this case add the `--with-dependencies` argument **or** add all dependencies which + need an update to the command. + +## Package not found on travis-ci.org + +1. Check the ["Package not found"](#package-not-found) item above. + +2. If the package tested is a dependency of one of its dependencies (cyclic + dependency), the problem might be that Composer is not able to detect the version + of the package properly. If it is a git clone it is generally alright and Composer + will detect the version of the current branch, but travis does shallow clones so + that process can fail when testing pull requests and feature branches in general. + The best solution is to define the version you are on via an environment variable + called COMPOSER_ROOT_VERSION. You set it to `dev-master` for example to define + the root package's version as `dev-master`. + Use: `before_script: COMPOSER_ROOT_VERSION=dev-master composer install` to export + the variable for the call to composer. + +## Package not found in a Jenkins-build + +1. Check the ["Package not found"](#package-not-found) item above. +2. Reason for failing is similar to the problem which can occur on travis-ci.org: The + git-clone / checkout within Jenkins leaves the branch in a "detached HEAD"-state. As + a result, Composer is not able to identify the version of the current checked out branch + and may not be able to resolve a cyclic dependency. To solve this problem, you can use + the "Additional Behaviours" -> "Check out to specific local branch" in your Git-settings + for your Jenkins-job, where your "local branch" shall be the same branch as you are + checking out. Using this, the checkout will not be in detached state any more and cyclic + dependency is recognized correctly. + +## I have a dependency which contains a "repositories" definition in its composer.json, but it seems to be ignored. + +The [`repositories`](../04-schema.md#repositories) configuration property is defined as [root-only](../04-schema.md#root-package). It is not inherited. You can read more about the reasons behind this in the "[why can't +composer load repositories recursively?](../faqs/why-can't-composer-load-repositories-recursively.md)" article. +The simplest work-around to this limitation, is moving or duplicating the `repositories` definition into your root +composer.json. + +## I have locked a dependency to a specific commit but get unexpected results. + +While Composer supports locking dependencies to a specific commit using the `#commit-ref` syntax, there are certain +caveats that one should take into account. The most important one is [documented](../04-schema.md#package-links), but +frequently overlooked: + +> **Note:** While this is convenient at times, it should not be how you use +> packages in the long term because it comes with a technical limitation. The +> composer.json metadata will still be read from the branch name you specify +> before the hash. Because of that in some cases it will not be a practical +> workaround, and you should always try to switch to tagged releases as soon +> as you can. + +There is no simple work-around to this limitation. It is therefore strongly recommended that you do not use it. + +## Need to override a package version + +Let's say your project depends on package A, which in turn depends on a specific +version of package B (say 0.1). But you need a different version of said package B (say 0.11). + +You can fix this by aliasing version 0.11 to 0.1: + +composer.json: + +```json +{ + "require": { + "A": "0.2", + "B": "0.11 as 0.1" + } +} +``` + +See [aliases](aliases.md) for more information. + +## Memory limit errors + +Composer may sometimes fail on some commands with this message: + +`PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...>` + +In this case, the PHP `memory_limit` should be increased. + +> **Note:** Composer internally increases the `memory_limit` to `1.5G`. + +To get the current `memory_limit` value, run: + +```sh +php -r "echo ini_get('memory_limit').PHP_EOL;" +``` + +Try increasing the limit in your `php.ini` file (ex. `/etc/php5/cli/php.ini` for +Debian-like systems): + +```ini +; Use -1 for unlimited or define an explicit value like 2G +memory_limit = -1 +``` + +Composer also respects a memory limit defined by the `COMPOSER_MEMORY_LIMIT` environment variable: + +```sh +COMPOSER_MEMORY_LIMIT=-1 composer.phar <...> +``` + +Or, you can increase the limit with a command-line argument: + +```sh +php -d memory_limit=-1 composer.phar <...> +``` + +This issue can also happen on cPanel instances, when the shell fork bomb protection is activated. For more information, see the [documentation](https://documentation.cpanel.net/display/68Docs/Shell+Fork+Bomb+Protection) of the fork bomb feature on the cPanel site. + +## Xdebug impact on Composer + +To improve performance when the xdebug extension is enabled, Composer automatically restarts PHP without it. +You can override this behavior by using an environment variable: `COMPOSER_ALLOW_XDEBUG=1`. + +Composer will always show a warning if xdebug is being used, but you can override this with an environment variable: +`COMPOSER_DISABLE_XDEBUG_WARN=1`. If you see this warning unexpectedly, then the restart process has failed: +please report this [issue](https://github.com/composer/composer/issues). + +## "The system cannot find the path specified" (Windows) + +1. Open regedit. +2. Search for an `AutoRun` key inside `HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor`, + `HKEY_CURRENT_USER\Software\Microsoft\Command Processor` + or `HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Command Processor`. +3. Check if it contains any path to non-existent file, if it's the case, remove them. + +## API rate limit and OAuth tokens + +Because of GitHub's rate limits on their API it can happen that Composer prompts +for authentication asking your username and password so it can go ahead with its work. + +If you would prefer not to provide your GitHub credentials to Composer you can +manually create a token using the following procedure: + +1. [Create](https://github.com/settings/tokens) an OAuth token on GitHub. +[Read more](https://github.com/blog/1509-personal-api-tokens) on this. + +2. Add it to the configuration running `composer config -g github-oauth.github.com ` + +Now Composer should install/update without asking for authentication. + +## proc_open(): fork failed errors +If composer shows proc_open() fork failed on some commands: + +`PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar` + +This could be happening because the VPS runs out of memory and has no Swap space enabled. + +```sh +free -m + +total used free shared buffers cached +Mem: 2048 357 1690 0 0 237 +-/+ buffers/cache: 119 1928 +Swap: 0 0 0 +``` + +To enable the swap you can use for example: + +```sh +/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 +/sbin/mkswap /var/swap.1 +/sbin/swapon /var/swap.1 +``` +You can make a permanent swap file following this [tutorial](https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04). + +## Degraded Mode + +Due to some intermittent issues on Travis and other systems, we introduced a +degraded network mode which helps Composer finish successfully but disables +a few optimizations. This is enabled automatically when an issue is first +detected. If you see this issue sporadically you probably don't have to worry +(a slow or overloaded network can also cause those time outs), but if it +appears repeatedly you might want to look at the options below to identify +and resolve it. + +If you have been pointed to this page, you want to check a few things: + +- If you are using ESET antivirus, go in "Advanced Settings" and disable "HTTP-scanner" + under "web access protection" +- If you are using IPv6, try disabling it. If that solves your issues, get in touch + with your ISP or server host, the problem is not at the Packagist level but in the + routing rules between you and Packagist (i.e. the internet at large). The best way to get + these fixed is raise awareness to the network engineers that have the power to fix it. + Take a look at the next section for IPv6 workarounds. + +- If none of the above helped, please report the error. + +## Operation timed out (IPv6 issues) + +You may run into errors if IPv6 is not configured correctly. A common error is: + +``` +The "https://getcomposer.org/version" file could not be downloaded: failed to +open stream: Operation timed out +``` + +We recommend you fix your IPv6 setup. If that is not possible, you can try the +following workarounds: + +**Workaround Linux:** + +On linux, it seems that running this command helps to make ipv4 traffic have a +higher prio than ipv6, which is a better alternative than disabling ipv6 entirely: + +```bash +sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf" +``` + +**Workaround Windows:** + +On windows the only way is to disable ipv6 entirely I am afraid (either in windows or in your home router). + +**Workaround Mac OS X:** + +Get name of your network device: + +```bash +networksetup -listallnetworkservices +``` + +Disable IPv6 on that device (in this case "Wi-Fi"): + +```bash +networksetup -setv6off Wi-Fi +``` + +Run composer ... + +You can enable IPv6 again with: + +```bash +networksetup -setv6automatic Wi-Fi +``` + +That said, if this fixes your problem, please talk to your ISP about it to +try and resolve the routing errors. That's the best way to get things resolved +for everyone. + +## Composer hangs with SSH ControlMaster + +When you try to install packages from a Git repository and you use the `ControlMaster` +setting for your SSH connection, Composer might hang endlessly and you see a `sh` +process in the `defunct` state in your process list. + +The reason for this is a SSH Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1988 + +As a workaround, open a SSH connection to your Git host before running Composer: + +```bash +ssh -t git@mygitserver.tld +composer update +``` + +See also https://github.com/composer/composer/issues/4180 for more information. + +## Zip archives are not unpacked correctly. + +Composer can unpack zipballs using either a system-provided `unzip` utility or PHP's +native `ZipArchive` class. The `ZipArchive` class is preferred on Windows. On other +OSes where ZIP files can contain permissions and symlinks, the `unzip` utility is +preferred. You're advised to install it if you need these features. diff --git a/vendor/composer/composer/doc/articles/vendor-binaries.md b/vendor/composer/composer/doc/articles/vendor-binaries.md new file mode 100644 index 0000000..0022b90 --- /dev/null +++ b/vendor/composer/composer/doc/articles/vendor-binaries.md @@ -0,0 +1,110 @@ + + +# Vendor binaries and the `vendor/bin` directory + +## What is a vendor binary? + +Any command line script that a Composer package would like to pass along +to a user who installs the package should be listed as a vendor binary. + +If a package contains other scripts that are not needed by the package +users (like build or compile scripts) that code should not be listed +as a vendor binary. + +## How is it defined? + +It is defined by adding the `bin` key to a project's `composer.json`. +It is specified as an array of files so multiple binaries can be added +for any given project. + +```json +{ + "bin": ["bin/my-script", "bin/my-other-script"] +} +``` + +## What does defining a vendor binary in composer.json do? + +It instructs Composer to install the package's binaries to `vendor/bin` +for any project that **depends** on that project. + +This is a convenient way to expose useful scripts that would +otherwise be hidden deep in the `vendor/` directory. + +## What happens when Composer is run on a composer.json that defines vendor binaries? + +For the binaries that a package defines directly, nothing happens. + +## What happens when Composer is run on a composer.json that has dependencies with vendor binaries listed? + +Composer looks for the binaries defined in all of the dependencies. A +symlink is created from each dependency's binaries to `vendor/bin`. + +Say package `my-vendor/project-a` has binaries setup like this: + +```json +{ + "name": "my-vendor/project-a", + "bin": ["bin/project-a-bin"] +} +``` + +Running `composer install` for this `composer.json` will not do +anything with `bin/project-a-bin`. + +Say project `my-vendor/project-b` has requirements setup like this: + +```json +{ + "name": "my-vendor/project-b", + "require": { + "my-vendor/project-a": "*" + } +} +``` + +Running `composer install` for this `composer.json` will look at +all of project-a's binaries and install them to `vendor/bin`. + +In this case, Composer will make `vendor/my-vendor/project-a/bin/project-a-bin` +available as `vendor/bin/project-a-bin`. On a Unix-like platform +this is accomplished by creating a symlink. + +## What about Windows and .bat files? + +Packages managed entirely by Composer do not *need* to contain any +`.bat` files for Windows compatibility. Composer handles installation +of binaries in a special way when run in a Windows environment: + + * A `.bat` file is generated automatically to reference the binary + * A Unix-style proxy file with the same name as the binary is generated + automatically (useful for Cygwin or Git Bash) + +Packages that need to support workflows that may not include Composer +are welcome to maintain custom `.bat` files. In this case, the package +should **not** list the `.bat` file as a binary as it is not needed. + +## Can vendor binaries be installed somewhere other than vendor/bin? + +Yes, there are two ways an alternate vendor binary location can be specified: + + 1. Setting the `bin-dir` configuration setting in `composer.json` + 1. Setting the environment variable `COMPOSER_BIN_DIR` + +An example of the former looks like this: + +```json +{ + "config": { + "bin-dir": "scripts" + } +} +``` + +Running `composer install` for this `composer.json` will result in +all of the vendor binaries being installed in `scripts/` instead of +`vendor/bin/`. + +You can set `bin-dir` to `./` to put binaries in your project root. diff --git a/vendor/composer/composer/doc/articles/versions.md b/vendor/composer/composer/doc/articles/versions.md new file mode 100644 index 0000000..e3da6c8 --- /dev/null +++ b/vendor/composer/composer/doc/articles/versions.md @@ -0,0 +1,230 @@ + + +# Versions and constraints + +## Composer Versions vs VCS Versions + +Because Composer is heavily geared toward utilizing version control systems +like git, the term "version" can be a little ambiguous. In the sense of a +version control system, a "version" is a specific set of files that contain +specific data. In git terminology, this is a "ref", or a specific commit, +which may be represented by a branch HEAD or a tag. When you check out that +version in your VCS -- for example, tag `v1.1` or commit `e35fa0d` --, you're +asking for a single, known set of files, and you always get the same files back. + +In Composer, what's often referred to casually as a version -- that is, +the string that follows the package name in a require line (e.g., `~1.1` or +`1.2.*`) -- is actually more specifically a version constraint. Composer +uses version constraints to figure out which refs in a VCS it should be +checking out (or simply to verify that a given library is acceptable in +the case of a statically-maintained library with a `version` specification +in `composer.json`). + +## VCS Tags and Branches + +*For the following discussion, let's assume the following sample library +repository:* + +```sh +~/my-library$ git branch +v1 +v2 +my-feature +another-feature + +~/my-library$ git tag +v1.0 +v1.0.1 +v1.0.2 +v1.1-BETA +v1.1-RC1 +v1.1-RC2 +v1.1 +v1.1.1 +v2.0-BETA +v2.0-RC1 +v2.0 +v2.0.1 +v2.0.2 +``` + +### Tags + +Normally, Composer deals with tags (as opposed to branches -- if you don't +know what this means, read up on +[version control systems](https://en.wikipedia.org/wiki/Version_control#Common_vocabulary)). +When you write a version constraint, it may reference a specific tag (e.g., +`1.1`) or it may reference a valid range of tags (e.g., `>=1.1 <2.0`, or +`~4.0`). To resolve these constraints, Composer first asks the VCS to list +all available tags, then creates an internal list of available versions based +on these tags. In the above example, composer's internal list includes versions +`1.0`, `1.0.1`, `1.0.2`, the beta release of `1.1`, the first and second +release candidates of `1.1`, the final release version `1.1`, etc.... (Note +that Composer automatically removes the 'v' prefix in the actual tagname to +get a valid final version number.) + +When Composer has a complete list of available versions from your VCS, it then +finds the highest version that matches all version constraints in your project +(it's possible that other packages require more specific versions of the +library than you do, so the version it chooses may not always be the highest +available version) and it downloads a zip archive of that tag to unpack in the +correct location in your `vendor` directory. + +### Branches + +If you want Composer to check out a branch instead of a tag, you need to point it to the branch using the special `dev-*` prefix (or sometimes suffix; see below). If you're checking out a branch, it's assumed that you want to *work* on the branch and Composer actually clones the repo into the correct place in your `vendor` directory. For tags, it copies the right files without actually cloning the repo. (You can modify this behavior with --prefer-source and --prefer-dist, see [install options](../03-cli.md#install).) + +In the above example, if you wanted to check out the `my-feature` branch, you would specify `dev-my-feature` as the version constraint in your `require` clause. This would result in Composer cloning the `my-library` repository into my `vendor` directory and checking out the `my-feature` branch. + +When branch names look like versions, we have to clarify for composer that we're trying to check out a branch and not a tag. In the above example, we have two version branches: `v1` and `v2`. To get Composer to check out one of these branches, you must specify a version constraint that looks like this: `v1.x-dev`. The `.x` is an arbitrary string that Composer requires to tell it that we're talking about the `v1` branch and not a `v1` tag (alternatively, you can name the branch `v1.x` instead of `v1`). In the case of a branch with a version-like name (`v1`, in this case), you append `-dev` as a suffix, rather than using `dev-` as a prefix. + +### Minimum Stability + +There's one more thing that will affect which files are checked out of a library's VCS and added to your project: Composer allows you to specify stability constraints to limit which tags are considered valid. In the above example, note that the library released a beta and two release candidates for version `1.1` before the final official release. To receive these versions when running `composer install` or `composer update`, we have to explicitly tell Composer that we are ok with release candidates and beta releases (and alpha releases, if we want those). This can be done using either a project-wide `minimum-stability` value in `composer.json` or using "stability flags" in version constraints. Read more on the [schema page](../04-schema.md#minimum-stability). + +## Writing Version Constraints + +Now that you have an idea of how Composer sees versions, let's talk about how +to specify version constraints for your project dependencies. + +### Exact Version Constraint + +You can specify the exact version of a package. This will tell Composer to +install this version and this version only. If other dependencies require +a different version, the solver will ultimately fail and abort any install +or update procedures. + +Example: `1.0.2` + +### Version Range + +By using comparison operators you can specify ranges of valid versions. Valid +operators are `>`, `>=`, `<`, `<=`, `!=`. + +You can define multiple ranges. Ranges separated by a space ( ) +or comma (`,`) will be treated as a **logical AND**. A double pipe (`||`) +will be treated as a **logical OR**. AND has higher precedence than OR. + +> **Note:** Be careful when using unbounded ranges as you might end up +> unexpectedly installing versions that break backwards compatibility. +> Consider using the [caret](#caret-version-range-) operator instead for safety. + +Examples: + +* `>=1.0` +* `>=1.0 <2.0` +* `>=1.0 <1.1 || >=1.2` + +### Hyphenated Version Range ( - ) + +Inclusive set of versions. Partial versions on the right include are completed +with a wildcard. For example `1.0 - 2.0` is equivalent to `>=1.0.0 <2.1` as the +`2.0` becomes `2.0.*`. On the other hand `1.0.0 - 2.1.0` is equivalent to +`>=1.0.0 <=2.1.0`. + +Example: `1.0 - 2.0` + +### Wildcard Version Range (.*) + +You can specify a pattern with a `*` wildcard. `1.0.*` is the equivalent of +`>=1.0 <1.1`. + +Example: `1.0.*` + +## Next Significant Release Operators + +### Tilde Version Range (~) + +The `~` operator is best explained by example: `~1.2` is equivalent to +`>=1.2 <2.0.0`, while `~1.2.3` is equivalent to `>=1.2.3 <1.3.0`. As you can see +it is mostly useful for projects respecting [semantic +versioning](https://semver.org/). A common usage would be to mark the minimum +minor version you depend on, like `~1.2` (which allows anything up to, but not +including, 2.0). Since in theory there should be no backwards compatibility +breaks until 2.0, that works well. Another way of looking at it is that using +`~` specifies a minimum version, but allows the last digit specified to go up. + +Example: `~1.2` + +> **Note:** Although `2.0-beta.1` is strictly before `2.0`, a version constraint +> like `~1.2` would not install it. As said above `~1.2` only means the `.2` +> can change but the `1.` part is fixed. + +> **Note:** The `~` operator has an exception on its behavior for the major +> release number. This means for example that `~1` is the same as `~1.0` as +> it will not allow the major number to increase trying to keep backwards +> compatibility. + +### Caret Version Range (^) + +The `^` operator behaves very similarly but it sticks closer to semantic +versioning, and will always allow non-breaking updates. For example `^1.2.3` +is equivalent to `>=1.2.3 <2.0.0` as none of the releases until 2.0 should +break backwards compatibility. For pre-1.0 versions it also acts with safety +in mind and treats `^0.3` as `>=0.3.0 <0.4.0`. + +This is the recommended operator for maximum interoperability when writing +library code. + +Example: `^1.2.3` + +## Stability Constraints + +If you are using a constraint that does not explicitly define a stability, +Composer will default internally to `-dev` or `-stable`, depending on the +operator(s) used. This happens transparently. + +If you wish to explicitly consider only the stable release in the comparison, +add the suffix `-stable`. + +Examples: + + Constraint | Internally +------------------- | ------------------------ + `1.2.3` | `=1.2.3.0-stable` + `>1.2` | `>1.2.0.0-stable` + `>=1.2` | `>=1.2.0.0-dev` + `>=1.2-stable` | `>=1.2.0.0-stable` + `<1.3` | `<1.3.0.0-dev` + `<=1.3` | `<=1.3.0.0-stable` + `1 - 2` | `>=1.0.0.0-dev <3.0.0.0-dev` + `~1.3` | `>=1.3.0.0-dev <2.0.0.0-dev` + `1.4.*` | `>=1.4.0.0-dev <1.5.0.0-dev` + +To allow various stabilities without enforcing them at the constraint level +however, you may use [stability-flags](../04-schema.md#package-links) like +`@` (e.g. `@dev`) to let composer know that a given package +can be installed in a different stability than your default minimum-stability +setting. All available stability flags are listed on the minimum-stability +section of the [schema page](../04-schema.md#minimum-stability). + +## Summary +```json +"require": { + "vendor/package": "1.3.2", // exactly 1.3.2 + + // >, <, >=, <= | specify upper / lower bounds + "vendor/package": ">=1.3.2", // anything above or equal to 1.3.2 + "vendor/package": "<1.3.2", // anything below 1.3.2 + + // * | wildcard + "vendor/package": "1.3.*", // >=1.3.0 <1.4.0 + + // ~ | allows last digit specified to go up + "vendor/package": "~1.3.2", // >=1.3.2 <1.4.0 + "vendor/package": "~1.3", // >=1.3.0 <2.0.0 + + // ^ | doesn't allow breaking changes (major version fixed - following semver) + "vendor/package": "^1.3.2", // >=1.3.2 <2.0.0 + "vendor/package": "^0.3.2", // >=0.3.2 <0.4.0 // except if major version is 0 +} +``` + +## Testing Version Constraints + +You can test version constraints using [semver.mwl.be](https://semver.mwl.be). +Fill in a package name and it will autofill the default version constraint +which Composer would add to your `composer.json` file. You can adjust the +version constraint and the tool will highlight all releases that match. diff --git a/vendor/composer/composer/doc/dev/DefaultPolicy.md b/vendor/composer/composer/doc/dev/DefaultPolicy.md new file mode 100644 index 0000000..65d0710 --- /dev/null +++ b/vendor/composer/composer/doc/dev/DefaultPolicy.md @@ -0,0 +1,55 @@ +# Default Solver Policy + +A solver policy defines behaviour variables of the dependency solver. It decides +which versions are considered newer than others, which packages should be +preferred over others and whether operations like downgrades or uninstall are +allowed. + +## Selection of preferred Packages + +The following describe package pool situations with user requests and the +resulting order in which the solver will try to install them. + +The rules are to be applied in the order of these descriptions. + +### Repository priorities + +Packages Repo1.Av1, Repo2.Av1 + +* priority(Repo1) >= priority(Repo2) => (Repo1.Av1, Repo2.Av1) +* priority(Repo1) < priority(Repo2) => (Repo2.Av1, Repo1.Av1) + +### Package versions + +Packages: Av1, Av2, Av3 + +* Installed: Av2 + +Request: install A + +* (Av3) + +### Virtual Packages (provides) + +Packages Av1, Bv1 + +* Av1 provides Xv1 +* Bv1 provides Xv1 + +Request: install X + +* priority(Av1.repo) >= priority(Bv1.repo) => (Av1, Bv1) +* priority(Av1.repo) < priority(Bv1.repo) => (Bv1, Av1) + +### Package replacements + +Packages: Av1, Bv2 + +* Bv2 replaces Av1 + +Request: install A + +* priority(Av1.repo) >= priority(Bv2.repo) => (Av1, Bv2) +* priority(Av1.repo) < priority(Bv2.repo) => (Bv2, Av1) + +Bv2 version is ignored, only the replacement version for A matters. diff --git a/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md b/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md new file mode 100644 index 0000000..20a2e83 --- /dev/null +++ b/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md @@ -0,0 +1,50 @@ +# How do I install a package to a custom path for my framework? + +Each framework may have one or many different required package installation +paths. Composer can be configured to install packages to a folder other than +the default `vendor` folder by using +[composer/installers](https://github.com/composer/installers). + +If you are a **package author** and want your package installed to a custom +directory, simply require `composer/installers` and set the appropriate `type`. +This is common if your package is intended for a specific framework such as +CakePHP, Drupal or WordPress. Here is an example composer.json file for a +WordPress theme: + +```json +{ + "name": "you/themename", + "type": "wordpress-theme", + "require": { + "composer/installers": "~1.0" + } +} +``` + +Now when your theme is installed with Composer it will be placed into +`wp-content/themes/themename/` folder. Check the +[current supported types](https://github.com/composer/installers#current-supported-package-types) +for your package. + +As a **package consumer** you can set or override the install path for a package +that requires composer/installers by configuring the `installer-paths` extra. A +useful example would be for a Drupal multisite setup where the package should be +installed into your sites subdirectory. Here we are overriding the install path +for a module that uses composer/installers: + +```json +{ + "extra": { + "installer-paths": { + "sites/example.com/modules/{$name}": ["vendor/package"] + } + } +} +``` + +Now the package would be installed to your folder location, rather than the default +composer/installers determined location. + +> **Note:** You cannot use this to change the path of any package. This is only +> applicable to packages that require `composer/installers` and use a custom type +> that it handles. diff --git a/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md b/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md new file mode 100644 index 0000000..ba6536e --- /dev/null +++ b/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md @@ -0,0 +1,42 @@ +# How do I install Composer programmatically? + +As noted on the download page, the installer script contains a +signature which changes when the installer code changes and as such +it should not be relied upon in the long term. + +An alternative is to use this script which only works with UNIX utilities: + +```bash +#!/bin/sh + +EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)" +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php +exit $RESULT +``` + +The script will exit with 1 in case of failure, or 0 on success, and is quiet +if no error occurs. + +Alternatively, if you want to rely on an exact copy of the installer, you can fetch +a specific version from GitHub's history. The commit hash should be enough to +give it uniqueness and authenticity as long as you can trust the GitHub servers. +For example: + +```bash +wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet +``` + +You may replace the commit hash by whatever the last commit hash is on +https://github.com/composer/getcomposer.org/commits/master diff --git a/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md b/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md new file mode 100644 index 0000000..1b3e9d3 --- /dev/null +++ b/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md @@ -0,0 +1,19 @@ +# How do I install untrusted packages safely? Is it safe to run Composer as superuser or root? + +Certain Composer commands, including `exec`, `install`, and `update` allow third party code to +execute on your system. This is from its "plugins" and "scripts" features. Plugins and scripts have +full access to the user account which runs Composer. For this reason, it is strongly advised to +**avoid running Composer as super-user/root**. + +You can disable plugins and scripts during package installation or updates with the following +syntax so only Composer's code, and no third party code, will execute: + +```sh +composer install --no-plugins --no-scripts ... +composer update --no-plugins --no-scripts ... +``` + +The `exec` command will always run third party code as the user which runs `composer`. + +In some cases, like in CI systems or such where you want to install untrusted dependencies, the +safest way to do it is to run the above command. diff --git a/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md b/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md new file mode 100644 index 0000000..14da5f5 --- /dev/null +++ b/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md @@ -0,0 +1,32 @@ +# Should I commit the dependencies in my vendor directory? + +The general recommendation is **no**. The vendor directory (or wherever your +dependencies are installed) should be added to `.gitignore`/`svn:ignore`/etc. + +The best practice is to then have all the developers use Composer to install +the dependencies. Similarly, the build server, CI, deployment tools etc should +be adapted to run Composer as part of their project bootstrapping. + +While it can be tempting to commit it in some environment, it leads to a few +problems: + +- Large VCS repository size and diffs when you update code. +- Duplication of the history of all your dependencies in your own VCS. +- Adding dependencies installed via git to a git repo will show them as + submodules. This is problematic because they are not real submodules, and you + will run into issues. + +If you really feel like you must do this, you have a few options: + +1. Limit yourself to installing tagged releases (no dev versions), so that you + only get zipped installs, and avoid problems with the git "submodules". +2. Use --prefer-dist or set `preferred-install` to `dist` in your + [config](../04-schema.md#config). +3. Remove the `.git` directory of every dependency after the installation, then + you can add them to your git repo. You can do that with `rm -rf vendor/**/.git` + in ZSH or `find vendor/ -type d -name ".git" -exec rm -rf {} \;` in Bash. + but this means you will have to delete those dependencies from disk before + running composer update. +4. Add a .gitignore rule (`/vendor/**/.git`) to ignore all the vendor `.git` folders. + This approach does not require that you delete dependencies from disk prior to + running a composer update. diff --git a/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md b/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md new file mode 100644 index 0000000..20095bb --- /dev/null +++ b/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md @@ -0,0 +1,4 @@ +# Which version numbering system does Composer itself use? + +Composer uses [Semantic Versioning (aka SemVer) +2.0.0](https://semver.org/spec/v2.0.0.html). diff --git a/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md b/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md new file mode 100644 index 0000000..9aef970 --- /dev/null +++ b/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md @@ -0,0 +1,21 @@ +# Why are unbound version constraints a bad idea? + +A version constraint without an upper bound such as `*`, `>=3.4` or +`dev-master` will allow updates to any future version of the dependency. +This includes major versions breaking backward compatibility. + +Once a release of your package is tagged, you cannot tweak its dependencies +anymore in case a dependency breaks BC - you have to do a new release but the +previous one stays broken. + +The only good alternative is to define an upper bound on your constraints, +which you can increase in a new release after testing that your package is +compatible with the new major version of your dependency. + +For example instead of using `>=3.4` you should use `~3.4` which allows all +versions up to `3.999` but does not include `4.0` and above. The `^` operator +works very well with libraries following [semantic versioning](https://semver.org). + +**Note:** As a package maintainer, you can make the life of your users easier +by providing an [alias version](../articles/aliases.md) for your development +branch to allow it to match bound constraints. diff --git a/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md b/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md new file mode 100644 index 0000000..f4aa5b1 --- /dev/null +++ b/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md @@ -0,0 +1,21 @@ +# Why are version constraints combining comparisons and wildcards a bad idea? + +This is a fairly common mistake people make, defining version constraints in +their package requires like `>=2.*` or `>=1.1.*`. + +If you think about it and what it really means though, you will quickly +realize that it does not make much sense. If we decompose `>=2.*`, you +have two parts: + +- `>=2` which says the package should be in version 2.0.0 or above. +- `2.*` which says the package should be between version 2.0.0 (inclusive) + and 3.0.0 (exclusive). + +As you see, both rules agree on the fact that the package must be >=2.0.0, +but it is not possible to determine if when you wrote that you were thinking +of a package in version 3.0.0 or not. Should it match because you asked for +`>=2` or should it not match because you asked for a `2.*`? + +For this reason, Composer throws an error and says that this is invalid. +The easy way to fix it is to think about what you really mean, and use only +one of those rules. \ No newline at end of file diff --git a/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md b/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md new file mode 100644 index 0000000..a39aff6 --- /dev/null +++ b/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md @@ -0,0 +1,35 @@ +# Why can't Composer load repositories recursively? + +You may run into problems when using custom repositories because Composer does +not load the repositories of your requirements, so you have to redefine those +repositories in all your `composer.json` files. + +Before going into details as to why this is like that, you have to understand +that the main use of custom VCS & package repositories is to temporarily try +some things, or use a fork of a project until your pull request is merged, etc. +You should not use them to keep track of private packages. For that you should +rather look into [Private Packagist](https://packagist.com) which lets you +configure all your private packages in one place, and avoids the slow-downs +associated with inline VCS repositories. + +There are three ways the dependency solver could work with custom repositories: + +- Fetch the repositories of root package, get all the packages from the defined +repositories, then resolve requirements. This is the current state and it works well +except for the limitation of not loading repositories recursively. + +- Fetch the repositories of root package, while initializing packages from the +defined repos, initialize recursively all repos found in those packages, and +their package's packages, etc, then resolve requirements. It could work, but it +slows down the initialization a lot since VCS repos can each take a few seconds, +and it could end up in a completely broken state since many versions of a package +could define the same packages inside a package repository, but with different +dist/source. There are many many ways this could go wrong. + +- Fetch the repositories of root package, then fetch the repositories of the +first level dependencies, then fetch the repositories of their dependencies, etc, +then resolve requirements. This sounds more efficient, but it suffers from the +same problems as the second solution, because loading the repositories of the +dependencies is not as easy as it sounds. You need to load all the repos of all +the potential matches for a requirement, which again might have conflicting +package definitions. diff --git a/vendor/composer/composer/doc/fixtures/fixtures.md b/vendor/composer/composer/doc/fixtures/fixtures.md new file mode 100644 index 0000000..d67edb2 --- /dev/null +++ b/vendor/composer/composer/doc/fixtures/fixtures.md @@ -0,0 +1,22 @@ +# `Composer` type repository fixtures + +This directory contains some examples of what `composer` type repositories can +look like. They serve as illustrating examples accompanying the docs, but can +also be used as (initial) fixtures for tests. + +* `repo-composer-plain` is a simple, plain `packages.json` file +* `repo-composer-with-includes` uses the `includes` mechanism +* `repo-composer-with-providers` uses the `providers` mechanism + +## Sample Packages used in these fixtures + +All these repositories contain the following packages. + +* `foo/bar` versions 1.0.0, 1.0.1 and 1.1.0; dev-default and 1.0.x-dev branches. + On dev-default and in 1.1.0, `bar/baz` ~1.0 is required. +* `qux/quux` only has a dev-default branch. It `replace`s `gar/nix`. +* `gar/nix` has a 1.0.0 version and a dev-default branch. It is being replaced + by `qux/quux`. +* `bar/baz` has a 1.0.0 version and 1.0.x-dev as well as dev-default branches. + Additionally, 1.1.x-dev is a branch alias for dev-default. + diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json b/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json new file mode 100644 index 0000000..2190519 --- /dev/null +++ b/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json @@ -0,0 +1,158 @@ +{ + "packages": { + "bar/baz": { + "1.0.0": { + "name": "bar/baz", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "35810817c14d" + }, + "time": "2014-10-13 12:04:55", + "type": "library" + }, + "1.0.x-dev": { + "name": "bar/baz", + "version": "1.0.x-dev", + "version_normalized": "1.0.9999999.9999999-dev", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "ffff9aae6ed5" + }, + "time": "2014-10-13 12:05:37", + "type": "library" + }, + "dev-default": { + "name": "bar/baz", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "f317e556f2e2" + }, + "time": "2014-10-13 12:06:45", + "type": "library", + "extra": { + "branch-alias": { + "dev-default": "1.1.x-dev" + } + } + } + }, + "foo/bar": { + "1.0.0": { + "name": "foo/bar", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "249dec95a52a" + }, + "time": "2014-10-11 15:42:00", + "type": "library" + }, + "1.0.1": { + "name": "foo/bar", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "21e3328295d4" + }, + "time": "2014-10-11 15:45:56", + "type": "library" + }, + "1.0.x-dev": { + "name": "foo/bar", + "version": "1.0.x-dev", + "version_normalized": "1.0.9999999.9999999-dev", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "14dc17c8e860" + }, + "time": "2014-10-11 15:45:59", + "type": "library" + }, + "1.1.0": { + "name": "foo/bar", + "version": "1.1.0", + "version_normalized": "1.1.0.0", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "d2fa3e69ad5b" + }, + "require": { + "bar/baz": "~1.0" + }, + "time": "2014-10-11 15:43:16", + "type": "library" + }, + "dev-default": { + "name": "foo/bar", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "8e5a5c224336" + }, + "require": { + "bar/baz": "~1.0" + }, + "time": "2014-10-11 15:43:18", + "type": "library" + } + }, + "gar/nix": { + "1.0.0": { + "name": "gar/nix", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "44977145d64e" + }, + "time": "2014-10-13 12:03:33", + "type": "library" + }, + "dev-default": { + "name": "gar/nix", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "51cca95a31c2" + }, + "time": "2014-10-13 12:03:35", + "type": "library" + } + }, + "qux/quux": { + "dev-default": { + "name": "qux/quux", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http://some.where/over/the/rainbow/", + "reference": "4a10a567baa5" + }, + "replace": { + "gar/nix": "1.0.*" + }, + "time": "2014-10-11 15:48:15", + "type": "library" + } + } + } +} diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json new file mode 100644 index 0000000..94a43b0 --- /dev/null +++ b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json @@ -0,0 +1,50 @@ +{ + "packages": { + "bar\/baz": { + "1.0.0": { + "name": "bar\/baz", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "35810817c14d" + }, + "time": "2014-10-13 12:04:55", + "type": "library", + "uid": 0 + }, + "1.0.x-dev": { + "name": "bar\/baz", + "version": "1.0.x-dev", + "version_normalized": "1.0.9999999.9999999-dev", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "ffff9aae6ed5" + }, + "time": "2014-10-13 12:05:37", + "type": "library", + "uid": 1 + }, + "dev-default": { + "name": "bar\/baz", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "f317e556f2e2" + }, + "time": "2014-10-13 12:06:45", + "type": "library", + "extra": { + "branch-alias": { + "dev-default": "1.1.x-dev" + } + }, + "uid": 2 + } + } + } +} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json new file mode 100644 index 0000000..7dc7cc9 --- /dev/null +++ b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json @@ -0,0 +1,77 @@ +{ + "packages": { + "foo\/bar": { + "1.0.0": { + "name": "foo\/bar", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "249dec95a52a" + }, + "time": "2014-10-11 15:42:00", + "type": "library", + "uid": 3 + }, + "1.0.1": { + "name": "foo\/bar", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "21e3328295d4" + }, + "time": "2014-10-11 15:45:56", + "type": "library", + "uid": 4 + }, + "1.0.x-dev": { + "name": "foo\/bar", + "version": "1.0.x-dev", + "version_normalized": "1.0.9999999.9999999-dev", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "14dc17c8e860" + }, + "time": "2014-10-11 15:45:59", + "type": "library", + "uid": 5 + }, + "1.1.0": { + "name": "foo\/bar", + "version": "1.1.0", + "version_normalized": "1.1.0.0", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "d2fa3e69ad5b" + }, + "require": { + "bar\/baz": "~1.0" + }, + "time": "2014-10-11 15:43:16", + "type": "library", + "uid": 6 + }, + "dev-default": { + "name": "foo\/bar", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "8e5a5c224336" + }, + "require": { + "bar\/baz": "~1.0" + }, + "time": "2014-10-11 15:43:18", + "type": "library", + "uid": 7 + } + } + } +} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json new file mode 100644 index 0000000..512b8d8 --- /dev/null +++ b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json @@ -0,0 +1,50 @@ +{ + "packages": { + "qux\/quux": { + "dev-default": { + "name": "qux\/quux", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "4a10a567baa5" + }, + "replace": { + "gar\/nix": "1.0.*" + }, + "time": "2014-10-11 15:48:15", + "type": "library", + "uid": 10 + } + }, + "gar\/nix": { + "1.0.0": { + "name": "gar\/nix", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "44977145d64e" + }, + "time": "2014-10-13 12:03:33", + "type": "library", + "uid": 8 + }, + "dev-default": { + "name": "gar\/nix", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "51cca95a31c2" + }, + "time": "2014-10-13 12:03:35", + "type": "library", + "uid": 9 + } + } + } +} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json new file mode 100644 index 0000000..b82eb41 --- /dev/null +++ b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json @@ -0,0 +1,16 @@ +{ + "providers": { + "bar\/baz": { + "sha256": "923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe" + }, + "foo\/bar": { + "sha256": "4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a" + }, + "gar\/nix": { + "sha256": "5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321" + }, + "qux\/quux": { + "sha256": "c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d" + } + } +} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json new file mode 100644 index 0000000..0141872 --- /dev/null +++ b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json @@ -0,0 +1,22 @@ +{ + "packages": { + "qux\/quux": { + "dev-default": { + "name": "qux\/quux", + "version": "dev-default", + "version_normalized": "9999999-dev", + "source": { + "type": "hg", + "url": "http:\/\/some.where\/over\/the\/rainbow\/", + "reference": "4a10a567baa5" + }, + "replace": { + "gar\/nix": "1.0.*" + }, + "time": "2014-10-11 15:48:15", + "type": "library", + "uid": 10 + } + } + } +} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json new file mode 100644 index 0000000..65968a8 --- /dev/null +++ b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json @@ -0,0 +1,9 @@ +{ + "packages": [], + "providers-url": "\/p\/%package%$%hash%.json", + "provider-includes": { + "p\/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json": { + "sha256": "1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8" + } + } +} \ No newline at end of file diff --git a/vendor/composer/composer/res/composer-repository-schema.json b/vendor/composer/composer/res/composer-repository-schema.json new file mode 100644 index 0000000..914d8e2 --- /dev/null +++ b/vendor/composer/composer/res/composer-repository-schema.json @@ -0,0 +1,110 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "A representation of packages metadata.", + "type": "object", + "oneOf": [ + { "required": [ "packages" ] }, + { "required": [ "providers" ] }, + { "required": [ "provider-includes", "providers-url" ] } + ], + "properties": { + "packages": { + "type": ["object", "array"], + "description": "A hashmap of package names in the form of /.", + "additionalProperties": { "$ref": "#/definitions/versions" } + }, + "providers-url": { + "type": "string", + "description": "Endpoint to retrieve provider data from, e.g. '/p/%package%$%hash%.json'." + }, + "provider-includes": { + "type": "object", + "description": "A hashmap of provider listings.", + "additionalProperties": { "$ref": "#/definitions/provider" } + }, + "providers": { + "type": "object", + "description": "A hashmap of package names in the form of /.", + "additionalProperties": { "$ref": "#/definitions/provider" } + }, + "notify-batch": { + "type": "string", + "description": "Endpoint to call after multiple packages have been installed, e.g. '/downloads/'." + }, + "search": { + "type": "string", + "description": "Endpoint that provides search capabilities, e.g. '/search.json?q=%query%&type=%type%'." + }, + "warning": { + "type": "string", + "description": "A message that will be output by Composer as a warning when this source is consulted." + } + }, + "definitions": { + "versions": { + "type": "object", + "description": "A hashmap of versions and their metadata.", + "additionalProperties": { "$ref": "#/definitions/version" } + }, + "version": { + "type": "object", + "oneOf": [ + { "$ref": "#/definitions/package" }, + { "$ref": "#/definitions/metapackage" } + ] + }, + "package-base": { + "properties": { + "name": { "type": "string" }, + "type": { "type": "string" }, + "version": { "type": "string" }, + "version_normalized": { + "type": "string", + "description": "Normalized version, optional but can save computational time on client side." + }, + "autoload": { "type": "object" }, + "require": { "type": "object" }, + "replace": { "type": "object" }, + "conflict": { "type": "object" }, + "provide": { "type": "object" }, + "time": { "type": "string" } + }, + "additionalProperties": true + }, + "package": { + "allOf": [ + { "$ref": "#/definitions/package-base" }, + { + "properties": { + "dist": { "type": "object" }, + "source": { "type": "object" } + } + }, + { "oneOf": [ + { "required": [ "name", "version", "source" ] }, + { "required": [ "name", "version", "dist" ] } + ] } + ] + }, + "metapackage": { + "allOf": [ + { "$ref": "#/definitions/package-base" }, + { + "properties": { + "type": { "type": "string", "enum": [ "metapackage" ] } + }, + "required": [ "name", "version", "type" ] + } + ] + }, + "provider": { + "type": "object", + "properties": { + "sha256": { + "type": "string", + "description": "Hash value that can be used to validate the resource." + } + } + } + } +} diff --git a/vendor/composer/composer/res/composer-schema.json b/vendor/composer/composer/res/composer-schema.json new file mode 100644 index 0000000..0247757 --- /dev/null +++ b/vendor/composer/composer/res/composer-schema.json @@ -0,0 +1,849 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "name": "Package", + "type": "object", + "additionalProperties": false, + "required": [ "name", "description" ], + "properties": { + "name": { + "type": "string", + "description": "Package name, including 'vendor-name/' prefix." + }, + "type": { + "description": "Package type, either 'library' for common packages, 'composer-plugin' for plugins, 'metapackage' for empty packages, or a custom type ([a-z0-9-]+) defined by whatever project this package applies to.", + "type": "string", + "pattern": "^[a-z0-9-]+$" + }, + "target-dir": { + "description": "DEPRECATED: Forces the package to be installed into the given subdirectory path. This is used for autoloading PSR-0 packages that do not contain their full path. Use forward slashes for cross-platform compatibility.", + "type": "string" + }, + "description": { + "type": "string", + "description": "Short package description." + }, + "keywords": { + "type": "array", + "items": { + "type": "string", + "description": "A tag/keyword that this package relates to." + } + }, + "homepage": { + "type": "string", + "description": "Homepage URL for the project.", + "format": "uri" + }, + "readme": { + "type": "string", + "description": "Relative path to the readme document." + }, + "version": { + "type": "string", + "description": "Package version, see https://getcomposer.org/doc/04-schema.md#version for more info on valid schemes.", + "pattern": "^v?\\d+(((\\.\\d+)?\\.\\d+)?\\.\\d+)?|^dev-" + }, + "time": { + "type": "string", + "description": "Package release date, in 'YYYY-MM-DD', 'YYYY-MM-DD HH:MM:SS' or 'YYYY-MM-DDTHH:MM:SSZ' format." + }, + "license": { + "type": ["string", "array"], + "description": "License name. Or an array of license names." + }, + "authors": { + "$ref": "#/definitions/authors" + }, + "require": { + "type": "object", + "description": "This is a hash of package name (keys) and version constraints (values) that are required to run this package.", + "additionalProperties": { + "type": "string" + } + }, + "replace": { + "type": "object", + "description": "This is a hash of package name (keys) and version constraints (values) that can be replaced by this package.", + "additionalProperties": { + "type": "string" + } + }, + "conflict": { + "type": "object", + "description": "This is a hash of package name (keys) and version constraints (values) that conflict with this package.", + "additionalProperties": { + "type": "string" + } + }, + "provide": { + "type": "object", + "description": "This is a hash of package name (keys) and version constraints (values) that this package provides in addition to this package's name.", + "additionalProperties": { + "type": "string" + } + }, + "require-dev": { + "type": "object", + "description": "This is a hash of package name (keys) and version constraints (values) that this package requires for developing it (testing tools and such).", + "additionalProperties": { + "type": "string" + } + }, + "suggest": { + "type": "object", + "description": "This is a hash of package name (keys) and descriptions (values) that this package suggests work well with it (this will be suggested to the user during installation).", + "additionalProperties": { + "type": "string" + } + }, + "config": { + "type": "object", + "description": "Composer options.", + "properties": { + "process-timeout": { + "type": "integer", + "description": "The timeout in seconds for process executions, defaults to 300 (5mins)." + }, + "use-include-path": { + "type": "boolean", + "description": "If true, the Composer autoloader will also look for classes in the PHP include path." + }, + "preferred-install": { + "type": ["string", "object"], + "description": "The install method Composer will prefer to use, defaults to auto and can be any of source, dist, auto, or a hash of {\"pattern\": \"preference\"}." + }, + "notify-on-install": { + "type": "boolean", + "description": "Composer allows repositories to define a notification URL, so that they get notified whenever a package from that repository is installed. This option allows you to disable that behaviour, defaults to true." + }, + "github-protocols": { + "type": "array", + "description": "A list of protocols to use for github.com clones, in priority order, defaults to [\"git\", \"https\", \"http\"].", + "items": { + "type": "string" + } + }, + "github-oauth": { + "type": "object", + "description": "A hash of domain name => github API oauth tokens, typically {\"github.com\":\"\"}.", + "additionalProperties": { + "type": "string" + } + }, + "gitlab-oauth": { + "type": "object", + "description": "A hash of domain name => gitlab API oauth tokens, typically {\"gitlab.com\":\"\"}.", + "additionalProperties": { + "type": "string" + } + }, + "gitlab-token": { + "type": "object", + "description": "A hash of domain name => gitlab private tokens, typically {\"gitlab.com\":\"\"}.", + "additionalProperties": true + }, + "disable-tls": { + "type": "boolean", + "description": "Defaults to `false`. If set to true all HTTPS URLs will be tried with HTTP instead and no network level encryption is performed. Enabling this is a security risk and is NOT recommended. The better way is to enable the php_openssl extension in php.ini." + }, + "secure-http": { + "type": "boolean", + "description": "Defaults to `true`. If set to true only HTTPS URLs are allowed to be downloaded via Composer. If you really absolutely need HTTP access to something then you can disable it, but using \"Let's Encrypt\" to get a free SSL certificate is generally a better alternative." + }, + "cafile": { + "type": "string", + "description": "A way to set the path to the openssl CA file. In PHP 5.6+ you should rather set this via openssl.cafile in php.ini, although PHP 5.6+ should be able to detect your system CA file automatically." + }, + "capath": { + "type": "string", + "description": "If cafile is not specified or if the certificate is not found there, the directory pointed to by capath is searched for a suitable certificate. capath must be a correctly hashed certificate directory." + }, + "http-basic": { + "type": "object", + "description": "A hash of domain name => {\"username\": \"...\", \"password\": \"...\"}.", + "additionalProperties": { + "type": "object", + "required": ["username", "password"], + "properties": { + "username": { + "type": "string", + "description": "The username used for HTTP Basic authentication" + }, + "password": { + "type": "string", + "description": "The password used for HTTP Basic authentication" + } + } + } + }, + "store-auths": { + "type": ["string", "boolean"], + "description": "What to do after prompting for authentication, one of: true (store), false (do not store) or \"prompt\" (ask every time), defaults to prompt." + }, + "platform": { + "type": "object", + "description": "This is a hash of package name (keys) and version (values) that will be used to mock the platform packages on this machine.", + "additionalProperties": { + "type": "string" + } + }, + "vendor-dir": { + "type": "string", + "description": "The location where all packages are installed, defaults to \"vendor\"." + }, + "bin-dir": { + "type": "string", + "description": "The location where all binaries are linked, defaults to \"vendor/bin\"." + }, + "data-dir": { + "type": "string", + "description": "The location where old phar files are stored, defaults to \"$home\" except on XDG Base Directory compliant unixes." + }, + "cache-dir": { + "type": "string", + "description": "The location where all caches are located, defaults to \"~/.composer/cache\" on *nix and \"%LOCALAPPDATA%\\Composer\" on windows." + }, + "cache-files-dir": { + "type": "string", + "description": "The location where files (zip downloads) are cached, defaults to \"{$cache-dir}/files\"." + }, + "cache-repo-dir": { + "type": "string", + "description": "The location where repo (git/hg repo clones) are cached, defaults to \"{$cache-dir}/repo\"." + }, + "cache-vcs-dir": { + "type": "string", + "description": "The location where vcs infos (git clones, github api calls, etc. when reading vcs repos) are cached, defaults to \"{$cache-dir}/vcs\"." + }, + "cache-ttl": { + "type": "integer", + "description": "The default cache time-to-live, defaults to 15552000 (6 months)." + }, + "cache-files-ttl": { + "type": "integer", + "description": "The cache time-to-live for files, defaults to the value of cache-ttl." + }, + "cache-files-maxsize": { + "type": ["string", "integer"], + "description": "The cache max size for the files cache, defaults to \"300MiB\"." + }, + "bin-compat": { + "enum": ["auto", "full"], + "description": "The compatibility of the binaries, defaults to \"auto\" (automatically guessed) and can be \"full\" (compatible with both Windows and Unix-based systems)." + }, + "discard-changes": { + "type": ["string", "boolean"], + "description": "The default style of handling dirty updates, defaults to false and can be any of true, false or \"stash\"." + }, + "autoloader-suffix": { + "type": "string", + "description": "Optional string to be used as a suffix for the generated Composer autoloader. When null a random one will be generated." + }, + "optimize-autoloader": { + "type": "boolean", + "description": "Always optimize when dumping the autoloader." + }, + "prepend-autoloader": { + "type": "boolean", + "description": "If false, the composer autoloader will not be prepended to existing autoloaders, defaults to true." + }, + "classmap-authoritative": { + "type": "boolean", + "description": "If true, the composer autoloader will not scan the filesystem for classes that are not found in the class map, defaults to false." + }, + "apcu-autoloader": { + "type": "boolean", + "description": "If true, the Composer autoloader will check for APCu and use it to cache found/not-found classes when the extension is enabled, defaults to false." + }, + "github-domains": { + "type": "array", + "description": "A list of domains to use in github mode. This is used for GitHub Enterprise setups, defaults to [\"github.com\"].", + "items": { + "type": "string" + } + }, + "github-expose-hostname": { + "type": "boolean", + "description": "Defaults to true. If set to false, the OAuth tokens created to access the github API will have a date instead of the machine hostname." + }, + "gitlab-domains": { + "type": "array", + "description": "A list of domains to use in gitlab mode. This is used for custom GitLab setups, defaults to [\"gitlab.com\"].", + "items": { + "type": "string" + } + }, + "use-github-api": { + "type": "boolean", + "description": "Defaults to true. If set to false, globally disables the use of the GitHub API for all GitHub repositories and clones the repository as it would for any other repository." + }, + "archive-format": { + "type": "string", + "description": "The default archiving format when not provided on cli, defaults to \"tar\"." + }, + "archive-dir": { + "type": "string", + "description": "The default archive path when not provided on cli, defaults to \".\"." + }, + "htaccess-protect": { + "type": "boolean", + "description": "Defaults to true. If set to false, Composer will not create .htaccess files in the composer home, cache, and data directories." + }, + "sort-packages": { + "type": "boolean", + "description": "Defaults to false. If set to true, Composer will sort packages when adding/updating a new dependency." + } + } + }, + "extra": { + "type": ["object", "array"], + "description": "Arbitrary extra data that can be used by plugins, for example, package of type composer-plugin may have a 'class' key defining an installer class name.", + "additionalProperties": true + }, + "autoload": { + "$ref": "#/definitions/autoload" + }, + "autoload-dev": { + "type": "object", + "description": "Description of additional autoload rules for development purpose (eg. a test suite).", + "properties": { + "psr-0": { + "type": "object", + "description": "This is a hash of namespaces (keys) and the directories they can be found into (values, can be arrays of paths) by the autoloader.", + "additionalProperties": { + "type": ["string", "array"], + "items": { + "type": "string" + } + } + }, + "psr-4": { + "type": "object", + "description": "This is a hash of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.", + "additionalProperties": { + "type": ["string", "array"], + "items": { + "type": "string" + } + } + }, + "classmap": { + "type": "array", + "description": "This is an array of directories that contain classes to be included in the class-map generation process." + }, + "files": { + "type": "array", + "description": "This is an array of files that are always required on every request." + } + } + }, + "archive": { + "type": ["object"], + "description": "Options for creating package archives for distribution.", + "properties": { + "exclude": { + "type": "array", + "description": "A list of patterns for paths to exclude or include if prefixed with an exclamation mark." + } + } + }, + "repositories": { + "type": ["object", "array"], + "description": "A set of additional repositories where packages can be found.", + "additionalProperties": { + "oneOf": [ + { "$ref": "#/definitions/repository" }, + { "type": "boolean", "enum": [false] } + ] + }, + "items": { + "oneOf": [ + { "$ref": "#/definitions/repository" }, + { + "type": "object", + "additionalProperties": { "type": "boolean", "enum": [false] }, + "minProperties": 1, + "maxProperties": 1 + } + ] + } + }, + "minimum-stability": { + "type": ["string"], + "description": "The minimum stability the packages must have to be install-able. Possible values are: dev, alpha, beta, RC, stable.", + "pattern": "^dev|alpha|beta|rc|RC|stable$" + }, + "prefer-stable": { + "type": ["boolean"], + "description": "If set to true, stable packages will be preferred to dev packages when possible, even if the minimum-stability allows unstable packages." + }, + "bin": { + "type": ["string", "array"], + "description": "A set of files, or a single file, that should be treated as binaries and symlinked into bin-dir (from config).", + "items": { + "type": "string" + } + }, + "include-path": { + "type": ["array"], + "description": "DEPRECATED: A list of directories which should get added to PHP's include path. This is only present to support legacy projects, and all new code should preferably use autoloading.", + "items": { + "type": "string" + } + }, + "scripts": { + "type": ["object"], + "description": "Script listeners that will be executed before/after some events.", + "properties": { + "pre-install-cmd": { + "type": ["array", "string"], + "description": "Occurs before the install command is executed, contains one or more Class::method callables or shell commands." + }, + "post-install-cmd": { + "type": ["array", "string"], + "description": "Occurs after the install command is executed, contains one or more Class::method callables or shell commands." + }, + "pre-update-cmd": { + "type": ["array", "string"], + "description": "Occurs before the update command is executed, contains one or more Class::method callables or shell commands." + }, + "post-update-cmd": { + "type": ["array", "string"], + "description": "Occurs after the update command is executed, contains one or more Class::method callables or shell commands." + }, + "pre-status-cmd": { + "type": ["array", "string"], + "description": "Occurs before the status command is executed, contains one or more Class::method callables or shell commands." + }, + "post-status-cmd": { + "type": ["array", "string"], + "description": "Occurs after the status command is executed, contains one or more Class::method callables or shell commands." + }, + "pre-package-install": { + "type": ["array", "string"], + "description": "Occurs before a package is installed, contains one or more Class::method callables or shell commands." + }, + "post-package-install": { + "type": ["array", "string"], + "description": "Occurs after a package is installed, contains one or more Class::method callables or shell commands." + }, + "pre-package-update": { + "type": ["array", "string"], + "description": "Occurs before a package is updated, contains one or more Class::method callables or shell commands." + }, + "post-package-update": { + "type": ["array", "string"], + "description": "Occurs after a package is updated, contains one or more Class::method callables or shell commands." + }, + "pre-package-uninstall": { + "type": ["array", "string"], + "description": "Occurs before a package has been uninstalled, contains one or more Class::method callables or shell commands." + }, + "post-package-uninstall": { + "type": ["array", "string"], + "description": "Occurs after a package has been uninstalled, contains one or more Class::method callables or shell commands." + }, + "pre-autoload-dump": { + "type": ["array", "string"], + "description": "Occurs before the autoloader is dumped, contains one or more Class::method callables or shell commands." + }, + "post-autoload-dump": { + "type": ["array", "string"], + "description": "Occurs after the autoloader is dumped, contains one or more Class::method callables or shell commands." + }, + "post-root-package-install": { + "type": ["array", "string"], + "description": "Occurs after the root-package is installed, contains one or more Class::method callables or shell commands." + }, + "post-create-project-cmd": { + "type": ["array", "string"], + "description": "Occurs after the create-project command is executed, contains one or more Class::method callables or shell commands." + } + } + }, + "scripts-descriptions": { + "type": ["object"], + "description": "Descriptions for custom commands, shown in console help.", + "additionalProperties": { + "type": "string" + } + }, + "support": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email address for support.", + "format": "email" + }, + "issues": { + "type": "string", + "description": "URL to the issue tracker.", + "format": "uri" + }, + "forum": { + "type": "string", + "description": "URL to the forum.", + "format": "uri" + }, + "wiki": { + "type": "string", + "description": "URL to the wiki.", + "format": "uri" + }, + "irc": { + "type": "string", + "description": "IRC channel for support, as irc://server/channel.", + "format": "uri" + }, + "chat": { + "type": "string", + "description": "URL to the support chat.", + "format": "uri" + }, + "source": { + "type": "string", + "description": "URL to browse or download the sources.", + "format": "uri" + }, + "docs": { + "type": "string", + "description": "URL to the documentation.", + "format": "uri" + }, + "rss": { + "type": "string", + "description": "URL to the RSS feed.", + "format": "uri" + } + } + }, + "non-feature-branches": { + "type": ["array"], + "description": "A set of string or regex patterns for non-numeric branch names that will not be handled as feature branches.", + "items": { + "type": "string" + } + }, + "abandoned": { + "type": ["boolean", "string"], + "description": "Indicates whether this package has been abandoned, it can be boolean or a package name/URL pointing to a recommended alternative. Defaults to false." + }, + "_comment": { + "type": ["array", "string"], + "description": "A key to store comments in" + } + }, + "definitions": { + "authors": { + "type": "array", + "description": "List of authors that contributed to the package. This is typically the main maintainers, not the full list.", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ "name"], + "properties": { + "name": { + "type": "string", + "description": "Full name of the author." + }, + "email": { + "type": "string", + "description": "Email address of the author.", + "format": "email" + }, + "homepage": { + "type": "string", + "description": "Homepage URL for the author.", + "format": "uri" + }, + "role": { + "type": "string", + "description": "Author's role in the project." + } + } + } + }, + "autoload": { + "type": "object", + "description": "Description of how the package can be autoloaded.", + "properties": { + "psr-0": { + "type": "object", + "description": "This is a hash of namespaces (keys) and the directories they can be found in (values, can be arrays of paths) by the autoloader.", + "additionalProperties": { + "type": ["string", "array"], + "items": { + "type": "string" + } + } + }, + "psr-4": { + "type": "object", + "description": "This is a hash of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.", + "additionalProperties": { + "type": ["string", "array"], + "items": { + "type": "string" + } + } + }, + "classmap": { + "type": "array", + "description": "This is an array of directories that contain classes to be included in the class-map generation process." + }, + "files": { + "type": "array", + "description": "This is an array of files that are always required on every request." + }, + "exclude-from-classmap": { + "type": "array", + "description": "This is an array of patterns to exclude from autoload classmap generation. (e.g. \"exclude-from-classmap\": [\"/test/\", \"/tests/\", \"/Tests/\"]" + } + } + }, + "repository": { + "type": "object", + "oneOf": [ + { "$ref": "#/definitions/composer-repository" }, + { "$ref": "#/definitions/vcs-repository" }, + { "$ref": "#/definitions/path-repository" }, + { "$ref": "#/definitions/artifact-repository" }, + { "$ref": "#/definitions/pear-repository" }, + { "$ref": "#/definitions/package-repository" } + ] + }, + "composer-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["composer"] }, + "url": { "type": "string" }, + "options": { + "type": "object", + "additionalProperties": true + }, + "allow_ssl_downgrade": { "type": "boolean" }, + "force-lazy-providers": { "type": "boolean" } + } + }, + "vcs-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["vcs", "github", "git", "gitlab", "git-bitbucket", "hg", "hg-bitbucket", "fossil", "perforce", "svn"] }, + "url": { "type": "string" }, + "no-api": { "type": "boolean" }, + "secure-http": { "type": "boolean" }, + "svn-cache-credentials": { "type": "boolean" }, + "trunk-path": { "type": ["string", "boolean"] }, + "branches-path": { "type": ["string", "boolean"] }, + "tags-path": { "type": ["string", "boolean"] }, + "package-path": { "type": "string" }, + "depot": { "type": "string" }, + "branch": { "type": "string" }, + "unique_perforce_client_name": { "type": "string" }, + "p4user": { "type": "string" }, + "p4password": { "type": "string" } + } + }, + "path-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["path"] }, + "url": { "type": "string" }, + "options": { + "type": "object", + "properties": { + "symlink": { "type": ["boolean", "null"] } + }, + "additionalProperties": true + } + } + }, + "artifact-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["artifact"] }, + "url": { "type": "string" } + } + }, + "pear-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["pear"] }, + "url": { "type": "string" }, + "vendor-alias": { "type": "string" } + } + }, + "package-repository": { + "type": "object", + "required": ["type", "package"], + "properties": { + "type": { "type": "string", "enum": ["package"] }, + "package": { + "oneOf": [ + { "$ref": "#/definitions/inline-package" }, + { + "type": "array", + "items": { "$ref": "#/definitions/inline-package" } + } + ] + } + } + }, + "inline-package": { + "type": "object", + "required": ["name", "version"], + "properties": { + "name": { + "type": "string", + "description": "Package name, including 'vendor-name/' prefix." + }, + "type": { + "type": "string" + }, + "target-dir": { + "description": "DEPRECATED: Forces the package to be installed into the given subdirectory path. This is used for autoloading PSR-0 packages that do not contain their full path. Use forward slashes for cross-platform compatibility.", + "type": "string" + }, + "description": { + "type": "string" + }, + "keywords": { + "type": "array", + "items": { + "type": "string" + } + }, + "homepage": { + "type": "string", + "format": "uri" + }, + "version": { + "type": "string" + }, + "time": { + "type": "string" + }, + "license": { + "type": [ + "string", + "array" + ] + }, + "authors": { + "$ref": "#/definitions/authors" + }, + "require": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "replace": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "conflict": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "provide": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "require-dev": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "suggest": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "extra": { + "type": ["object", "array"], + "additionalProperties": true + }, + "autoload": { + "$ref": "#/definitions/autoload" + }, + "archive": { + "type": ["object"], + "properties": { + "exclude": { + "type": "array" + } + } + }, + "bin": { + "type": ["string", "array"], + "description": "A set of files, or a single file, that should be treated as binaries and symlinked into bin-dir (from config).", + "items": { + "type": "string" + } + }, + "include-path": { + "type": ["array"], + "description": "DEPRECATED: A list of directories which should get added to PHP's include path. This is only present to support legacy projects, and all new code should preferably use autoloading.", + "items": { + "type": "string" + } + }, + "source": { + "type": "object", + "required": ["type", "url", "reference"], + "properties": { + "type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "mirrors": { + "type": "array" + } + } + }, + "dist": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "shasum": { + "type": "string" + }, + "mirrors": { + "type": "array" + } + } + } + }, + "additionalProperties": true + } + } +} diff --git a/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php b/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php new file mode 100644 index 0000000..d970ca5 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php @@ -0,0 +1,1013 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +use Composer\Config; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Installer\InstallationManager; +use Composer\IO\IOInterface; +use Composer\Package\AliasPackage; +use Composer\Package\PackageInterface; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Util\Filesystem; +use Composer\Script\ScriptEvents; +use Composer\Util\PackageSorter; + +/** + * @author Igor Wiedler + * @author Jordi Boggiano + */ +class AutoloadGenerator +{ + /** + * @var EventDispatcher + */ + private $eventDispatcher; + + /** + * @var IOInterface + */ + private $io; + + /** + * @var bool + */ + private $devMode = false; + + /** + * @var bool + */ + private $classMapAuthoritative = false; + + /** + * @var bool + */ + private $apcu = false; + + /** + * @var bool + */ + private $runScripts = false; + + public function __construct(EventDispatcher $eventDispatcher, IOInterface $io = null) + { + $this->eventDispatcher = $eventDispatcher; + $this->io = $io; + } + + public function setDevMode($devMode = true) + { + $this->devMode = (bool) $devMode; + } + + /** + * Whether or not generated autoloader considers the class map + * authoritative. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = (bool) $classMapAuthoritative; + } + + /** + * Whether or not generated autoloader considers APCu caching. + * + * @param bool $apcu + */ + public function setApcu($apcu) + { + $this->apcu = (bool) $apcu; + } + + /** + * Set whether to run scripts or not + * + * @param bool $runScripts + */ + public function setRunScripts($runScripts = true) + { + $this->runScripts = (bool) $runScripts; + } + + public function dump(Config $config, InstalledRepositoryInterface $localRepo, PackageInterface $mainPackage, InstallationManager $installationManager, $targetDir, $scanPsr0Packages = false, $suffix = '') + { + if ($this->classMapAuthoritative) { + // Force scanPsr0Packages when classmap is authoritative + $scanPsr0Packages = true; + } + if ($this->runScripts) { + $this->eventDispatcher->dispatchScript(ScriptEvents::PRE_AUTOLOAD_DUMP, $this->devMode, array(), array( + 'optimize' => (bool) $scanPsr0Packages, + )); + } + + $filesystem = new Filesystem(); + $filesystem->ensureDirectoryExists($config->get('vendor-dir')); + // Do not remove double realpath() calls. + // Fixes failing Windows realpath() implementation. + // See https://bugs.php.net/bug.php?id=72738 + $basePath = $filesystem->normalizePath(realpath(realpath(getcwd()))); + $vendorPath = $filesystem->normalizePath(realpath(realpath($config->get('vendor-dir')))); + $useGlobalIncludePath = (bool) $config->get('use-include-path'); + $prependAutoloader = $config->get('prepend-autoloader') === false ? 'false' : 'true'; + $targetDir = $vendorPath.'/'.$targetDir; + $filesystem->ensureDirectoryExists($targetDir); + + $vendorPathCode = $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true); + $vendorPathCode52 = str_replace('__DIR__', 'dirname(__FILE__)', $vendorPathCode); + $vendorPathToTargetDirCode = $filesystem->findShortestPathCode($vendorPath, realpath($targetDir), true); + + $appBaseDirCode = $filesystem->findShortestPathCode($vendorPath, $basePath, true); + $appBaseDirCode = str_replace('__DIR__', '$vendorDir', $appBaseDirCode); + + $namespacesFile = <<buildPackageMap($installationManager, $mainPackage, $localRepo->getCanonicalPackages()); + $autoloads = $this->parseAutoloads($packageMap, $mainPackage, $this->devMode === false); + + // Process the 'psr-0' base directories. + foreach ($autoloads['psr-0'] as $namespace => $paths) { + $exportedPaths = array(); + foreach ($paths as $path) { + $exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); + } + $exportedPrefix = var_export($namespace, true); + $namespacesFile .= " $exportedPrefix => "; + $namespacesFile .= "array(".implode(', ', $exportedPaths)."),\n"; + } + $namespacesFile .= ");\n"; + + // Process the 'psr-4' base directories. + foreach ($autoloads['psr-4'] as $namespace => $paths) { + $exportedPaths = array(); + foreach ($paths as $path) { + $exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); + } + $exportedPrefix = var_export($namespace, true); + $psr4File .= " $exportedPrefix => "; + $psr4File .= "array(".implode(', ', $exportedPaths)."),\n"; + } + $psr4File .= ");\n"; + + $classmapFile = <<getAutoload(); + if ($mainPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) { + $levels = substr_count($filesystem->normalizePath($mainPackage->getTargetDir()), '/') + 1; + $prefixes = implode(', ', array_map(function ($prefix) { + return var_export($prefix, true); + }, array_keys($mainAutoload['psr-0']))); + $baseDirFromTargetDirCode = $filesystem->findShortestPathCode($targetDir, $basePath, true); + + $targetDirLoader = << $paths) { + $namespacesToScan[$namespace][] = array('paths' => $paths, 'type' => $psrType); + } + } + + krsort($namespacesToScan); + + foreach ($namespacesToScan as $namespace => $groups) { + foreach ($groups as $group) { + foreach ($group['paths'] as $dir) { + $dir = $filesystem->normalizePath($filesystem->isAbsolutePath($dir) ? $dir : $basePath.'/'.$dir); + if (!is_dir($dir)) { + continue; + } + + $namespaceFilter = $namespace === '' ? null : $namespace; + $classMap = $this->addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $blacklist, $namespaceFilter, $classMap); + } + } + } + } + + foreach ($autoloads['classmap'] as $dir) { + $classMap = $this->addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $blacklist, null, $classMap); + } + + ksort($classMap); + foreach ($classMap as $class => $code) { + $classmapFile .= ' '.var_export($class, true).' => '.$code; + } + $classmapFile .= ");\n"; + + if (!$suffix) { + if (!$config->get('autoloader-suffix') && is_readable($vendorPath.'/autoload.php')) { + $content = file_get_contents($vendorPath.'/autoload.php'); + if (preg_match('{ComposerAutoloaderInit([^:\s]+)::}', $content, $match)) { + $suffix = $match[1]; + } + } + + if (!$suffix) { + $suffix = $config->get('autoloader-suffix') ?: md5(uniqid('', true)); + } + } + + file_put_contents($targetDir.'/autoload_namespaces.php', $namespacesFile); + file_put_contents($targetDir.'/autoload_psr4.php', $psr4File); + file_put_contents($targetDir.'/autoload_classmap.php', $classmapFile); + $includePathFilePath = $targetDir.'/include_paths.php'; + if ($includePathFileContents = $this->getIncludePathsFile($packageMap, $filesystem, $basePath, $vendorPath, $vendorPathCode52, $appBaseDirCode)) { + file_put_contents($includePathFilePath, $includePathFileContents); + } elseif (file_exists($includePathFilePath)) { + unlink($includePathFilePath); + } + $includeFilesFilePath = $targetDir.'/autoload_files.php'; + if ($includeFilesFileContents = $this->getIncludeFilesFile($autoloads['files'], $filesystem, $basePath, $vendorPath, $vendorPathCode52, $appBaseDirCode)) { + file_put_contents($includeFilesFilePath, $includeFilesFileContents); + } elseif (file_exists($includeFilesFilePath)) { + unlink($includeFilesFilePath); + } + file_put_contents($targetDir.'/autoload_static.php', $this->getStaticFile($suffix, $targetDir, $vendorPath, $basePath, $staticPhpVersion)); + file_put_contents($vendorPath.'/autoload.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix)); + file_put_contents($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion)); + + $this->safeCopy(__DIR__.'/ClassLoader.php', $targetDir.'/ClassLoader.php'); + $this->safeCopy(__DIR__.'/../../../LICENSE', $targetDir.'/LICENSE'); + + if ($this->runScripts) { + $this->eventDispatcher->dispatchScript(ScriptEvents::POST_AUTOLOAD_DUMP, $this->devMode, array(), array( + 'optimize' => (bool) $scanPsr0Packages, + )); + } + + return count($classMap); + } + + private function addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $blacklist = null, $namespaceFilter = null, array $classMap = array()) + { + foreach ($this->generateClassMap($dir, $blacklist, $namespaceFilter) as $class => $path) { + $pathCode = $this->getPathCode($filesystem, $basePath, $vendorPath, $path).",\n"; + if (!isset($classMap[$class])) { + $classMap[$class] = $pathCode; + } elseif ($this->io && $classMap[$class] !== $pathCode && !preg_match('{/(test|fixture|example|stub)s?/}i', strtr($classMap[$class].' '.$path, '\\', '/'))) { + $this->io->writeError( + 'Warning: Ambiguous class resolution, "'.$class.'"'. + ' was found in both "'.str_replace(array('$vendorDir . \'', "',\n"), array($vendorPath, ''), $classMap[$class]).'" and "'.$path.'", the first will be used.' + ); + } + } + + return $classMap; + } + + private function generateClassMap($dir, $blacklist = null, $namespaceFilter = null, $showAmbiguousWarning = true) + { + return ClassMapGenerator::createMap($dir, $blacklist, $showAmbiguousWarning ? $this->io : null, $namespaceFilter); + } + + public function buildPackageMap(InstallationManager $installationManager, PackageInterface $mainPackage, array $packages) + { + // build package => install path map + $packageMap = array(array($mainPackage, '')); + + foreach ($packages as $package) { + if ($package instanceof AliasPackage) { + continue; + } + $this->validatePackage($package); + + $packageMap[] = array( + $package, + $installationManager->getInstallPath($package), + ); + } + + return $packageMap; + } + + /** + * @param PackageInterface $package + * + * @throws \InvalidArgumentException Throws an exception, if the package has illegal settings. + */ + protected function validatePackage(PackageInterface $package) + { + $autoload = $package->getAutoload(); + if (!empty($autoload['psr-4']) && null !== $package->getTargetDir()) { + $name = $package->getName(); + $package->getTargetDir(); + throw new \InvalidArgumentException("PSR-4 autoloading is incompatible with the target-dir property, remove the target-dir in package '$name'."); + } + if (!empty($autoload['psr-4'])) { + foreach ($autoload['psr-4'] as $namespace => $dirs) { + if ($namespace !== '' && '\\' !== substr($namespace, -1)) { + throw new \InvalidArgumentException("psr-4 namespaces must end with a namespace separator, '$namespace' does not, use '$namespace\\'."); + } + } + } + } + + /** + * Compiles an ordered list of namespace => path mappings + * + * @param array $packageMap array of array(package, installDir-relative-to-composer.json) + * @param PackageInterface $mainPackage root package instance + * @param bool $filterOutRequireDevPackages whether to filter out require-dev packages + * @return array array('psr-0' => array('Ns\\Foo' => array('installDir'))) + */ + public function parseAutoloads(array $packageMap, PackageInterface $mainPackage, $filterOutRequireDevPackages = false) + { + $mainPackageMap = array_shift($packageMap); + if ($filterOutRequireDevPackages) { + $packageMap = $this->filterPackageMap($packageMap, $mainPackage); + } + $sortedPackageMap = $this->sortPackageMap($packageMap); + $sortedPackageMap[] = $mainPackageMap; + array_unshift($packageMap, $mainPackageMap); + + $psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $mainPackage); + $psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $mainPackage); + $classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $mainPackage); + $files = $this->parseAutoloadsType($sortedPackageMap, 'files', $mainPackage); + $exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $mainPackage); + + krsort($psr0); + krsort($psr4); + + return array( + 'psr-0' => $psr0, + 'psr-4' => $psr4, + 'classmap' => $classmap, + 'files' => $files, + 'exclude-from-classmap' => $exclude, + ); + } + + /** + * Registers an autoloader based on an autoload map returned by parseAutoloads + * + * @param array $autoloads see parseAutoloads return value + * @return ClassLoader + */ + public function createLoader(array $autoloads) + { + $loader = new ClassLoader(); + + if (isset($autoloads['psr-0'])) { + foreach ($autoloads['psr-0'] as $namespace => $path) { + $loader->add($namespace, $path); + } + } + + if (isset($autoloads['psr-4'])) { + foreach ($autoloads['psr-4'] as $namespace => $path) { + $loader->addPsr4($namespace, $path); + } + } + + if (isset($autoloads['classmap'])) { + $blacklist = null; + if (!empty($autoloads['exclude-from-classmap'])) { + $blacklist = '{(' . implode('|', $autoloads['exclude-from-classmap']) . ')}'; + } + + foreach ($autoloads['classmap'] as $dir) { + try { + $loader->addClassMap($this->generateClassMap($dir, $blacklist, null, false)); + } catch (\RuntimeException $e) { + $this->io->writeError(''.$e->getMessage().''); + } + } + } + + return $loader; + } + + protected function getIncludePathsFile(array $packageMap, Filesystem $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode) + { + $includePaths = array(); + + foreach ($packageMap as $item) { + list($package, $installPath) = $item; + + if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) { + $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); + } + + foreach ($package->getIncludePaths() as $includePath) { + $includePath = trim($includePath, '/'); + $includePaths[] = empty($installPath) ? $includePath : $installPath.'/'.$includePath; + } + } + + if (!$includePaths) { + return; + } + + $includePathsCode = ''; + foreach ($includePaths as $path) { + $includePathsCode .= " " . $this->getPathCode($filesystem, $basePath, $vendorPath, $path) . ",\n"; + } + + return << $functionFile) { + $filesCode .= ' ' . var_export($fileIdentifier, true) . ' => ' + . $this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile) . ",\n"; + } + + if (!$filesCode) { + return false; + } + + return <<isAbsolutePath($path)) { + $path = $basePath . '/' . $path; + } + $path = $filesystem->normalizePath($path); + + $baseDir = ''; + if (strpos($path.'/', $vendorPath.'/') === 0) { + $path = substr($path, strlen($vendorPath)); + $baseDir = '$vendorDir'; + + if ($path !== false) { + $baseDir .= " . "; + } + } else { + $path = $filesystem->normalizePath($filesystem->findShortestPath($basePath, $path, true)); + if (!$filesystem->isAbsolutePath($path)) { + $baseDir = '$baseDir . '; + $path = '/' . $path; + } + } + + if (strpos($path, '.phar') !== false) { + $baseDir = "'phar://' . " . $baseDir; + } + + return $baseDir . (($path !== false) ? var_export($path, true) : ""); + } + + protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix) + { + $lastChar = $vendorPathToTargetDirCode[strlen($vendorPathToTargetDirCode) - 1]; + if ("'" === $lastChar || '"' === $lastChar) { + $vendorPathToTargetDirCode = substr($vendorPathToTargetDirCode, 0, -1).'/autoload_real.php'.$lastChar; + } else { + $vendorPathToTargetDirCode .= " . '/autoload_real.php'"; + } + + return <<= $staticPhpVersion && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if (\$useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInit$suffix::getInitializer(\$loader)); + } else { + +STATIC_INIT; + + if (!$this->classMapAuthoritative) { + $file .= <<<'PSR04' + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + +PSR04; + } + + if ($useClassMap) { + $file .= <<<'CLASSMAP' + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + +CLASSMAP; + } + + $file .= " }\n\n"; + + if ($this->classMapAuthoritative) { + $file .= <<<'CLASSMAPAUTHORITATIVE' + $loader->setClassMapAuthoritative(true); + +CLASSMAPAUTHORITATIVE; + } + + if ($this->apcu) { + $apcuPrefix = substr(base64_encode(md5(uniqid('', true), true)), 0, -3); + $file .= <<setApcuPrefix('$apcuPrefix'); + +APCU; + } + + if ($useGlobalIncludePath) { + $file .= <<<'INCLUDEPATH' + $loader->setUseIncludePath(true); + +INCLUDEPATH; + } + + if ($targetDirLoader) { + $file .= <<register($prependAutoloader); + + +REGISTER_LOADER; + + if ($useIncludeFiles) { + $file .= << \$file) { + composerRequire$suffix(\$fileIdentifier, \$file); + } + + +INCLUDE_FILES; + } + + $file .= << $path) { + $loader->set($namespace, $path); + } + + $map = require $targetDir . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require $targetDir . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + + $filesystem = new Filesystem(); + + $vendorPathCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; + $vendorPharPathCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; + $appBaseDirCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; + $appBaseDirPharCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; + + $absoluteVendorPathCode = ' => ' . substr(var_export(rtrim($vendorDir, '\\/') . '/', true), 0, -1); + $absoluteVendorPharPathCode = ' => ' . substr(var_export(rtrim('phar://' . $vendorDir, '\\/') . '/', true), 0, -1); + $absoluteAppBaseDirCode = ' => ' . substr(var_export(rtrim($baseDir, '\\/') . '/', true), 0, -1); + $absoluteAppBaseDirPharCode = ' => ' . substr(var_export(rtrim('phar://' . $baseDir, '\\/') . '/', true), 0, -1); + + $initializer = ''; + $prefix = "\0Composer\Autoload\ClassLoader\0"; + $prefixLen = strlen($prefix); + if (file_exists($targetDir . '/autoload_files.php')) { + $maps = array('files' => require $targetDir . '/autoload_files.php'); + } else { + $maps = array(); + } + + foreach ((array) $loader as $prop => $value) { + if ($value && 0 === strpos($prop, $prefix)) { + $maps[substr($prop, $prefixLen)] = $value; + } + } + + foreach ($maps as $prop => $value) { + if (count($value) > 32767) { + // Static arrays are limited to 32767 values on PHP 5.6 + // See https://bugs.php.net/68057 + $staticPhpVersion = 70000; + } + $value = strtr( + var_export($value, true), + array( + $absoluteVendorPathCode => $vendorPathCode, + $absoluteVendorPharPathCode => $vendorPharPathCode, + $absoluteAppBaseDirCode => $appBaseDirCode, + $absoluteAppBaseDirPharCode => $appBaseDirPharCode, + ) + ); + $value = ltrim(preg_replace('/^ */m', ' $0$0', $value)); + + $file .= sprintf(" public static $%s = %s;\n\n", $prop, $value); + if ('files' !== $prop) { + $initializer .= " \$loader->$prop = ComposerStaticInit$suffix::\$$prop;\n"; + } + } + + return $file . <<getAutoload(); + if ($this->devMode && $package === $mainPackage) { + $autoload = array_merge_recursive($autoload, $package->getDevAutoload()); + } + + // skip misconfigured packages + if (!isset($autoload[$type]) || !is_array($autoload[$type])) { + continue; + } + if (null !== $package->getTargetDir() && $package !== $mainPackage) { + $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); + } + + foreach ($autoload[$type] as $namespace => $paths) { + foreach ((array) $paths as $path) { + if (($type === 'files' || $type === 'classmap' || $type === 'exclude-from-classmap') && $package->getTargetDir() && !is_readable($installPath.'/'.$path)) { + // remove target-dir from file paths of the root package + if ($package === $mainPackage) { + $targetDir = str_replace('\\', '[\\\\/]', preg_quote(str_replace(array('/', '\\'), '', $package->getTargetDir()))); + $path = ltrim(preg_replace('{^'.$targetDir.'}', '', ltrim($path, '\\/')), '\\/'); + } else { + // add target-dir from file paths that don't have it + $path = $package->getTargetDir() . '/' . $path; + } + } + + if ($type === 'exclude-from-classmap') { + // first escape user input + $path = preg_replace('{/+}', '/', preg_quote(trim(strtr($path, '\\', '/'), '/'))); + + // add support for wildcards * and ** + $path = str_replace('\\*\\*', '.+?', $path); + $path = str_replace('\\*', '[^/]+?', $path); + + // add support for up-level relative paths + $updir = null; + $path = preg_replace_callback( + '{^((?:(?:\\\\\\.){1,2}+/)+)}', + function ($matches) use (&$updir) { + if (isset($matches[1])) { + // undo preg_quote for the matched string + $updir = str_replace('\\.', '.', $matches[1]); + } + + return ''; + }, + $path + ); + if (empty($installPath)) { + $installPath = strtr(getcwd(), '\\', '/'); + } + + $resolvedPath = realpath($installPath . '/' . $updir); + $autoloads[] = preg_quote(strtr($resolvedPath, '\\', '/')) . '/' . $path; + continue; + } + + $relativePath = empty($installPath) ? (empty($path) ? '.' : $path) : $installPath.'/'.$path; + + if ($type === 'files') { + $autoloads[$this->getFileIdentifier($package, $path)] = $relativePath; + continue; + } elseif ($type === 'classmap') { + $autoloads[] = $relativePath; + continue; + } + + $autoloads[$namespace][] = $relativePath; + } + } + } + + return $autoloads; + } + + protected function getFileIdentifier(PackageInterface $package, $path) + { + return md5($package->getName() . ':' . $path); + } + + /** + * Filters out dev-dependencies + * + * @param array $packageMap + * @param PackageInterface $mainPackage + * @return array + */ + protected function filterPackageMap(array $packageMap, PackageInterface $mainPackage) + { + $packages = array(); + $include = array(); + + foreach ($packageMap as $item) { + $package = $item[0]; + $name = $package->getName(); + $packages[$name] = $package; + } + + $add = function (PackageInterface $package) use (&$add, $packages, &$include) { + foreach ($package->getRequires() as $link) { + $target = $link->getTarget(); + if (!isset($include[$target])) { + $include[$target] = true; + if (isset($packages[$target])) { + $add($packages[$target]); + } + } + } + }; + $add($mainPackage); + + return array_filter( + $packageMap, + function ($item) use ($include) { + $package = $item[0]; + foreach ($package->getNames() as $name) { + if (isset($include[$name])) { + return true; + } + } + + return false; + } + ); + } + + /** + * Sorts packages by dependency weight + * + * Packages of equal weight retain the original order + * + * @param array $packageMap + * @return array + */ + protected function sortPackageMap(array $packageMap) + { + $packages = array(); + $paths = array(); + + foreach ($packageMap as $item) { + list($package, $path) = $item; + $name = $package->getName(); + $packages[$name] = $package; + $paths[$name] = $path; + } + + $sortedPackages = PackageSorter::sortPackages($packages); + + + $sortedPackageMap = array(); + + foreach ($sortedPackages as $package) { + $name = $package->getName(); + $sortedPackageMap[] = array($packages[$name], $paths[$name]); + } + + return $sortedPackageMap; + } + + /** + * Copy file using stream_copy_to_stream to work around https://bugs.php.net/bug.php?id=6463 + * + * @param string $source + * @param string $target + */ + protected function safeCopy($source, $target) + { + $source = fopen($source, 'r'); + $target = fopen($target, 'w+'); + + stream_copy_to_stream($source, $target); + fclose($source); + fclose($target); + } +} diff --git a/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php b/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php new file mode 100644 index 0000000..fce8549 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php @@ -0,0 +1,445 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php b/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php new file mode 100644 index 0000000..8467c74 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php @@ -0,0 +1,222 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/* + * This file is copied from the Symfony package. + * + * (c) Fabien Potencier + */ + +namespace Composer\Autoload; + +use Symfony\Component\Finder\Finder; +use Composer\IO\IOInterface; +use Composer\Util\Filesystem; + +/** + * ClassMapGenerator + * + * @author Gyula Sallai + * @author Jordi Boggiano + */ +class ClassMapGenerator +{ + /** + * Generate a class map file + * + * @param \Traversable $dirs Directories or a single path to search in + * @param string $file The name of the class map file + */ + public static function dump($dirs, $file) + { + $maps = array(); + + foreach ($dirs as $dir) { + $maps = array_merge($maps, static::createMap($dir)); + } + + file_put_contents($file, sprintf('files()->followLinks()->name('/\.(php|inc|hh)$/')->in($path); + } else { + throw new \RuntimeException( + 'Could not scan for classes inside "'.$path. + '" which does not appear to be a file nor a folder' + ); + } + } + + $map = array(); + $filesystem = new Filesystem(); + $cwd = realpath(getcwd()); + + foreach ($path as $file) { + $filePath = $file->getPathname(); + if (!in_array(pathinfo($filePath, PATHINFO_EXTENSION), array('php', 'inc', 'hh'))) { + continue; + } + + if (!$filesystem->isAbsolutePath($filePath)) { + $filePath = $cwd . '/' . $filePath; + $filePath = $filesystem->normalizePath($filePath); + } else { + $filePath = preg_replace('{[\\\\/]{2,}}', '/', $filePath); + } + + // check the realpath of the file against the blacklist as the path might be a symlink and the blacklist is realpath'd so symlink are resolved + if ($blacklist && preg_match($blacklist, strtr(realpath($filePath), '\\', '/'))) { + continue; + } + // check non-realpath of file for directories symlink in project dir + if ($blacklist && preg_match($blacklist, strtr($filePath, '\\', '/'))) { + continue; + } + + $classes = self::findClasses($filePath); + + foreach ($classes as $class) { + // skip classes not within the given namespace prefix + if (null !== $namespace && 0 !== strpos($class, $namespace)) { + continue; + } + + if (!isset($map[$class])) { + $map[$class] = $filePath; + } elseif ($io && $map[$class] !== $filePath && !preg_match('{/(test|fixture|example|stub)s?/}i', strtr($map[$class].' '.$filePath, '\\', '/'))) { + $io->writeError( + 'Warning: Ambiguous class resolution, "'.$class.'"'. + ' was found in both "'.$map[$class].'" and "'.$filePath.'", the first will be used.' + ); + } + } + } + + return $map; + } + + /** + * Extract the classes in the given file + * + * @param string $path The file to check + * @throws \RuntimeException + * @return array The found classes + */ + private static function findClasses($path) + { + $extraTypes = PHP_VERSION_ID < 50400 ? '' : '|trait'; + if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=')) { + $extraTypes .= '|enum'; + } + + // Use @ here instead of Silencer to actively suppress 'unhelpful' output + // @link https://github.com/composer/composer/pull/4886 + $contents = @php_strip_whitespace($path); + if (!$contents) { + if (!file_exists($path)) { + $message = 'File at "%s" does not exist, check your classmap definitions'; + } elseif (!is_readable($path)) { + $message = 'File at "%s" is not readable, check its permissions'; + } elseif ('' === trim(file_get_contents($path))) { + // The input file was really empty and thus contains no classes + return array(); + } else { + $message = 'File at "%s" could not be parsed as PHP, it may be binary or corrupted'; + } + $error = error_get_last(); + if (isset($error['message'])) { + $message .= PHP_EOL . 'The following message may be helpful:' . PHP_EOL . $error['message']; + } + throw new \RuntimeException(sprintf($message, $path)); + } + + // return early if there is no chance of matching anything in this file + if (!preg_match('{\b(?:class|interface'.$extraTypes.')\s}i', $contents)) { + return array(); + } + + // strip heredocs/nowdocs + $contents = preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)(?:\s*)\\2(?=\s+|[;,.)])}s', 'null', $contents); + // strip strings + $contents = preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents); + // strip leading non-php code if needed + if (substr($contents, 0, 2) !== '(?:[^<]++|<(?!\?))*+<\?}s', '?>'); + if (false !== $pos && false === strpos(substr($contents, $pos), '])(?Pclass|interface'.$extraTypes.') \s++ (?P[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+) + | \b(?])(?Pnamespace) (?P\s++[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+)? \s*+ [\{;] + ) + }ix', $contents, $matches); + + $classes = array(); + $namespace = ''; + + for ($i = 0, $len = count($matches['type']); $i < $len; $i++) { + if (!empty($matches['ns'][$i])) { + $namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\'; + } else { + $name = $matches['name'][$i]; + // skip anon classes extending/implementing + if ($name === 'extends' || $name === 'implements') { + continue; + } + if ($name[0] === ':') { + // This is an XHP class, https://github.com/facebook/xhp + $name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1); + } elseif ($matches['type'][$i] === 'enum') { + // In Hack, something like: + // enum Foo: int { HERP = '123'; } + // The regex above captures the colon, which isn't part of + // the class name. + $name = rtrim($name, ':'); + } + $classes[] = ltrim($namespace . $name, '\\'); + } + } + + return $classes; + } +} diff --git a/vendor/composer/composer/src/Composer/Cache.php b/vendor/composer/composer/src/Composer/Cache.php new file mode 100644 index 0000000..06c6a09 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Cache.php @@ -0,0 +1,257 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\IO\IOInterface; +use Composer\Util\Filesystem; +use Composer\Util\Silencer; +use Symfony\Component\Finder\Finder; + +/** + * Reads/writes to a filesystem cache + * + * @author Jordi Boggiano + */ +class Cache +{ + private static $cacheCollected = false; + private $io; + private $root; + private $enabled = true; + private $whitelist; + private $filesystem; + + /** + * @param IOInterface $io + * @param string $cacheDir location of the cache + * @param string $whitelist List of characters that are allowed in path names (used in a regex character class) + * @param Filesystem $filesystem optional filesystem instance + */ + public function __construct(IOInterface $io, $cacheDir, $whitelist = 'a-z0-9.', Filesystem $filesystem = null) + { + $this->io = $io; + $this->root = rtrim($cacheDir, '/\\') . '/'; + $this->whitelist = $whitelist; + $this->filesystem = $filesystem ?: new Filesystem(); + + if (!self::isUsable($cacheDir)) { + $this->enabled = false; + + return; + } + + if ( + (!is_dir($this->root) && !Silencer::call('mkdir', $this->root, 0777, true)) + || !is_writable($this->root) + ) { + $this->io->writeError('Cannot create cache directory ' . $this->root . ', or directory is not writable. Proceeding without cache'); + $this->enabled = false; + } + } + + public static function isUsable($path) + { + return !preg_match('{(^|[\\\\/])(\$null|nul|NUL|/dev/null)([\\\\/]|$)}', $path); + } + + public function isEnabled() + { + return $this->enabled; + } + + public function getRoot() + { + return $this->root; + } + + public function read($file) + { + if ($this->enabled) { + $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); + if (file_exists($this->root . $file)) { + $this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); + + return file_get_contents($this->root . $file); + } + } + + return false; + } + + public function write($file, $contents) + { + if ($this->enabled) { + $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); + + $this->io->writeError('Writing '.$this->root . $file.' into cache', true, IOInterface::DEBUG); + + try { + return file_put_contents($this->root . $file, $contents); + } catch (\ErrorException $e) { + $this->io->writeError('Failed to write into cache: '.$e->getMessage().'', true, IOInterface::DEBUG); + if (preg_match('{^file_put_contents\(\): Only ([0-9]+) of ([0-9]+) bytes written}', $e->getMessage(), $m)) { + // Remove partial file. + unlink($this->root . $file); + + $message = sprintf( + 'Writing %1$s into cache failed after %2$u of %3$u bytes written, only %4$u bytes of free space available', + $this->root . $file, + $m[1], + $m[2], + @disk_free_space($this->root . dirname($file)) + ); + + $this->io->writeError($message); + + return false; + } + + throw $e; + } + } + + return false; + } + + /** + * Copy a file into the cache + */ + public function copyFrom($file, $source) + { + if ($this->enabled) { + $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); + $this->filesystem->ensureDirectoryExists(dirname($this->root . $file)); + + if (!file_exists($source)) { + $this->io->writeError(''.$source.' does not exist, can not write into cache'); + } elseif ($this->io->isDebug()) { + $this->io->writeError('Writing '.$this->root . $file.' into cache from '.$source); + } + + return copy($source, $this->root . $file); + } + + return false; + } + + /** + * Copy a file out of the cache + */ + public function copyTo($file, $target) + { + if ($this->enabled) { + $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); + if (file_exists($this->root . $file)) { + try { + touch($this->root . $file, filemtime($this->root . $file), time()); + } catch (\ErrorException $e) { + // fallback in case the above failed due to incorrect ownership + // see https://github.com/composer/composer/issues/4070 + Silencer::call('touch', $this->root . $file); + } + + $this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); + + return copy($this->root . $file, $target); + } + } + + return false; + } + + public function gcIsNecessary() + { + return (!self::$cacheCollected && !mt_rand(0, 50)); + } + + public function remove($file) + { + if ($this->enabled) { + $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); + if (file_exists($this->root . $file)) { + return $this->filesystem->unlink($this->root . $file); + } + } + + return false; + } + + public function clear() + { + if ($this->enabled) { + $this->filesystem->emptyDirectory($this->root); + return true; + } + + return false; + } + + public function gc($ttl, $maxSize) + { + if ($this->enabled) { + $expire = new \DateTime(); + $expire->modify('-'.$ttl.' seconds'); + + $finder = $this->getFinder()->date('until '.$expire->format('Y-m-d H:i:s')); + foreach ($finder as $file) { + $this->filesystem->unlink($file->getPathname()); + } + + $totalSize = $this->filesystem->size($this->root); + if ($totalSize > $maxSize) { + $iterator = $this->getFinder()->sortByAccessedTime()->getIterator(); + while ($totalSize > $maxSize && $iterator->valid()) { + $filepath = $iterator->current()->getPathname(); + $totalSize -= $this->filesystem->size($filepath); + $this->filesystem->unlink($filepath); + $iterator->next(); + } + } + + self::$cacheCollected = true; + + return true; + } + + return false; + } + + public function sha1($file) + { + if ($this->enabled) { + $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); + if (file_exists($this->root . $file)) { + return sha1_file($this->root . $file); + } + } + + return false; + } + + public function sha256($file) + { + if ($this->enabled) { + $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); + if (file_exists($this->root . $file)) { + return hash_file('sha256', $this->root . $file); + } + } + + return false; + } + + protected function getFinder() + { + return Finder::create()->in($this->root)->files(); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/AboutCommand.php b/vendor/composer/composer/src/Composer/Command/AboutCommand.php new file mode 100644 index 0000000..bf1fa0f --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/AboutCommand.php @@ -0,0 +1,48 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Jordi Boggiano + */ +class AboutCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('about') + ->setDescription('Shows the short information about Composer.') + ->setHelp( + <<php composer.phar about +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $this->getIO()->write( + <<Composer - Dependency Manager for PHP +Composer is a dependency manager tracking local dependencies of your projects and libraries. +See https://getcomposer.org/ for more information. +EOT + ); + + return 0; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php b/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php new file mode 100644 index 0000000..d0d9542 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php @@ -0,0 +1,166 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\Config; +use Composer\Composer; +use Composer\Repository\CompositeRepository; +use Composer\Repository\RepositoryFactory; +use Composer\Script\ScriptEvents; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Composer\Util\Filesystem; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Creates an archive of a package for distribution. + * + * @author Nils Adermann + */ +class ArchiveCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('archive') + ->setDescription('Creates an archive of this composer package.') + ->setDefinition(array( + new InputArgument('package', InputArgument::OPTIONAL, 'The package to archive instead of the current project'), + new InputArgument('version', InputArgument::OPTIONAL, 'A version constraint to find the package to archive'), + new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the resulting archive: tar or zip'), + new InputOption('dir', null, InputOption::VALUE_REQUIRED, 'Write the archive to this directory'), + new InputOption('file', null, InputOption::VALUE_REQUIRED, 'Write the archive with the given file name.' + .' Note that the format will be appended.'), + new InputOption('ignore-filters', false, InputOption::VALUE_NONE, 'Ignore filters when saving package'), + )) + ->setHelp( + <<archive command creates an archive of the specified format +containing the files and directories of the Composer project or the specified +package in the specified version and writes it to the specified directory. + +php composer.phar archive [--format=zip] [--dir=/foo] [package [version]] + +Read more at https://getcomposer.org/doc/03-cli.md#archive +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $config = Factory::createConfig(); + $composer = $this->getComposer(false); + if ($composer) { + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'archive', $input, $output); + $eventDispatcher = $composer->getEventDispatcher(); + $eventDispatcher->dispatch($commandEvent->getName(), $commandEvent); + $eventDispatcher->dispatchScript(ScriptEvents::PRE_ARCHIVE_CMD); + } + + if (null === $input->getOption('format')) { + $input->setOption('format', $config->get('archive-format')); + } + if (null === $input->getOption('dir')) { + $input->setOption('dir', $config->get('archive-dir')); + } + + $returnCode = $this->archive( + $this->getIO(), + $config, + $input->getArgument('package'), + $input->getArgument('version'), + $input->getOption('format'), + $input->getOption('dir'), + $input->getOption('file'), + $input->getOption('ignore-filters'), + $composer + ); + + if (0 === $returnCode && $composer) { + $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ARCHIVE_CMD); + } + + return $returnCode; + } + + protected function archive(IOInterface $io, Config $config, $packageName = null, $version = null, $format = 'tar', $dest = '.', $fileName = null, $ignoreFilters = false, Composer $composer = null) + { + if ($composer) { + $archiveManager = $composer->getArchiveManager(); + } else { + $factory = new Factory; + $downloadManager = $factory->createDownloadManager($io, $config); + $archiveManager = $factory->createArchiveManager($config, $downloadManager); + } + + if ($packageName) { + $package = $this->selectPackage($io, $packageName, $version); + + if (!$package) { + return 1; + } + } else { + $package = $this->getComposer()->getPackage(); + } + + $io->writeError('Creating the archive into "'.$dest.'".'); + $packagePath = $archiveManager->archive($package, $format, $dest, $fileName, $ignoreFilters); + $fs = new Filesystem; + $shortPath = $fs->findShortestPath(getcwd(), $packagePath, true); + + $io->writeError('Created: ', false); + $io->write(strlen($shortPath) < strlen($packagePath) ? $shortPath : $packagePath); + + return 0; + } + + protected function selectPackage(IOInterface $io, $packageName, $version = null) + { + $io->writeError('Searching for the specified package.'); + + if ($composer = $this->getComposer(false)) { + $localRepo = $composer->getRepositoryManager()->getLocalRepository(); + $repo = new CompositeRepository(array_merge(array($localRepo), $composer->getRepositoryManager()->getRepositories())); + } else { + $defaultRepos = RepositoryFactory::defaultRepos($this->getIO()); + $io->writeError('No composer.json found in the current directory, searching packages from ' . implode(', ', array_keys($defaultRepos))); + $repo = new CompositeRepository($defaultRepos); + } + + $packages = $repo->findPackages($packageName, $version); + + if (count($packages) > 1) { + $package = reset($packages); + $io->writeError('Found multiple matches, selected '.$package->getPrettyString().'.'); + $io->writeError('Alternatives were '.implode(', ', array_map(function ($p) { + return $p->getPrettyString(); + }, $packages)).'.'); + $io->writeError('Please use a more specific constraint to pick a different package.'); + } elseif ($packages) { + $package = reset($packages); + $io->writeError('Found an exact match '.$package->getPrettyString().'.'); + } else { + $io->writeError('Could not find a package matching '.$packageName.'.'); + + return false; + } + + return $package; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/BaseCommand.php b/vendor/composer/composer/src/Composer/Command/BaseCommand.php new file mode 100644 index 0000000..888b2a7 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/BaseCommand.php @@ -0,0 +1,181 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Composer; +use Composer\Config; +use Composer\Console\Application; +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\IO\NullIO; +use Composer\Plugin\PreCommandRunEvent; +use Composer\Plugin\PluginEvents; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Command\Command; + +/** + * Base class for Composer commands + * + * @author Ryan Weaver + * @author Konstantin Kudryashov + */ +abstract class BaseCommand extends Command +{ + /** + * @var Composer|null + */ + private $composer; + + /** + * @var IOInterface + */ + private $io; + + /** + * @param bool $required + * @param bool|null $disablePlugins + * @throws \RuntimeException + * @return Composer + */ + public function getComposer($required = true, $disablePlugins = null) + { + if (null === $this->composer) { + $application = $this->getApplication(); + if ($application instanceof Application) { + /* @var $application Application */ + $this->composer = $application->getComposer($required, $disablePlugins); + } elseif ($required) { + throw new \RuntimeException( + 'Could not create a Composer\Composer instance, you must inject '. + 'one if this command is not used with a Composer\Console\Application instance' + ); + } + } + + return $this->composer; + } + + /** + * @param Composer $composer + */ + public function setComposer(Composer $composer) + { + $this->composer = $composer; + } + + /** + * Removes the cached composer instance + */ + public function resetComposer() + { + $this->composer = null; + $this->getApplication()->resetComposer(); + } + + /** + * Whether or not this command is meant to call another command. + * + * This is mainly needed to avoid duplicated warnings messages. + * + * @return bool + */ + public function isProxyCommand() + { + return false; + } + + /** + * @return IOInterface + */ + public function getIO() + { + if (null === $this->io) { + $application = $this->getApplication(); + if ($application instanceof Application) { + /* @var $application Application */ + $this->io = $application->getIO(); + } else { + $this->io = new NullIO(); + } + } + + return $this->io; + } + + /** + * @param IOInterface $io + */ + public function setIO(IOInterface $io) + { + $this->io = $io; + } + + /** + * {@inheritDoc} + */ + protected function initialize(InputInterface $input, OutputInterface $output) + { + // initialize a plugin-enabled Composer instance, either local or global + $disablePlugins = $input->hasParameterOption('--no-plugins'); + $composer = $this->getComposer(false, $disablePlugins); + if (null === $composer) { + $composer = Factory::createGlobal($this->getIO(), $disablePlugins); + } + if ($composer) { + $preCommandRunEvent = new PreCommandRunEvent(PluginEvents::PRE_COMMAND_RUN, $input, $this->getName()); + $composer->getEventDispatcher()->dispatch($preCommandRunEvent->getName(), $preCommandRunEvent); + } + + if (true === $input->hasParameterOption(array('--no-ansi')) && $input->hasOption('no-progress')) { + $input->setOption('no-progress', true); + } + + parent::initialize($input, $output); + } + + /** + * Returns preferSource and preferDist values based on the configuration. + * + * @param Config $config + * @param InputInterface $input + * @param bool $keepVcsRequiresPreferSource + * + * @return bool[] An array composed of the preferSource and preferDist values + */ + protected function getPreferredInstallOptions(Config $config, InputInterface $input, $keepVcsRequiresPreferSource = false) + { + $preferSource = false; + $preferDist = false; + + switch ($config->get('preferred-install')) { + case 'source': + $preferSource = true; + break; + case 'dist': + $preferDist = true; + break; + case 'auto': + default: + // noop + break; + } + + if ($input->getOption('prefer-source') || $input->getOption('prefer-dist') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs'))) { + $preferSource = $input->getOption('prefer-source') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs')); + $preferDist = $input->getOption('prefer-dist'); + } + + return array($preferSource, $preferDist); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php b/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php new file mode 100644 index 0000000..78fe055 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php @@ -0,0 +1,255 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\DependencyResolver\Pool; +use Composer\Package\Link; +use Composer\Package\PackageInterface; +use Composer\Repository\ArrayRepository; +use Composer\Repository\CompositeRepository; +use Composer\Repository\PlatformRepository; +use Composer\Repository\RepositoryFactory; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Symfony\Component\Console\Formatter\OutputFormatterStyle; +use Composer\Package\Version\VersionParser; +use Symfony\Component\Console\Helper\Table; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Base implementation for commands mapping dependency relationships. + * + * @author Niels Keurentjes + */ +class BaseDependencyCommand extends BaseCommand +{ + const ARGUMENT_PACKAGE = 'package'; + const ARGUMENT_CONSTRAINT = 'constraint'; + const OPTION_RECURSIVE = 'recursive'; + const OPTION_TREE = 'tree'; + + protected $colors; + + /** + * Set common options and arguments. + */ + protected function configure() + { + $this->setDefinition(array( + new InputArgument(self::ARGUMENT_PACKAGE, InputArgument::REQUIRED, 'Package to inspect'), + new InputArgument(self::ARGUMENT_CONSTRAINT, InputArgument::OPTIONAL, 'Optional version constraint', '*'), + new InputOption(self::OPTION_RECURSIVE, 'r', InputOption::VALUE_NONE, 'Recursively resolves up to the root package'), + new InputOption(self::OPTION_TREE, 't', InputOption::VALUE_NONE, 'Prints the results as a nested tree'), + )); + } + + /** + * Execute the command. + * + * @param InputInterface $input + * @param OutputInterface $output + * @param bool $inverted Whether to invert matching process (why-not vs why behaviour) + * @return int Exit code of the operation. + */ + protected function doExecute(InputInterface $input, OutputInterface $output, $inverted = false) + { + // Emit command event on startup + $composer = $this->getComposer(); + $commandEvent = new CommandEvent(PluginEvents::COMMAND, $this->getName(), $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + // Prepare repositories and set up a pool + $platformOverrides = $composer->getConfig()->get('platform') ?: array(); + $repository = new CompositeRepository(array( + new ArrayRepository(array($composer->getPackage())), + $composer->getRepositoryManager()->getLocalRepository(), + new PlatformRepository(array(), $platformOverrides), + )); + $pool = new Pool(); + $pool->addRepository($repository); + + // Parse package name and constraint + list($needle, $textConstraint) = array_pad( + explode(':', $input->getArgument(self::ARGUMENT_PACKAGE)), + 2, + $input->getArgument(self::ARGUMENT_CONSTRAINT) + ); + + // Find packages that are or provide the requested package first + $packages = $pool->whatProvides(strtolower($needle)); + if (empty($packages)) { + throw new \InvalidArgumentException(sprintf('Could not find package "%s" in your project', $needle)); + } + + // If the version we ask for is not installed then we need to locate it in remote repos and add it. + // This is needed for why-not to resolve conflicts from an uninstalled version against installed packages. + if (!$repository->findPackage($needle, $textConstraint)) { + $defaultRepos = new CompositeRepository(RepositoryFactory::defaultRepos($this->getIO())); + if ($match = $defaultRepos->findPackage($needle, $textConstraint)) { + $repository->addRepository(new ArrayRepository(array(clone $match))); + } + } + + // Include replaced packages for inverted lookups as they are then the actual starting point to consider + $needles = array($needle); + if ($inverted) { + foreach ($packages as $package) { + $needles = array_merge($needles, array_map(function (Link $link) { + return $link->getTarget(); + }, $package->getReplaces())); + } + } + + // Parse constraint if one was supplied + if ('*' !== $textConstraint) { + $versionParser = new VersionParser(); + $constraint = $versionParser->parseConstraints($textConstraint); + } else { + $constraint = null; + } + + // Parse rendering options + $renderTree = $input->getOption(self::OPTION_TREE); + $recursive = $renderTree || $input->getOption(self::OPTION_RECURSIVE); + + // Resolve dependencies + $results = $repository->getDependents($needles, $constraint, $inverted, $recursive); + if (empty($results)) { + $extra = (null !== $constraint) ? sprintf(' in versions %smatching %s', $inverted ? 'not ' : '', $textConstraint) : ''; + $this->getIO()->writeError(sprintf( + 'There is no installed package depending on "%s"%s', + $needle, + $extra + )); + } elseif ($renderTree) { + $this->initStyles($output); + $root = $packages[0]; + $this->getIO()->write(sprintf('%s %s %s', $root->getPrettyName(), $root->getPrettyVersion(), $root->getDescription())); + $this->printTree($results); + } else { + $this->printTable($output, $results); + } + + return 0; + } + + /** + * Assembles and prints a bottom-up table of the dependencies. + * + * @param OutputInterface $output + * @param array $results + */ + protected function printTable(OutputInterface $output, $results) + { + $table = array(); + $doubles = array(); + do { + $queue = array(); + $rows = array(); + foreach ($results as $result) { + /** + * @var PackageInterface $package + * @var Link $link + */ + list($package, $link, $children) = $result; + $unique = (string) $link; + if (isset($doubles[$unique])) { + continue; + } + $doubles[$unique] = true; + $version = (strpos($package->getPrettyVersion(), 'No version set') === 0) ? '-' : $package->getPrettyVersion(); + $rows[] = array($package->getPrettyName(), $version, $link->getDescription(), sprintf('%s (%s)', $link->getTarget(), $link->getPrettyConstraint())); + if ($children) { + $queue = array_merge($queue, $children); + } + } + $results = $queue; + $table = array_merge($rows, $table); + } while (!empty($results)); + + // Render table + $renderer = new Table($output); + $renderer->setStyle('compact'); + $rendererStyle = $renderer->getStyle(); + $rendererStyle->setVerticalBorderChar(''); + $rendererStyle->setCellRowContentFormat('%s '); + $renderer->setRows($table)->render(); + } + + /** + * Init styles for tree + * + * @param OutputInterface $output + */ + protected function initStyles(OutputInterface $output) + { + $this->colors = array( + 'green', + 'yellow', + 'cyan', + 'magenta', + 'blue', + ); + + foreach ($this->colors as $color) { + $style = new OutputFormatterStyle($color); + $output->getFormatter()->setStyle($color, $style); + } + } + + /** + * Recursively prints a tree of the selected results. + * + * @param array $results Results to be printed at this level. + * @param string $prefix Prefix of the current tree level. + * @param int $level Current level of recursion. + */ + protected function printTree($results, $prefix = '', $level = 1) + { + $count = count($results); + $idx = 0; + foreach ($results as $result) { + /** + * @var PackageInterface $package + * @var Link $link + * @var array|bool $children + */ + list($package, $link, $children) = $result; + + $color = $this->colors[$level % count($this->colors)]; + $prevColor = $this->colors[($level - 1) % count($this->colors)]; + $isLast = (++$idx == $count); + $versionText = (strpos($package->getPrettyVersion(), 'No version set') === 0) ? '' : $package->getPrettyVersion(); + $packageText = rtrim(sprintf('<%s>%s %s', $color, $package->getPrettyName(), $versionText)); + $linkText = sprintf('%s <%s>%s %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint()); + $circularWarn = $children === false ? '(circular dependency aborted here)' : ''; + $this->writeTreeLine(rtrim(sprintf("%s%s%s (%s) %s", $prefix, $isLast ? '└──' : '├──', $packageText, $linkText, $circularWarn))); + if ($children) { + $this->printTree($children, $prefix . ($isLast ? ' ' : '│ '), $level + 1); + } + } + } + + private function writeTreeLine($line) + { + $io = $this->getIO(); + if (!$io->isDecorated()) { + $line = str_replace(array('â””', '├', '──', '│'), array('`-', '|-', '-', '|'), $line); + } + + $io->write($line); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php b/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php new file mode 100644 index 0000000..195a2c4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php @@ -0,0 +1,162 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Package\Link; +use Composer\Package\PackageInterface; +use Composer\Semver\Constraint\Constraint; +use Symfony\Component\Console\Helper\Table; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Composer\Repository\PlatformRepository; + +class CheckPlatformReqsCommand extends BaseCommand +{ + protected function configure() + { + $this->setName('check-platform-reqs') + ->setDescription('Check that platform requirements are satisfied.') + ->setDefinition(array( + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables checking of require-dev packages requirements.'), + )) + ->setHelp( + <<php composer.phar check-platform-reqs + +EOT + ); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $composer = $this->getComposer(); + + $requires = $composer->getPackage()->getRequires(); + if ($input->getOption('no-dev')) { + $dependencies = $composer->getLocker()->getLockedRepository(!$input->getOption('no-dev'))->getPackages(); + } else { + $dependencies = $composer->getRepositoryManager()->getLocalRepository()->getPackages(); + // fallback to lockfile if installed repo is empty + if (!$dependencies) { + $dependencies = $composer->getLocker()->getLockedRepository(true)->getPackages(); + } + $requires += $composer->getPackage()->getDevRequires(); + } + foreach ($requires as $require => $link) { + $requires[$require] = array($link); + } + + foreach ($dependencies as $package) { + foreach ($package->getRequires() as $require => $link) { + $requires[$require][] = $link; + } + } + + ksort($requires); + + $platformRepo = new PlatformRepository(array(), array()); + $currentPlatformPackages = $platformRepo->getPackages(); + $currentPlatformPackageMap = array(); + + /** + * @var PackageInterface $currentPlatformPackage + */ + foreach ($currentPlatformPackages as $currentPlatformPackage) { + $currentPlatformPackageMap[$currentPlatformPackage->getName()] = $currentPlatformPackage; + } + + $results = array(); + + $exitCode = 0; + + /** + * @var Link[] $links + */ + foreach ($requires as $require => $links) { + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $require)) { + if (isset($currentPlatformPackageMap[$require])) { + $pass = true; + $version = $currentPlatformPackageMap[$require]->getVersion(); + + foreach ($links as $link) { + if (!$link->getConstraint()->matches(new Constraint('=', $version))) { + $results[] = array( + $currentPlatformPackageMap[$require]->getPrettyName(), + $currentPlatformPackageMap[$require]->getPrettyVersion(), + $link, + 'failed', + ); + $pass = false; + + $exitCode = max($exitCode, 1); + } + } + + if ($pass) { + $results[] = array( + $currentPlatformPackageMap[$require]->getPrettyName(), + $currentPlatformPackageMap[$require]->getPrettyVersion(), + null, + 'success', + ); + } + } else { + $results[] = array( + $require, + 'n/a', + $links[0], + 'missing', + ); + + $exitCode = max($exitCode, 2); + } + } + } + + $this->printTable($output, $results); + + return $exitCode; + } + + protected function printTable(OutputInterface $output, $results) + { + $table = array(); + $rows = array(); + foreach ($results as $result) { + /** + * @var Link|null $link + */ + list($platformPackage, $version, $link, $status) = $result; + $rows[] = array( + $platformPackage, + $version, + $link ? sprintf('%s %s %s (%s)', $link->getSource(), $link->getDescription(), $link->getTarget(), $link->getPrettyConstraint()) : '', + $status, + ); + } + $table = array_merge($rows, $table); + + // Render table + $renderer = new Table($output); + $renderer->setStyle('compact'); + $rendererStyle = $renderer->getStyle(); + $rendererStyle->setVerticalBorderChar(''); + $rendererStyle->setCellRowContentFormat('%s '); + $renderer->setRows($table)->render(); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php b/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php new file mode 100644 index 0000000..08ec047 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php @@ -0,0 +1,76 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Cache; +use Composer\Factory; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author David Neilsen + */ +class ClearCacheCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('clear-cache') + ->setAliases(array('clearcache')) + ->setDescription('Clears composer\'s internal package cache.') + ->setHelp( + <<clear-cache deletes all cached packages from composer's +cache directory. + +Read more at https://getcomposer.org/doc/03-cli.md#clear-cache-clearcache- +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $config = Factory::createConfig(); + $io = $this->getIO(); + + $cachePaths = array( + 'cache-vcs-dir' => $config->get('cache-vcs-dir'), + 'cache-repo-dir' => $config->get('cache-repo-dir'), + 'cache-files-dir' => $config->get('cache-files-dir'), + 'cache-dir' => $config->get('cache-dir'), + ); + + foreach ($cachePaths as $key => $cachePath) { + $cachePath = realpath($cachePath); + if (!$cachePath) { + $io->writeError("Cache directory does not exist ($key): $cachePath"); + + continue; + } + $cache = new Cache($io, $cachePath); + if (!$cache->isEnabled()) { + $io->writeError("Cache is not enabled ($key): $cachePath"); + + continue; + } + + $io->writeError("Clearing cache ($key): $cachePath"); + $cache->clear(); + } + + $io->writeError('All caches cleared.'); + + return 0; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/ConfigCommand.php b/vendor/composer/composer/src/Composer/Command/ConfigCommand.php new file mode 100644 index 0000000..b3efa06 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/ConfigCommand.php @@ -0,0 +1,755 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Util\Platform; +use Composer\Util\Silencer; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Composer\Config; +use Composer\Config\JsonConfigSource; +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\Json\JsonFile; +use Composer\Semver\VersionParser; +use Composer\Package\BasePackage; + +/** + * @author Joshua Estes + * @author Jordi Boggiano + */ +class ConfigCommand extends BaseCommand +{ + /** + * @var Config + */ + protected $config; + + /** + * @var JsonFile + */ + protected $configFile; + + /** + * @var JsonConfigSource + */ + protected $configSource; + + /** + * @var JsonFile + */ + protected $authConfigFile; + + /** + * @var JsonConfigSource + */ + protected $authConfigSource; + + /** + * {@inheritDoc} + */ + protected function configure() + { + $this + ->setName('config') + ->setDescription('Sets config options.') + ->setDefinition(array( + new InputOption('global', 'g', InputOption::VALUE_NONE, 'Apply command to the global config file'), + new InputOption('editor', 'e', InputOption::VALUE_NONE, 'Open editor'), + new InputOption('auth', 'a', InputOption::VALUE_NONE, 'Affect auth config file (only used for --editor)'), + new InputOption('unset', null, InputOption::VALUE_NONE, 'Unset the given setting-key'), + new InputOption('list', 'l', InputOption::VALUE_NONE, 'List configuration settings'), + new InputOption('file', 'f', InputOption::VALUE_REQUIRED, 'If you want to choose a different composer.json or config.json'), + new InputOption('absolute', null, InputOption::VALUE_NONE, 'Returns absolute paths when fetching *-dir config values instead of relative'), + new InputArgument('setting-key', null, 'Setting key'), + new InputArgument('setting-value', InputArgument::IS_ARRAY, 'Setting value'), + )) + ->setHelp( + <<%command.full_name% bin-dir bin/ + +To read a config setting: + + %command.full_name% bin-dir + Outputs: bin + +To edit the global config.json file: + + %command.full_name% --global + +To add a repository: + + %command.full_name% repositories.foo vcs https://bar.com + +To remove a repository (repo is a short alias for repositories): + + %command.full_name% --unset repo.foo + +To disable packagist: + + %command.full_name% repo.packagist false + +You can alter repositories in the global config.json file by passing in the +--global option. + +To edit the file in an external editor: + + %command.full_name% --editor + +To choose your editor you can set the "EDITOR" env variable. + +To get a list of configuration values in the file: + + %command.full_name% --list + +You can always pass more than one option. As an example, if you want to edit the +global config.json file. + + %command.full_name% --editor --global + +Read more at https://getcomposer.org/doc/03-cli.md#config +EOT + ) + ; + } + + /** + * {@inheritDoc} + */ + protected function initialize(InputInterface $input, OutputInterface $output) + { + parent::initialize($input, $output); + + if ($input->getOption('global') && null !== $input->getOption('file')) { + throw new \RuntimeException('--file and --global can not be combined'); + } + + $io = $this->getIO(); + $this->config = Factory::createConfig($io); + + // Get the local composer.json, global config.json, or if the user + // passed in a file to use + $configFile = $input->getOption('global') + ? ($this->config->get('home') . '/config.json') + : ($input->getOption('file') ?: Factory::getComposerFile()); + + // Create global composer.json if this was invoked using `composer global config` + if ( + ($configFile === 'composer.json' || $configFile === './composer.json') + && !file_exists($configFile) + && realpath(getcwd()) === realpath($this->config->get('home')) + ) { + file_put_contents($configFile, "{\n}\n"); + } + + $this->configFile = new JsonFile($configFile, null, $io); + $this->configSource = new JsonConfigSource($this->configFile); + + $authConfigFile = $input->getOption('global') + ? ($this->config->get('home') . '/auth.json') + : dirname(realpath($configFile)) . '/auth.json'; + + $this->authConfigFile = new JsonFile($authConfigFile, null, $io); + $this->authConfigSource = new JsonConfigSource($this->authConfigFile, true); + + // Initialize the global file if it's not there, ignoring any warnings or notices + if ($input->getOption('global') && !$this->configFile->exists()) { + touch($this->configFile->getPath()); + $this->configFile->write(array('config' => new \ArrayObject)); + Silencer::call('chmod', $this->configFile->getPath(), 0600); + } + if ($input->getOption('global') && !$this->authConfigFile->exists()) { + touch($this->authConfigFile->getPath()); + $this->authConfigFile->write(array('bitbucket-oauth' => new \ArrayObject, 'github-oauth' => new \ArrayObject, 'gitlab-oauth' => new \ArrayObject, 'gitlab-token' => new \ArrayObject, 'http-basic' => new \ArrayObject)); + Silencer::call('chmod', $this->authConfigFile->getPath(), 0600); + } + + if (!$this->configFile->exists()) { + throw new \RuntimeException(sprintf('File "%s" cannot be found in the current directory', $configFile)); + } + } + + /** + * {@inheritDoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + // Open file in editor + if ($input->getOption('editor')) { + $editor = escapeshellcmd(getenv('EDITOR')); + if (!$editor) { + if (Platform::isWindows()) { + $editor = 'notepad'; + } else { + foreach (array('editor', 'vim', 'vi', 'nano', 'pico', 'ed') as $candidate) { + if (exec('which '.$candidate)) { + $editor = $candidate; + break; + } + } + } + } + + $file = $input->getOption('auth') ? $this->authConfigFile->getPath() : $this->configFile->getPath(); + system($editor . ' ' . $file . (Platform::isWindows() ? '' : ' > `tty`')); + + return 0; + } + + if (!$input->getOption('global')) { + $this->config->merge($this->configFile->read()); + $this->config->merge(array('config' => $this->authConfigFile->exists() ? $this->authConfigFile->read() : array())); + } + + // List the configuration of the file settings + if ($input->getOption('list')) { + $this->listConfiguration($this->config->all(), $this->config->raw(), $output); + + return 0; + } + + $settingKey = $input->getArgument('setting-key'); + if (!$settingKey) { + return 0; + } + + // If the user enters in a config variable, parse it and save to file + if (array() !== $input->getArgument('setting-value') && $input->getOption('unset')) { + throw new \RuntimeException('You can not combine a setting value with --unset'); + } + + // show the value if no value is provided + if (array() === $input->getArgument('setting-value') && !$input->getOption('unset')) { + $properties = array('name', 'type', 'description', 'homepage', 'version', 'minimum-stability', 'prefer-stable', 'keywords', 'license', 'extra'); + $rawData = $this->configFile->read(); + $data = $this->config->all(); + if (preg_match('/^repos?(?:itories)?(?:\.(.+))?/', $settingKey, $matches)) { + if (!isset($matches[1]) || $matches[1] === '') { + $value = isset($data['repositories']) ? $data['repositories'] : array(); + } else { + if (!isset($data['repositories'][$matches[1]])) { + throw new \InvalidArgumentException('There is no '.$matches[1].' repository defined'); + } + + $value = $data['repositories'][$matches[1]]; + } + } elseif (strpos($settingKey, '.')) { + $bits = explode('.', $settingKey); + if ($bits[0] === 'extra') { + $data = $rawData; + } else { + $data = $data['config']; + } + $match = false; + foreach ($bits as $bit) { + $key = isset($key) ? $key.'.'.$bit : $bit; + $match = false; + if (isset($data[$key])) { + $match = true; + $data = $data[$key]; + unset($key); + } + } + + if (!$match) { + throw new \RuntimeException($settingKey.' is not defined.'); + } + + $value = $data; + } elseif (isset($data['config'][$settingKey])) { + $value = $this->config->get($settingKey, $input->getOption('absolute') ? 0 : Config::RELATIVE_PATHS); + } elseif (in_array($settingKey, $properties, true) && isset($rawData[$settingKey])) { + $value = $rawData[$settingKey]; + } else { + throw new \RuntimeException($settingKey.' is not defined'); + } + + if (is_array($value)) { + $value = json_encode($value); + } + + $this->getIO()->write($value, true, IOInterface::QUIET); + + return 0; + } + + $values = $input->getArgument('setting-value'); // what the user is trying to add/change + + $booleanValidator = function ($val) { + return in_array($val, array('true', 'false', '1', '0'), true); + }; + $booleanNormalizer = function ($val) { + return $val !== 'false' && (bool) $val; + }; + + // handle config values + $uniqueConfigValues = array( + 'process-timeout' => array('is_numeric', 'intval'), + 'use-include-path' => array($booleanValidator, $booleanNormalizer), + 'use-github-api' => array($booleanValidator, $booleanNormalizer), + 'preferred-install' => array( + function ($val) { + return in_array($val, array('auto', 'source', 'dist'), true); + }, + function ($val) { + return $val; + }, + ), + 'store-auths' => array( + function ($val) { + return in_array($val, array('true', 'false', 'prompt'), true); + }, + function ($val) { + if ('prompt' === $val) { + return 'prompt'; + } + + return $val !== 'false' && (bool) $val; + }, + ), + 'notify-on-install' => array($booleanValidator, $booleanNormalizer), + 'vendor-dir' => array('is_string', function ($val) { + return $val; + }), + 'bin-dir' => array('is_string', function ($val) { + return $val; + }), + 'archive-dir' => array('is_string', function ($val) { + return $val; + }), + 'archive-format' => array('is_string', function ($val) { + return $val; + }), + 'data-dir' => array('is_string', function ($val) { + return $val; + }), + 'cache-dir' => array('is_string', function ($val) { + return $val; + }), + 'cache-files-dir' => array('is_string', function ($val) { + return $val; + }), + 'cache-repo-dir' => array('is_string', function ($val) { + return $val; + }), + 'cache-vcs-dir' => array('is_string', function ($val) { + return $val; + }), + 'cache-ttl' => array('is_numeric', 'intval'), + 'cache-files-ttl' => array('is_numeric', 'intval'), + 'cache-files-maxsize' => array( + function ($val) { + return preg_match('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', $val) > 0; + }, + function ($val) { + return $val; + }, + ), + 'bin-compat' => array( + function ($val) { + return in_array($val, array('auto', 'full')); + }, + function ($val) { + return $val; + }, + ), + 'discard-changes' => array( + function ($val) { + return in_array($val, array('stash', 'true', 'false', '1', '0'), true); + }, + function ($val) { + if ('stash' === $val) { + return 'stash'; + } + + return $val !== 'false' && (bool) $val; + }, + ), + 'autoloader-suffix' => array('is_string', function ($val) { + return $val === 'null' ? null : $val; + }), + 'sort-packages' => array($booleanValidator, $booleanNormalizer), + 'optimize-autoloader' => array($booleanValidator, $booleanNormalizer), + 'classmap-authoritative' => array($booleanValidator, $booleanNormalizer), + 'apcu-autoloader' => array($booleanValidator, $booleanNormalizer), + 'prepend-autoloader' => array($booleanValidator, $booleanNormalizer), + 'disable-tls' => array($booleanValidator, $booleanNormalizer), + 'secure-http' => array($booleanValidator, $booleanNormalizer), + 'cafile' => array( + function ($val) { + return file_exists($val) && is_readable($val); + }, + function ($val) { + return $val === 'null' ? null : $val; + }, + ), + 'capath' => array( + function ($val) { + return is_dir($val) && is_readable($val); + }, + function ($val) { + return $val === 'null' ? null : $val; + }, + ), + 'github-expose-hostname' => array($booleanValidator, $booleanNormalizer), + 'htaccess-protect' => array($booleanValidator, $booleanNormalizer), + ); + $multiConfigValues = array( + 'github-protocols' => array( + function ($vals) { + if (!is_array($vals)) { + return 'array expected'; + } + + foreach ($vals as $val) { + if (!in_array($val, array('git', 'https', 'ssh'))) { + return 'valid protocols include: git, https, ssh'; + } + } + + return true; + }, + function ($vals) { + return $vals; + }, + ), + 'github-domains' => array( + function ($vals) { + if (!is_array($vals)) { + return 'array expected'; + } + + return true; + }, + function ($vals) { + return $vals; + }, + ), + 'gitlab-domains' => array( + function ($vals) { + if (!is_array($vals)) { + return 'array expected'; + } + + return true; + }, + function ($vals) { + return $vals; + }, + ), + ); + + if ($input->getOption('unset') && (isset($uniqueConfigValues[$settingKey]) || isset($multiConfigValues[$settingKey]))) { + if ($settingKey === 'disable-tls' && $this->config->get('disable-tls')) { + $this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); + } + + $this->configSource->removeConfigSetting($settingKey); + + return 0; + } + if (isset($uniqueConfigValues[$settingKey])) { + $this->handleSingleValue($settingKey, $uniqueConfigValues[$settingKey], $values, 'addConfigSetting'); + + return 0; + } + if (isset($multiConfigValues[$settingKey])) { + $this->handleMultiValue($settingKey, $multiConfigValues[$settingKey], $values, 'addConfigSetting'); + + return 0; + } + + // handle properties + $uniqueProps = array( + 'name' => array('is_string', function ($val) { + return $val; + }), + 'type' => array('is_string', function ($val) { + return $val; + }), + 'description' => array('is_string', function ($val) { + return $val; + }), + 'homepage' => array('is_string', function ($val) { + return $val; + }), + 'version' => array('is_string', function ($val) { + return $val; + }), + 'minimum-stability' => array( + function ($val) { + return isset(BasePackage::$stabilities[VersionParser::normalizeStability($val)]); + }, + function ($val) { + return VersionParser::normalizeStability($val); + }, + ), + 'prefer-stable' => array($booleanValidator, $booleanNormalizer), + ); + $multiProps = array( + 'keywords' => array( + function ($vals) { + if (!is_array($vals)) { + return 'array expected'; + } + + return true; + }, + function ($vals) { + return $vals; + }, + ), + 'license' => array( + function ($vals) { + if (!is_array($vals)) { + return 'array expected'; + } + + return true; + }, + function ($vals) { + return $vals; + }, + ), + ); + + if ($input->getOption('global') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]) || substr($settingKey, 0, 6) === 'extra.')) { + throw new \InvalidArgumentException('The '.$settingKey.' property can not be set in the global config.json file. Use `composer global config` to apply changes to the global composer.json'); + } + if ($input->getOption('unset') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]))) { + $this->configSource->removeProperty($settingKey); + + return 0; + } + if (isset($uniqueProps[$settingKey])) { + $this->handleSingleValue($settingKey, $uniqueProps[$settingKey], $values, 'addProperty'); + + return 0; + } + if (isset($multiProps[$settingKey])) { + $this->handleMultiValue($settingKey, $multiProps[$settingKey], $values, 'addProperty'); + + return 0; + } + + // handle repositories + if (preg_match('/^repos?(?:itories)?\.(.+)/', $settingKey, $matches)) { + if ($input->getOption('unset')) { + $this->configSource->removeRepository($matches[1]); + + return 0; + } + + if (2 === count($values)) { + $this->configSource->addRepository($matches[1], array( + 'type' => $values[0], + 'url' => $values[1], + )); + + return 0; + } + + if (1 === count($values)) { + $value = strtolower($values[0]); + if (true === $booleanValidator($value)) { + if (false === $booleanNormalizer($value)) { + $this->configSource->addRepository($matches[1], false); + + return 0; + } + } else { + $value = JsonFile::parseJson($values[0]); + $this->configSource->addRepository($matches[1], $value); + + return 0; + } + } + + throw new \RuntimeException('You must pass the type and a url. Example: php composer.phar config repositories.foo vcs https://bar.com'); + } + + // handle extra + if (preg_match('/^extra\.(.+)/', $settingKey, $matches)) { + if ($input->getOption('unset')) { + $this->configSource->removeProperty($settingKey); + + return 0; + } + + $this->configSource->addProperty($settingKey, $values[0]); + + return 0; + } + + // handle platform + if (preg_match('/^platform\.(.+)/', $settingKey, $matches)) { + if ($input->getOption('unset')) { + $this->configSource->removeConfigSetting($settingKey); + + return 0; + } + + $this->configSource->addConfigSetting($settingKey, $values[0]); + + return 0; + } + if ($settingKey === 'platform' && $input->getOption('unset')) { + $this->configSource->removeConfigSetting($settingKey); + + return 0; + } + + // handle auth + if (preg_match('/^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic)\.(.+)/', $settingKey, $matches)) { + if ($input->getOption('unset')) { + $this->authConfigSource->removeConfigSetting($matches[1].'.'.$matches[2]); + $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); + + return 0; + } + + if ($matches[1] === 'bitbucket-oauth') { + if (2 !== count($values)) { + throw new \RuntimeException('Expected two arguments (consumer-key, consumer-secret), got '.count($values)); + } + $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); + $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], array('consumer-key' => $values[0], 'consumer-secret' => $values[1])); + } elseif (in_array($matches[1], array('github-oauth', 'gitlab-oauth', 'gitlab-token'), true)) { + if (1 !== count($values)) { + throw new \RuntimeException('Too many arguments, expected only one token'); + } + $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); + $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], $values[0]); + } elseif ($matches[1] === 'http-basic') { + if (2 !== count($values)) { + throw new \RuntimeException('Expected two arguments (username, password), got '.count($values)); + } + $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); + $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], array('username' => $values[0], 'password' => $values[1])); + } + + return 0; + } + + // handle script + if (preg_match('/^scripts\.(.+)/', $settingKey, $matches)) { + if ($input->getOption('unset')) { + $this->configSource->removeProperty($settingKey); + + return 0; + } + + $this->configSource->addProperty($settingKey, count($values) > 1 ? $values : $values[0]); + + return 0; + } + + throw new \InvalidArgumentException('Setting '.$settingKey.' does not exist or is not supported by this command'); + } + + protected function handleSingleValue($key, array $callbacks, array $values, $method) + { + list($validator, $normalizer) = $callbacks; + if (1 !== count($values)) { + throw new \RuntimeException('You can only pass one value. Example: php composer.phar config process-timeout 300'); + } + + if (true !== $validation = $validator($values[0])) { + throw new \RuntimeException(sprintf( + '"%s" is an invalid value'.($validation ? ' ('.$validation.')' : ''), + $values[0] + )); + } + + $normalizedValue = $normalizer($values[0]); + + if ($key === 'disable-tls') { + if (!$normalizedValue && $this->config->get('disable-tls')) { + $this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); + } elseif ($normalizedValue && !$this->config->get('disable-tls')) { + $this->getIO()->writeError('You are now running Composer with SSL/TLS protection disabled.'); + } + } + + return call_user_func(array($this->configSource, $method), $key, $normalizedValue); + } + + protected function handleMultiValue($key, array $callbacks, array $values, $method) + { + list($validator, $normalizer) = $callbacks; + if (true !== $validation = $validator($values)) { + throw new \RuntimeException(sprintf( + '%s is an invalid value'.($validation ? ' ('.$validation.')' : ''), + json_encode($values) + )); + } + + return call_user_func(array($this->configSource, $method), $key, $normalizer($values)); + } + + /** + * Display the contents of the file in a pretty formatted way + * + * @param array $contents + * @param array $rawContents + * @param OutputInterface $output + * @param string|null $k + */ + protected function listConfiguration(array $contents, array $rawContents, OutputInterface $output, $k = null) + { + $origK = $k; + $io = $this->getIO(); + foreach ($contents as $key => $value) { + if ($k === null && !in_array($key, array('config', 'repositories'))) { + continue; + } + + $rawVal = isset($rawContents[$key]) ? $rawContents[$key] : null; + + if (is_array($value) && (!is_numeric(key($value)) || ($key === 'repositories' && null === $k))) { + $k .= preg_replace('{^config\.}', '', $key . '.'); + $this->listConfiguration($value, $rawVal, $output, $k); + $k = $origK; + + continue; + } + + if (is_array($value)) { + $value = array_map(function ($val) { + return is_array($val) ? json_encode($val) : $val; + }, $value); + + $value = '['.implode(', ', $value).']'; + } + + if (is_bool($value)) { + $value = var_export($value, true); + } + + if (is_string($rawVal) && $rawVal != $value) { + $io->write('[' . $k . $key . '] ' . $rawVal . ' (' . $value . ')', true, IOInterface::QUIET); + } else { + $io->write('[' . $k . $key . '] ' . $value . '', true, IOInterface::QUIET); + } + } + } +} diff --git a/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php b/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php new file mode 100644 index 0000000..2985aa5 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php @@ -0,0 +1,387 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Config; +use Composer\Factory; +use Composer\Installer; +use Composer\Installer\ProjectInstaller; +use Composer\Installer\InstallationManager; +use Composer\Installer\SuggestedPackagesReporter; +use Composer\IO\IOInterface; +use Composer\Package\BasePackage; +use Composer\DependencyResolver\Pool; +use Composer\DependencyResolver\Operation\InstallOperation; +use Composer\Package\Version\VersionSelector; +use Composer\Package\AliasPackage; +use Composer\Repository\RepositoryFactory; +use Composer\Repository\CompositeRepository; +use Composer\Repository\PlatformRepository; +use Composer\Repository\InstalledFilesystemRepository; +use Composer\Script\ScriptEvents; +use Composer\Util\Silencer; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Finder\Finder; +use Composer\Json\JsonFile; +use Composer\Config\JsonConfigSource; +use Composer\Util\Filesystem; +use Composer\Package\Version\VersionParser; + +/** + * Install a package as new project into new directory. + * + * @author Benjamin Eberlei + * @author Jordi Boggiano + * @author Tobias Munk + * @author Nils Adermann + */ +class CreateProjectCommand extends BaseCommand +{ + /** + * @var SuggestedPackagesReporter + */ + protected $suggestedPackagesReporter; + + protected function configure() + { + $this + ->setName('create-project') + ->setDescription('Creates new project from a package into given directory.') + ->setDefinition(array( + new InputArgument('package', InputArgument::OPTIONAL, 'Package name to be installed'), + new InputArgument('directory', InputArgument::OPTIONAL, 'Directory where the files should be created'), + new InputArgument('version', InputArgument::OPTIONAL, 'Version, will default to latest'), + new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum-stability allowed (unless a version is specified).'), + new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), + new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), + new InputOption('repository', null, InputOption::VALUE_REQUIRED, 'Pick a different repository (as url or json config) to look for the package.'), + new InputOption('repository-url', null, InputOption::VALUE_REQUIRED, 'DEPRECATED: Use --repository instead.'), + new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), + new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), + new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Whether to prevent execution of all defined scripts in the root package.'), + new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), + new InputOption('no-secure-http', null, InputOption::VALUE_NONE, 'Disable the secure-http config option temporarily while installing the root package. Use at your own risk. Using this flag is a bad idea.'), + new InputOption('keep-vcs', null, InputOption::VALUE_NONE, 'Whether to prevent deleting the vcs folder.'), + new InputOption('remove-vcs', null, InputOption::VALUE_NONE, 'Whether to force deletion of the vcs folder without prompting.'), + new InputOption('no-install', null, InputOption::VALUE_NONE, 'Whether to skip installation of the package dependencies.'), + new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), + )) + ->setHelp( + <<create-project command creates a new project from a given +package into a new directory. If executed without params and in a directory +with a composer.json file it installs the packages for the current project. + +You can use this command to bootstrap new projects or setup a clean +version-controlled installation for developers of your project. + +php composer.phar create-project vendor/project target-directory [version] + +You can also specify the version with the package name using = or : as separator. + +php composer.phar create-project vendor/project:version target-directory + +To install unstable packages, either specify the version you want, or use the +--stability=dev (where dev can be one of RC, beta, alpha or dev). + +To setup a developer workable version you should create the project using the source +controlled code by appending the '--prefer-source' flag. + +To install a package from another repository than the default one you +can pass the '--repository=https://myrepository.org' flag. + +Read more at https://getcomposer.org/doc/03-cli.md#create-project +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $config = Factory::createConfig(); + $io = $this->getIO(); + + list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input, true); + + if ($input->getOption('dev')) { + $io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); + } + if ($input->getOption('no-custom-installers')) { + $io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); + $input->setOption('no-plugins', true); + } + + return $this->installProject( + $io, + $config, + $input, + $input->getArgument('package'), + $input->getArgument('directory'), + $input->getArgument('version'), + $input->getOption('stability'), + $preferSource, + $preferDist, + !$input->getOption('no-dev'), + $input->getOption('repository') ?: $input->getOption('repository-url'), + $input->getOption('no-plugins'), + $input->getOption('no-scripts'), + $input->getOption('no-progress'), + $input->getOption('no-install'), + $input->getOption('ignore-platform-reqs'), + !$input->getOption('no-secure-http') + ); + } + + public function installProject(IOInterface $io, Config $config, InputInterface $input, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repository = null, $disablePlugins = false, $noScripts = false, $noProgress = false, $noInstall = false, $ignorePlatformReqs = false, $secureHttp = true) + { + $oldCwd = getcwd(); + + // we need to manually load the configuration to pass the auth credentials to the io interface! + $io->loadConfiguration($config); + + $this->suggestedPackagesReporter = new SuggestedPackagesReporter($io); + + if ($packageName !== null) { + $installedFromVcs = $this->installRootPackage($io, $config, $packageName, $directory, $packageVersion, $stability, $preferSource, $preferDist, $installDevPackages, $repository, $disablePlugins, $noScripts, $noProgress, $ignorePlatformReqs, $secureHttp); + } else { + $installedFromVcs = false; + } + + $composer = Factory::create($io, null, $disablePlugins); + $composer->getDownloadManager()->setOutputProgress(!$noProgress); + + $fs = new Filesystem(); + + if ($noScripts === false) { + // dispatch event + $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ROOT_PACKAGE_INSTALL, $installDevPackages); + } + + // use the new config including the newly installed project + $config = $composer->getConfig(); + list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); + + // install dependencies of the created project + if ($noInstall === false) { + $installer = Installer::create($io, $composer); + $installer->setPreferSource($preferSource) + ->setPreferDist($preferDist) + ->setDevMode($installDevPackages) + ->setRunScripts(!$noScripts) + ->setIgnorePlatformRequirements($ignorePlatformReqs) + ->setSuggestedPackagesReporter($this->suggestedPackagesReporter) + ->setOptimizeAutoloader($config->get('optimize-autoloader')) + ->setClassMapAuthoritative($config->get('classmap-authoritative')) + ->setApcuAutoloader($config->get('apcu-autoloader')); + + if ($disablePlugins) { + $installer->disablePlugins(); + } + + $status = $installer->run(); + if (0 !== $status) { + return $status; + } + } + + $hasVcs = $installedFromVcs; + if ( + !$input->getOption('keep-vcs') + && $installedFromVcs + && ( + $input->getOption('remove-vcs') + || !$io->isInteractive() + || $io->askConfirmation('Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? ', true) + ) + ) { + $finder = new Finder(); + $finder->depth(0)->directories()->in(getcwd())->ignoreVCS(false)->ignoreDotFiles(false); + foreach (array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.fslckout', '_FOSSIL_') as $vcsName) { + $finder->name($vcsName); + } + + try { + $dirs = iterator_to_array($finder); + unset($finder); + foreach ($dirs as $dir) { + if (!$fs->removeDirectory($dir)) { + throw new \RuntimeException('Could not remove '.$dir); + } + } + } catch (\Exception $e) { + $io->writeError('An error occurred while removing the VCS metadata: '.$e->getMessage().''); + } + + $hasVcs = false; + } + + // rewriting self.version dependencies with explicit version numbers if the package's vcs metadata is gone + if (!$hasVcs) { + $package = $composer->getPackage(); + $configSource = new JsonConfigSource(new JsonFile('composer.json')); + foreach (BasePackage::$supportedLinkTypes as $type => $meta) { + foreach ($package->{'get'.$meta['method']}() as $link) { + if ($link->getPrettyConstraint() === 'self.version') { + $configSource->addLink($type, $link->getTarget(), $package->getPrettyVersion()); + } + } + } + } + + if ($noScripts === false) { + // dispatch event + $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_CREATE_PROJECT_CMD, $installDevPackages); + } + + chdir($oldCwd); + $vendorComposerDir = $config->get('vendor-dir').'/composer'; + if (is_dir($vendorComposerDir) && $fs->isDirEmpty($vendorComposerDir)) { + Silencer::call('rmdir', $vendorComposerDir); + $vendorDir = $config->get('vendor-dir'); + if (is_dir($vendorDir) && $fs->isDirEmpty($vendorDir)) { + Silencer::call('rmdir', $vendorDir); + } + } + + return 0; + } + + protected function installRootPackage(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repository = null, $disablePlugins = false, $noScripts = false, $noProgress = false, $ignorePlatformReqs = false, $secureHttp = true) + { + if (!$secureHttp) { + $config->merge(array('config' => array('secure-http' => false))); + } + + if (null === $repository) { + $sourceRepo = new CompositeRepository(RepositoryFactory::defaultRepos($io, $config)); + } else { + $sourceRepo = RepositoryFactory::fromString($io, $config, $repository, true); + } + + $parser = new VersionParser(); + $requirements = $parser->parseNameVersionPairs(array($packageName)); + $name = strtolower($requirements[0]['name']); + if (!$packageVersion && isset($requirements[0]['version'])) { + $packageVersion = $requirements[0]['version']; + } + + if (null === $stability) { + if (preg_match('{^[^,\s]*?@('.implode('|', array_keys(BasePackage::$stabilities)).')$}i', $packageVersion, $match)) { + $stability = $match[1]; + } else { + $stability = VersionParser::parseStability($packageVersion); + } + } + + $stability = VersionParser::normalizeStability($stability); + + if (!isset(BasePackage::$stabilities[$stability])) { + throw new \InvalidArgumentException('Invalid stability provided ('.$stability.'), must be one of: '.implode(', ', array_keys(BasePackage::$stabilities))); + } + + $pool = new Pool($stability); + $pool->addRepository($sourceRepo); + + $phpVersion = null; + $prettyPhpVersion = null; + if (!$ignorePlatformReqs) { + $platformOverrides = $config->get('platform') ?: array(); + // initialize $this->repos as it is used by the parent InitCommand + $platform = new PlatformRepository(array(), $platformOverrides); + $phpPackage = $platform->findPackage('php', '*'); + $phpVersion = $phpPackage->getVersion(); + $prettyPhpVersion = $phpPackage->getPrettyVersion(); + } + + // find the latest version if there are multiple + $versionSelector = new VersionSelector($pool); + $package = $versionSelector->findBestCandidate($name, $packageVersion, $phpVersion, $stability); + + if (!$package) { + $errorMessage = "Could not find package $name with " . ($packageVersion ? "version $packageVersion" : "stability $stability"); + if ($phpVersion && $versionSelector->findBestCandidate($name, $packageVersion, null, $stability)) { + throw new \InvalidArgumentException($errorMessage .' in a version installable using your PHP version '.$prettyPhpVersion.'.'); + } + + throw new \InvalidArgumentException($errorMessage .'.'); + } + + if (null === $directory) { + $parts = explode("/", $name, 2); + $directory = getcwd() . DIRECTORY_SEPARATOR . array_pop($parts); + } + + // handler Ctrl+C for unix-like systems + if (function_exists('pcntl_async_signals')) { + @mkdir($directory, 0777, true); + if ($realDir = realpath($directory)) { + pcntl_async_signals(true); + pcntl_signal(SIGINT, function () use ($realDir) { + $fs = new Filesystem(); + $fs->removeDirectory($realDir); + exit(130); + }); + } + } + + $io->writeError('Installing ' . $package->getName() . ' (' . $package->getFullPrettyVersion(false) . ')'); + + if ($disablePlugins) { + $io->writeError('Plugins have been disabled.'); + } + + if ($package instanceof AliasPackage) { + $package = $package->getAliasOf(); + } + + $dm = $this->createDownloadManager($io, $config); + $dm->setPreferSource($preferSource) + ->setPreferDist($preferDist) + ->setOutputProgress(!$noProgress); + + $projectInstaller = new ProjectInstaller($directory, $dm); + $im = $this->createInstallationManager(); + $im->addInstaller($projectInstaller); + $im->install(new InstalledFilesystemRepository(new JsonFile('php://memory')), new InstallOperation($package)); + $im->notifyInstalls($io); + + // collect suggestions + $this->suggestedPackagesReporter->addSuggestionsFromPackage($package); + + $installedFromVcs = 'source' === $package->getInstallationSource(); + + $io->writeError('Created project in ' . $directory . ''); + chdir($directory); + + $_SERVER['COMPOSER_ROOT_VERSION'] = $package->getPrettyVersion(); + putenv('COMPOSER_ROOT_VERSION='.$_SERVER['COMPOSER_ROOT_VERSION']); + + return $installedFromVcs; + } + + protected function createDownloadManager(IOInterface $io, Config $config) + { + $factory = new Factory(); + + return $factory->createDownloadManager($io, $config); + } + + protected function createInstallationManager() + { + return new InstallationManager(); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/DependsCommand.php b/vendor/composer/composer/src/Composer/Command/DependsCommand.php new file mode 100644 index 0000000..c350fde --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/DependsCommand.php @@ -0,0 +1,57 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Niels Keurentjes + */ +class DependsCommand extends BaseDependencyCommand +{ + /** + * Configure command metadata. + */ + protected function configure() + { + parent::configure(); + + $this + ->setName('depends') + ->setAliases(array('why')) + ->setDescription('Shows which packages cause the given package to be installed.') + ->setHelp( + <<php composer.phar depends composer/composer + +Read more at https://getcomposer.org/doc/03-cli.md#depends-why- +EOT + ) + ; + } + + /** + * Execute the function. + * + * @param InputInterface $input + * @param OutputInterface $output + * @return int + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + return parent::doExecute($input, $output, false); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php b/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php new file mode 100644 index 0000000..19ed813 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php @@ -0,0 +1,729 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Composer; +use Composer\Factory; +use Composer\Config; +use Composer\Downloader\TransportException; +use Composer\Repository\PlatformRepository; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Composer\Util\ConfigValidator; +use Composer\Util\IniHelper; +use Composer\Util\ProcessExecutor; +use Composer\Util\RemoteFilesystem; +use Composer\Util\StreamContextFactory; +use Composer\SelfUpdate\Keys; +use Composer\SelfUpdate\Versions; +use Composer\IO\NullIO; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Jordi Boggiano + */ +class DiagnoseCommand extends BaseCommand +{ + /** @var RemoteFilesystem */ + protected $rfs; + + /** @var ProcessExecutor */ + protected $process; + + /** @var int */ + protected $exitCode = 0; + + protected function configure() + { + $this + ->setName('diagnose') + ->setDescription('Diagnoses the system to identify common errors.') + ->setHelp( + <<diagnose command checks common errors to help debugging problems. + +The process exit code will be 1 in case of warnings and 2 for errors. + +Read more at https://getcomposer.org/doc/03-cli.md#diagnose +EOT + ) + ; + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $composer = $this->getComposer(false); + $io = $this->getIO(); + + if ($composer) { + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'diagnose', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $io->write('Checking composer.json: ', false); + $this->outputResult($this->checkComposerSchema()); + } + + if ($composer) { + $config = $composer->getConfig(); + } else { + $config = Factory::createConfig(); + } + + $config->merge(array('config' => array('secure-http' => false))); + $config->prohibitUrlByConfig('http://repo.packagist.org', new NullIO); + + $this->rfs = Factory::createRemoteFilesystem($io, $config); + $this->process = new ProcessExecutor($io); + + $io->write('Checking platform settings: ', false); + $this->outputResult($this->checkPlatform()); + + $io->write('Checking git settings: ', false); + $this->outputResult($this->checkGit()); + + $io->write('Checking http connectivity to packagist: ', false); + $this->outputResult($this->checkHttp('http', $config)); + + $io->write('Checking https connectivity to packagist: ', false); + $this->outputResult($this->checkHttp('https', $config)); + + $opts = stream_context_get_options(StreamContextFactory::getContext('http://example.org')); + if (!empty($opts['http']['proxy'])) { + $io->write('Checking HTTP proxy: ', false); + $this->outputResult($this->checkHttpProxy()); + $io->write('Checking HTTP proxy support for request_fulluri: ', false); + $this->outputResult($this->checkHttpProxyFullUriRequestParam()); + $io->write('Checking HTTPS proxy support for request_fulluri: ', false); + $this->outputResult($this->checkHttpsProxyFullUriRequestParam()); + } + + if ($oauth = $config->get('github-oauth')) { + foreach ($oauth as $domain => $token) { + $io->write('Checking '.$domain.' oauth access: ', false); + $this->outputResult($this->checkGithubOauth($domain, $token)); + } + } else { + $io->write('Checking github.com rate limit: ', false); + try { + $rate = $this->getGithubRateLimit('github.com'); + if (!is_array($rate)) { + $this->outputResult($rate); + } elseif (10 > $rate['remaining']) { + $io->write('WARNING'); + $io->write(sprintf( + 'Github has a rate limit on their API. ' + . 'You currently have %u ' + . 'out of %u requests left.' . PHP_EOL + . 'See https://developer.github.com/v3/#rate-limiting and also' . PHP_EOL + . ' https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens', + $rate['remaining'], + $rate['limit'] + )); + } else { + $this->outputResult(true); + } + } catch (\Exception $e) { + if ($e instanceof TransportException && $e->getCode() === 401) { + $this->outputResult('The oauth token for github.com seems invalid, run "composer config --global --unset github-oauth.github.com" to remove it'); + } else { + $this->outputResult($e); + } + } + } + + $io->write('Checking disk free space: ', false); + $this->outputResult($this->checkDiskSpace($config)); + + if ('phar:' === substr(__FILE__, 0, 5)) { + $io->write('Checking pubkeys: ', false); + $this->outputResult($this->checkPubKeys($config)); + + $io->write('Checking composer version: ', false); + $this->outputResult($this->checkVersion($config)); + } + + $io->write(sprintf('Composer version: %s', Composer::VERSION)); + + $platformOverrides = $config->get('platform') ?: array(); + $platformRepo = new PlatformRepository(array(), $platformOverrides); + $phpPkg = $platformRepo->findPackage('php', '*'); + $phpVersion = $phpPkg->getPrettyVersion(); + if (false !== strpos($phpPkg->getDescription(), 'overridden')) { + $phpVersion .= ' - ' . $phpPkg->getDescription(); + } + + $io->write(sprintf('PHP version: %s', $phpVersion)); + + if (defined('PHP_BINARY')) { + $io->write(sprintf('PHP binary path: %s', PHP_BINARY)); + } + + return $this->exitCode; + } + + private function checkComposerSchema() + { + $validator = new ConfigValidator($this->getIO()); + list($errors, , $warnings) = $validator->validate(Factory::getComposerFile()); + + if ($errors || $warnings) { + $messages = array( + 'error' => $errors, + 'warning' => $warnings, + ); + + $output = ''; + foreach ($messages as $style => $msgs) { + foreach ($msgs as $msg) { + $output .= '<' . $style . '>' . $msg . '' . PHP_EOL; + } + } + + return rtrim($output); + } + + return true; + } + + private function checkGit() + { + $this->process->execute('git config color.ui', $output); + if (strtolower(trim($output)) === 'always') { + return 'Your git color.ui setting is set to always, this is known to create issues. Use "git config --global color.ui true" to set it correctly.'; + } + + return true; + } + + private function checkHttp($proto, Config $config) + { + $result = $this->checkConnectivity(); + if ($result !== true) { + return $result; + } + + $disableTls = false; + $result = array(); + if ($proto === 'https' && $config->get('disable-tls') === true) { + $disableTls = true; + $result[] = 'Composer is configured to disable SSL/TLS protection. This will leave remote HTTPS requests vulnerable to Man-In-The-Middle attacks.'; + } + if ($proto === 'https' && !extension_loaded('openssl') && !$disableTls) { + $result[] = 'Composer is configured to use SSL/TLS protection but the openssl extension is not available.'; + } + + try { + $this->rfs->getContents('packagist.org', $proto . '://repo.packagist.org/packages.json', false); + } catch (TransportException $e) { + if (false !== strpos($e->getMessage(), 'cafile')) { + $result[] = '[' . get_class($e) . '] ' . $e->getMessage() . ''; + $result[] = 'Unable to locate a valid CA certificate file. You must set a valid \'cafile\' option.'; + $result[] = 'You can alternatively disable this error, at your own risk, by enabling the \'disable-tls\' option.'; + } else { + array_unshift($result, '[' . get_class($e) . '] ' . $e->getMessage()); + } + } + + if (count($result) > 0) { + return $result; + } + + return true; + } + + private function checkHttpProxy() + { + $result = $this->checkConnectivity(); + if ($result !== true) { + return $result; + } + + $protocol = extension_loaded('openssl') ? 'https' : 'http'; + try { + $json = json_decode($this->rfs->getContents('packagist.org', $protocol . '://repo.packagist.org/packages.json', false), true); + $hash = reset($json['provider-includes']); + $hash = $hash['sha256']; + $path = str_replace('%hash%', $hash, key($json['provider-includes'])); + $provider = $this->rfs->getContents('packagist.org', $protocol . '://repo.packagist.org/'.$path, false); + + if (hash('sha256', $provider) !== $hash) { + return 'It seems that your proxy is modifying http traffic on the fly'; + } + } catch (\Exception $e) { + return $e; + } + + return true; + } + + /** + * Due to various proxy servers configurations, some servers can't handle non-standard HTTP "http_proxy_request_fulluri" parameter, + * and will return error 500/501 (as not implemented), see discussion @ https://github.com/composer/composer/pull/1825. + * This method will test, if you need to disable this parameter via setting extra environment variable in your system. + * + * @return bool|string + */ + private function checkHttpProxyFullUriRequestParam() + { + $result = $this->checkConnectivity(); + if ($result !== true) { + return $result; + } + + $url = 'http://repo.packagist.org/packages.json'; + try { + $this->rfs->getContents('packagist.org', $url, false); + } catch (TransportException $e) { + try { + $this->rfs->getContents('packagist.org', $url, false, array('http' => array('request_fulluri' => false))); + } catch (TransportException $e) { + return 'Unable to assess the situation, maybe packagist.org is down ('.$e->getMessage().')'; + } + + return 'It seems there is a problem with your proxy server, try setting the "HTTP_PROXY_REQUEST_FULLURI" and "HTTPS_PROXY_REQUEST_FULLURI" environment variables to "false"'; + } + + return true; + } + + /** + * Due to various proxy servers configurations, some servers can't handle non-standard HTTP "http_proxy_request_fulluri" parameter, + * and will return error 500/501 (as not implemented), see discussion @ https://github.com/composer/composer/pull/1825. + * This method will test, if you need to disable this parameter via setting extra environment variable in your system. + * + * @return bool|string + */ + private function checkHttpsProxyFullUriRequestParam() + { + $result = $this->checkConnectivity(); + if ($result !== true) { + return $result; + } + + if (!extension_loaded('openssl')) { + return 'You need the openssl extension installed for this check'; + } + + $url = 'https://api.github.com/repos/Seldaek/jsonlint/zipball/1.0.0'; + try { + $this->rfs->getContents('github.com', $url, false); + } catch (TransportException $e) { + try { + $this->rfs->getContents('github.com', $url, false, array('http' => array('request_fulluri' => false))); + } catch (TransportException $e) { + return 'Unable to assess the situation, maybe github is down ('.$e->getMessage().')'; + } + + return 'It seems there is a problem with your proxy server, try setting the "HTTPS_PROXY_REQUEST_FULLURI" environment variable to "false"'; + } + + return true; + } + + private function checkGithubOauth($domain, $token) + { + $result = $this->checkConnectivity(); + if ($result !== true) { + return $result; + } + + $this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); + try { + $url = $domain === 'github.com' ? 'https://api.'.$domain.'/' : 'https://'.$domain.'/api/v3/'; + + return $this->rfs->getContents($domain, $url, false, array( + 'retry-auth-failure' => false, + )) ? true : 'Unexpected error'; + } catch (\Exception $e) { + if ($e instanceof TransportException && $e->getCode() === 401) { + return 'The oauth token for '.$domain.' seems invalid, run "composer config --global --unset github-oauth.'.$domain.'" to remove it'; + } + + return $e; + } + } + + /** + * @param string $domain + * @param string $token + * @throws TransportException + * @return array|string + */ + private function getGithubRateLimit($domain, $token = null) + { + $result = $this->checkConnectivity(); + if ($result !== true) { + return $result; + } + + if ($token) { + $this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); + } + + $url = $domain === 'github.com' ? 'https://api.'.$domain.'/rate_limit' : 'https://'.$domain.'/api/rate_limit'; + $json = $this->rfs->getContents($domain, $url, false, array('retry-auth-failure' => false)); + $data = json_decode($json, true); + + return $data['resources']['core']; + } + + private function checkDiskSpace($config) + { + $minSpaceFree = 1024 * 1024; + if ((($df = @disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) + || (($df = @disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) + ) { + return 'The disk hosting '.$dir.' is full'; + } + + return true; + } + + private function checkPubKeys($config) + { + $home = $config->get('home'); + $errors = array(); + $io = $this->getIO(); + + if (file_exists($home.'/keys.tags.pub') && file_exists($home.'/keys.dev.pub')) { + $io->write(''); + } + + if (file_exists($home.'/keys.tags.pub')) { + $io->write('Tags Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.tags.pub')); + } else { + $errors[] = 'Missing pubkey for tags verification'; + } + + if (file_exists($home.'/keys.dev.pub')) { + $io->write('Dev Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.dev.pub')); + } else { + $errors[] = 'Missing pubkey for dev verification'; + } + + if ($errors) { + $errors[] = 'Run composer self-update --update-keys to set them up'; + } + + return $errors ?: true; + } + + private function checkVersion($config) + { + $result = $this->checkConnectivity(); + if ($result !== true) { + return $result; + } + + $versionsUtil = new Versions($config, $this->rfs); + $latest = $versionsUtil->getLatest(); + + if (Composer::VERSION !== $latest['version'] && Composer::VERSION !== '@package_version@') { + return 'You are not running the latest '.$versionsUtil->getChannel().' version, run `composer self-update` to update ('.Composer::VERSION.' => '.$latest['version'].')'; + } + + return true; + } + + /** + * @param bool|string|\Exception $result + */ + private function outputResult($result) + { + $io = $this->getIO(); + if (true === $result) { + $io->write('OK'); + + return; + } + + $hadError = false; + $hadWarning = false; + if ($result instanceof \Exception) { + $result = '['.get_class($result).'] '.$result->getMessage().''; + } + + if (!$result) { + // falsey results should be considered as an error, even if there is nothing to output + $hadError = true; + } else { + if (!is_array($result)) { + $result = array($result); + } + foreach ($result as $message) { + if (false !== strpos($message, '')) { + $hadError = true; + } elseif (false !== strpos($message, '')) { + $hadWarning = true; + } + } + } + + if ($hadError) { + $io->write('FAIL'); + $this->exitCode = max($this->exitCode, 2); + } elseif ($hadWarning) { + $io->write('WARNING'); + $this->exitCode = max($this->exitCode, 1); + } + + if ($result) { + foreach ($result as $message) { + $io->write($message); + } + } + } + + private function checkPlatform() + { + $output = ''; + $out = function ($msg, $style) use (&$output) { + $output .= '<'.$style.'>'.$msg.''.PHP_EOL; + }; + + // code below taken from getcomposer.org/installer, any changes should be made there and replicated here + $errors = array(); + $warnings = array(); + $displayIniMessage = false; + + $iniMessage = PHP_EOL.PHP_EOL.IniHelper::getMessage(); + $iniMessage .= PHP_EOL.'If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times.'; + + if (!function_exists('json_decode')) { + $errors['json'] = true; + } + + if (!extension_loaded('Phar')) { + $errors['phar'] = true; + } + + if (!extension_loaded('filter')) { + $errors['filter'] = true; + } + + if (!extension_loaded('hash')) { + $errors['hash'] = true; + } + + if (!extension_loaded('iconv') && !extension_loaded('mbstring')) { + $errors['iconv_mbstring'] = true; + } + + if (!filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { + $errors['allow_url_fopen'] = true; + } + + if (extension_loaded('ionCube Loader') && ioncube_loader_iversion() < 40009) { + $errors['ioncube'] = ioncube_loader_version(); + } + + if (PHP_VERSION_ID < 50302) { + $errors['php'] = PHP_VERSION; + } + + if (!isset($errors['php']) && PHP_VERSION_ID < 50304) { + $warnings['php'] = PHP_VERSION; + } + + if (!extension_loaded('openssl')) { + $errors['openssl'] = true; + } + + if (extension_loaded('openssl') && OPENSSL_VERSION_NUMBER < 0x1000100f) { + $warnings['openssl_version'] = true; + } + + if (!defined('HHVM_VERSION') && !extension_loaded('apcu') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN)) { + $warnings['apc_cli'] = true; + } + + if (!extension_loaded('zlib')) { + $warnings['zlib'] = true; + } + + ob_start(); + phpinfo(INFO_GENERAL); + $phpinfo = ob_get_clean(); + if (preg_match('{Configure Command(?: *| *=> *)(.*?)(?:|$)}m', $phpinfo, $match)) { + $configure = $match[1]; + + if (false !== strpos($configure, '--enable-sigchild')) { + $warnings['sigchild'] = true; + } + + if (false !== strpos($configure, '--with-curlwrappers')) { + $warnings['curlwrappers'] = true; + } + } + + if (filter_var(ini_get('xdebug.profiler_enabled'), FILTER_VALIDATE_BOOLEAN)) { + $warnings['xdebug_profile'] = true; + } elseif (extension_loaded('xdebug')) { + $warnings['xdebug_loaded'] = true; + } + + if (!empty($errors)) { + foreach ($errors as $error => $current) { + switch ($error) { + case 'json': + $text = PHP_EOL."The json extension is missing.".PHP_EOL; + $text .= "Install it or recompile php without --disable-json"; + break; + + case 'phar': + $text = PHP_EOL."The phar extension is missing.".PHP_EOL; + $text .= "Install it or recompile php without --disable-phar"; + break; + + case 'filter': + $text = PHP_EOL."The filter extension is missing.".PHP_EOL; + $text .= "Install it or recompile php without --disable-filter"; + break; + + case 'hash': + $text = PHP_EOL."The hash extension is missing.".PHP_EOL; + $text .= "Install it or recompile php without --disable-hash"; + break; + + case 'iconv_mbstring': + $text = PHP_EOL."The iconv OR mbstring extension is required and both are missing.".PHP_EOL; + $text .= "Install either of them or recompile php without --disable-iconv"; + break; + + case 'unicode': + $text = PHP_EOL."The detect_unicode setting must be disabled.".PHP_EOL; + $text .= "Add the following to the end of your `php.ini`:".PHP_EOL; + $text .= " detect_unicode = Off"; + $displayIniMessage = true; + break; + + case 'suhosin': + $text = PHP_EOL."The suhosin.executor.include.whitelist setting is incorrect.".PHP_EOL; + $text .= "Add the following to the end of your `php.ini` or suhosin.ini (Example path [for Debian]: /etc/php5/cli/conf.d/suhosin.ini):".PHP_EOL; + $text .= " suhosin.executor.include.whitelist = phar ".$current; + $displayIniMessage = true; + break; + + case 'php': + $text = PHP_EOL."Your PHP ({$current}) is too old, you must upgrade to PHP 5.3.2 or higher."; + break; + + case 'allow_url_fopen': + $text = PHP_EOL."The allow_url_fopen setting is incorrect.".PHP_EOL; + $text .= "Add the following to the end of your `php.ini`:".PHP_EOL; + $text .= " allow_url_fopen = On"; + $displayIniMessage = true; + break; + + case 'ioncube': + $text = PHP_EOL."Your ionCube Loader extension ($current) is incompatible with Phar files.".PHP_EOL; + $text .= "Upgrade to ionCube 4.0.9 or higher or remove this line (path may be different) from your `php.ini` to disable it:".PHP_EOL; + $text .= " zend_extension = /usr/lib/php5/20090626+lfs/ioncube_loader_lin_5.3.so"; + $displayIniMessage = true; + break; + + case 'openssl': + $text = PHP_EOL."The openssl extension is missing, which means that secure HTTPS transfers are impossible.".PHP_EOL; + $text .= "If possible you should enable it or recompile php with --with-openssl"; + break; + } + $out($text, 'error'); + } + + $output .= PHP_EOL; + } + + if (!empty($warnings)) { + foreach ($warnings as $warning => $current) { + switch ($warning) { + case 'apc_cli': + $text = "The apc.enable_cli setting is incorrect.".PHP_EOL; + $text .= "Add the following to the end of your `php.ini`:".PHP_EOL; + $text .= " apc.enable_cli = Off"; + $displayIniMessage = true; + break; + + case 'zlib': + $text = 'The zlib extension is not loaded, this can slow down Composer a lot.'.PHP_EOL; + $text .= 'If possible, enable it or recompile php with --with-zlib'.PHP_EOL; + $displayIniMessage = true; + break; + + case 'sigchild': + $text = "PHP was compiled with --enable-sigchild which can cause issues on some platforms.".PHP_EOL; + $text .= "Recompile it without this flag if possible, see also:".PHP_EOL; + $text .= " https://bugs.php.net/bug.php?id=22999"; + break; + + case 'curlwrappers': + $text = "PHP was compiled with --with-curlwrappers which will cause issues with HTTP authentication and GitHub.".PHP_EOL; + $text .= " Recompile it without this flag if possible"; + break; + + case 'php': + $text = "Your PHP ({$current}) is quite old, upgrading to PHP 5.3.4 or higher is recommended.".PHP_EOL; + $text .= " Composer works with 5.3.2+ for most people, but there might be edge case issues."; + break; + + case 'openssl_version': + // Attempt to parse version number out, fallback to whole string value. + $opensslVersion = strstr(trim(strstr(OPENSSL_VERSION_TEXT, ' ')), ' ', true); + $opensslVersion = $opensslVersion ?: OPENSSL_VERSION_TEXT; + + $text = "The OpenSSL library ({$opensslVersion}) used by PHP does not support TLSv1.2 or TLSv1.1.".PHP_EOL; + $text .= "If possible you should upgrade OpenSSL to version 1.0.1 or above."; + break; + + case 'xdebug_loaded': + $text = "The xdebug extension is loaded, this can slow down Composer a little.".PHP_EOL; + $text .= " Disabling it when using Composer is recommended."; + break; + + case 'xdebug_profile': + $text = "The xdebug.profiler_enabled setting is enabled, this can slow down Composer a lot.".PHP_EOL; + $text .= "Add the following to the end of your `php.ini` to disable it:".PHP_EOL; + $text .= " xdebug.profiler_enabled = 0"; + $displayIniMessage = true; + break; + } + $out($text, 'comment'); + } + } + + if ($displayIniMessage) { + $out($iniMessage, 'comment'); + } + + return !$warnings && !$errors ? true : $output; + } + + + /** + * Check if allow_url_fopen is ON + * + * @return bool|string + */ + private function checkConnectivity() + { + if (!ini_get('allow_url_fopen')) { + $result = 'Skipped because allow_url_fopen is missing.'; + return $result; + } + + return true; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php b/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php new file mode 100644 index 0000000..dbda29d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php @@ -0,0 +1,90 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Jordi Boggiano + */ +class DumpAutoloadCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('dump-autoload') + ->setAliases(array('dumpautoload')) + ->setDescription('Dumps the autoloader.') + ->setDefinition(array( + new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), + new InputOption('optimize', 'o', InputOption::VALUE_NONE, 'Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.'), + new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize`.'), + new InputOption('apcu', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables autoload-dev rules.'), + )) + ->setHelp( + <<php composer.phar dump-autoload + +Read more at https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload- +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $composer = $this->getComposer(); + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'dump-autoload', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $installationManager = $composer->getInstallationManager(); + $localRepo = $composer->getRepositoryManager()->getLocalRepository(); + $package = $composer->getPackage(); + $config = $composer->getConfig(); + + $optimize = $input->getOption('optimize') || $config->get('optimize-autoloader'); + $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); + $apcu = $input->getOption('apcu') || $config->get('apcu-autoloader'); + + if ($authoritative) { + $this->getIO()->writeError('Generating optimized autoload files (authoritative)', false); + } elseif ($optimize) { + $this->getIO()->writeError('Generating optimized autoload files', false); + } else { + $this->getIO()->writeError('Generating autoload files', false); + } + + $generator = $composer->getAutoloadGenerator(); + $generator->setDevMode(!$input->getOption('no-dev')); + $generator->setClassMapAuthoritative($authoritative); + $generator->setApcu($apcu); + $generator->setRunScripts(!$input->getOption('no-scripts')); + $numberOfClasses = $generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize); + + if ($authoritative) { + $this->getIO()->overwriteError('Generated optimized autoload files (authoritative) containing '. $numberOfClasses .' classes'); + } elseif ($optimize) { + $this->getIO()->overwriteError('Generated optimized autoload files containing '. $numberOfClasses .' classes'); + } else { + $this->getIO()->overwriteError('Generated autoload files containing '. $numberOfClasses .' classes'); + } + + return 0; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/ExecCommand.php b/vendor/composer/composer/src/Composer/Command/ExecCommand.php new file mode 100644 index 0000000..c9184c7 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/ExecCommand.php @@ -0,0 +1,97 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Input\InputArgument; + +/** + * @author Davey Shafik + */ +class ExecCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('exec') + ->setDescription('Executes a vendored binary/script.') + ->setDefinition(array( + new InputOption('list', 'l', InputOption::VALUE_NONE), + new InputArgument('binary', InputArgument::OPTIONAL, 'The binary to run, e.g. phpunit'), + new InputArgument( + 'args', + InputArgument::IS_ARRAY | InputArgument::OPTIONAL, + 'Arguments to pass to the binary. Use -- to separate from composer arguments' + ), + )) + ->setHelp( + <<getComposer(); + $binDir = $composer->getConfig()->get('bin-dir'); + if ($input->getOption('list') || !$input->getArgument('binary')) { + $bins = glob($binDir . '/*'); + $bins = array_merge($bins, array_map(function ($e) { + return "$e (local)"; + }, $composer->getPackage()->getBinaries())); + + if (!$bins) { + throw new \RuntimeException("No binaries found in composer.json or in bin-dir ($binDir)"); + } + + $this->getIO()->write( + <<Available binaries: +EOT + ); + + foreach ($bins as $bin) { + // skip .bat copies + if (isset($previousBin) && $bin === $previousBin.'.bat') { + continue; + } + + $previousBin = $bin; + $bin = basename($bin); + $this->getIO()->write( + <<- $bin +EOT + ); + } + + return 0; + } + + $binary = $input->getArgument('binary'); + + $dispatcher = $composer->getEventDispatcher(); + $dispatcher->addListener('__exec_command', $binary); + if ($output->getVerbosity() === OutputInterface::VERBOSITY_NORMAL) { + $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); + } + + return $dispatcher->dispatchScript('__exec_command', true, $input->getArgument('args')); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/GlobalCommand.php b/vendor/composer/composer/src/Composer/Command/GlobalCommand.php new file mode 100644 index 0000000..64c7523 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/GlobalCommand.php @@ -0,0 +1,111 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Factory; +use Composer\Util\Filesystem; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\StringInput; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Jordi Boggiano + */ +class GlobalCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('global') + ->setDescription('Allows running commands in the global composer dir ($COMPOSER_HOME).') + ->setDefinition(array( + new InputArgument('command-name', InputArgument::REQUIRED, ''), + new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), + )) + ->setHelp( + <<\AppData\Roaming\Composer on Windows +and /home//.composer on unix systems. + +If your system uses freedesktop.org standards, then it will first check +XDG_CONFIG_HOME or default to /home//.config/composer + +Note: This path may vary depending on customizations to bin-dir in +composer.json or the environmental variable COMPOSER_BIN_DIR. + +Read more at https://getcomposer.org/doc/03-cli.md#global +EOT + ) + ; + } + + public function run(InputInterface $input, OutputInterface $output) + { + // extract real command name + $tokens = preg_split('{\s+}', $input->__toString()); + $args = array(); + foreach ($tokens as $token) { + if ($token && $token[0] !== '-') { + $args[] = $token; + if (count($args) >= 2) { + break; + } + } + } + + // show help for this command if no command was found + if (count($args) < 2) { + return parent::run($input, $output); + } + + // change to global dir + $config = Factory::createConfig(); + $home = $config->get('home'); + + if (!is_dir($home)) { + $fs = new Filesystem(); + $fs->ensureDirectoryExists($home); + if (!is_dir($home)) { + throw new \RuntimeException('Could not create home directory'); + } + } + + try { + chdir($home); + } catch (\Exception $e) { + throw new \RuntimeException('Could not switch to home directory "'.$home.'"', 0, $e); + } + $this->getIO()->writeError('Changed current directory to '.$home.''); + + // create new input without "global" command prefix + $input = new StringInput(preg_replace('{\bg(?:l(?:o(?:b(?:a(?:l)?)?)?)?)?\b}', '', $input->__toString(), 1)); + $this->getApplication()->resetComposer(); + + return $this->getApplication()->run($input, $output); + } + + /** + * {@inheritDoc} + */ + public function isProxyCommand() + { + return true; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/HomeCommand.php b/vendor/composer/composer/src/Composer/Command/HomeCommand.php new file mode 100644 index 0000000..b7d9070 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/HomeCommand.php @@ -0,0 +1,168 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Package\CompletePackageInterface; +use Composer\Repository\RepositoryInterface; +use Composer\Repository\ArrayRepository; +use Composer\Repository\RepositoryFactory; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Robert Schönthal + */ +class HomeCommand extends BaseCommand +{ + /** + * {@inheritDoc} + */ + protected function configure() + { + $this + ->setName('browse') + ->setAliases(array('home')) + ->setDescription('Opens the package\'s repository URL or homepage in your browser.') + ->setDefinition(array( + new InputArgument('packages', InputArgument::IS_ARRAY, 'Package(s) to browse to.'), + new InputOption('homepage', 'H', InputOption::VALUE_NONE, 'Open the homepage instead of the repository URL.'), + new InputOption('show', 's', InputOption::VALUE_NONE, 'Only show the homepage or repository URL.'), + )) + ->setHelp( + <<initializeRepos(); + $io = $this->getIO(); + $return = 0; + + $packages = $input->getArgument('packages'); + if (!$packages) { + $io->writeError('No package specified, opening homepage for the root package'); + $packages = array($this->getComposer()->getPackage()->getName()); + } + + foreach ($packages as $packageName) { + $handled = false; + $packageExists = false; + foreach ($repos as $repo) { + foreach ($repo->findPackages($packageName) as $package) { + $packageExists = true; + if ($package instanceof CompletePackageInterface && $this->handlePackage($package, $input->getOption('homepage'), $input->getOption('show'))) { + $handled = true; + break 2; + } + } + } + + if (!$packageExists) { + $return = 1; + $io->writeError('Package '.$packageName.' not found'); + } + + if (!$handled) { + $return = 1; + $io->writeError(''.($input->getOption('homepage') ? 'Invalid or missing homepage' : 'Invalid or missing repository URL').' for '.$packageName.''); + } + } + + return $return; + } + + private function handlePackage(CompletePackageInterface $package, $showHomepage, $showOnly) + { + $support = $package->getSupport(); + $url = isset($support['source']) ? $support['source'] : $package->getSourceUrl(); + if (!$url || $showHomepage) { + $url = $package->getHomepage(); + } + + if (!$url || !filter_var($url, FILTER_VALIDATE_URL)) { + return false; + } + + if ($showOnly) { + $this->getIO()->write(sprintf('%s', $url)); + } else { + $this->openBrowser($url); + } + + return true; + } + + /** + * opens a url in your system default browser + * + * @param string $url + */ + private function openBrowser($url) + { + $url = ProcessExecutor::escape($url); + + $process = new ProcessExecutor($this->getIO()); + if (Platform::isWindows()) { + return $process->execute('start "web" explorer "' . $url . '"', $output); + } + + $linux = $process->execute('which xdg-open', $output); + $osx = $process->execute('which open', $output); + + if (0 === $linux) { + $process->execute('xdg-open ' . $url, $output); + } elseif (0 === $osx) { + $process->execute('open ' . $url, $output); + } else { + $this->getIO()->writeError('No suitable browser opening command found, open yourself: ' . $url); + } + } + + /** + * Initializes repositories + * + * Returns an array of repos in order they should be checked in + * + * @return RepositoryInterface[] + */ + private function initializeRepos() + { + $composer = $this->getComposer(false); + + if ($composer) { + return array_merge( + array(new ArrayRepository(array($composer->getPackage()))), // root package + array($composer->getRepositoryManager()->getLocalRepository()), // installed packages + $composer->getRepositoryManager()->getRepositories() // remotes + ); + } + + return RepositoryFactory::defaultRepos($this->getIO()); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/InitCommand.php b/vendor/composer/composer/src/Composer/Command/InitCommand.php new file mode 100644 index 0000000..279e129 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/InitCommand.php @@ -0,0 +1,822 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\DependencyResolver\Pool; +use Composer\Factory; +use Composer\Json\JsonFile; +use Composer\Package\BasePackage; +use Composer\Package\Version\VersionParser; +use Composer\Package\Version\VersionSelector; +use Composer\Repository\CompositeRepository; +use Composer\Repository\PlatformRepository; +use Composer\Repository\RepositoryFactory; +use Composer\Util\ProcessExecutor; +use Symfony\Component\Console\Input\ArrayInput; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Process\ExecutableFinder; +use Symfony\Component\Process\Process; + +/** + * @author Justin Rainbow + * @author Jordi Boggiano + */ +class InitCommand extends BaseCommand +{ + /** @var CompositeRepository */ + protected $repos; + + /** @var array */ + private $gitConfig; + + /** @var Pool[] */ + private $pools; + + /** + * {@inheritdoc} + */ + protected function configure() + { + $this + ->setName('init') + ->setDescription('Creates a basic composer.json file in current directory.') + ->setDefinition(array( + new InputOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the package'), + new InputOption('description', null, InputOption::VALUE_REQUIRED, 'Description of package'), + new InputOption('author', null, InputOption::VALUE_REQUIRED, 'Author name of package'), + // new InputOption('version', null, InputOption::VALUE_NONE, 'Version of package'), + new InputOption('type', null, InputOption::VALUE_OPTIONAL, 'Type of package (e.g. library, project, metapackage, composer-plugin)'), + new InputOption('homepage', null, InputOption::VALUE_REQUIRED, 'Homepage of package'), + new InputOption('require', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), + new InputOption('require-dev', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require for development with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), + new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum stability (empty or one of: '.implode(', ', array_keys(BasePackage::$stabilities)).')'), + new InputOption('license', 'l', InputOption::VALUE_REQUIRED, 'License of package'), + new InputOption('repository', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Add custom repositories, either by URL or using JSON arrays'), + )) + ->setHelp( + <<init command creates a basic composer.json file +in the current directory. + +php composer.phar init + +Read more at https://getcomposer.org/doc/03-cli.md#init +EOT + ) + ; + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = $this->getIO(); + + $whitelist = array('name', 'description', 'author', 'type', 'homepage', 'require', 'require-dev', 'stability', 'license'); + $options = array_filter(array_intersect_key($input->getOptions(), array_flip($whitelist))); + + if (isset($options['author'])) { + $options['authors'] = $this->formatAuthors($options['author']); + unset($options['author']); + } + + $repositories = $input->getOption('repository'); + if ($repositories) { + $config = Factory::createConfig($io); + foreach ($repositories as $repo) { + $options['repositories'][] = RepositoryFactory::configFromString($io, $config, $repo); + } + } + + if (isset($options['stability'])) { + $options['minimum-stability'] = $options['stability']; + unset($options['stability']); + } + + $options['require'] = isset($options['require']) ? $this->formatRequirements($options['require']) : new \stdClass; + if (array() === $options['require']) { + $options['require'] = new \stdClass; + } + + if (isset($options['require-dev'])) { + $options['require-dev'] = $this->formatRequirements($options['require-dev']); + if (array() === $options['require-dev']) { + $options['require-dev'] = new \stdClass; + } + } + + $file = new JsonFile(Factory::getComposerFile()); + $json = $file->encode($options); + + if ($input->isInteractive()) { + $io->writeError(array('', $json, '')); + if (!$io->askConfirmation('Do you confirm generation [yes]? ', true)) { + $io->writeError('Command aborted'); + + return 1; + } + } + + $file->write($options); + + if ($input->isInteractive() && is_dir('.git')) { + $ignoreFile = realpath('.gitignore'); + + if (false === $ignoreFile) { + $ignoreFile = realpath('.') . '/.gitignore'; + } + + if (!$this->hasVendorIgnore($ignoreFile)) { + $question = 'Would you like the vendor directory added to your .gitignore [yes]? '; + + if ($io->askConfirmation($question, true)) { + $this->addVendorIgnore($ignoreFile); + } + } + } + + $question = 'Would you like to install dependencies now [yes]? '; + if ($input->isInteractive() && $this->hasDependencies($options) && $io->askConfirmation($question, true)) { + $this->installDependencies($output); + } + + return 0; + } + + /** + * {@inheritdoc} + */ + protected function interact(InputInterface $input, OutputInterface $output) + { + $git = $this->getGitConfig(); + $io = $this->getIO(); + $formatter = $this->getHelperSet()->get('formatter'); + + // initialize repos if configured + $repositories = $input->getOption('repository'); + if ($repositories) { + $config = Factory::createConfig($io); + $repos = array(new PlatformRepository); + $createDefaultPackagistRepo = true; + foreach ($repositories as $repo) { + $repoConfig = RepositoryFactory::configFromString($io, $config, $repo); + if ( + (isset($repoConfig['packagist']) && $repoConfig === array('packagist' => false)) + || (isset($repoConfig['packagist.org']) && $repoConfig === array('packagist.org' => false)) + ) { + $createDefaultPackagistRepo = false; + continue; + } + $repos[] = RepositoryFactory::createRepo($io, $config, $repoConfig); + } + + if ($createDefaultPackagistRepo) { + $repos[] = RepositoryFactory::createRepo($io, $config, array( + 'type' => 'composer', + 'url' => 'https://repo.packagist.org', + )); + } + + $this->repos = new CompositeRepository($repos); + unset($repos, $config, $repositories); + } + + $io->writeError(array( + '', + $formatter->formatBlock('Welcome to the Composer config generator', 'bg=blue;fg=white', true), + '', + )); + + // namespace + $io->writeError(array( + '', + 'This command will guide you through creating your composer.json config.', + '', + )); + + $cwd = realpath("."); + + if (!$name = $input->getOption('name')) { + $name = basename($cwd); + $name = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); + $name = strtolower($name); + if (!empty($_SERVER['COMPOSER_DEFAULT_VENDOR'])) { + $name = $_SERVER['COMPOSER_DEFAULT_VENDOR'] . '/' . $name; + } elseif (isset($git['github.user'])) { + $name = $git['github.user'] . '/' . $name; + } elseif (!empty($_SERVER['USERNAME'])) { + $name = $_SERVER['USERNAME'] . '/' . $name; + } elseif (!empty($_SERVER['USER'])) { + $name = $_SERVER['USER'] . '/' . $name; + } elseif (get_current_user()) { + $name = get_current_user() . '/' . $name; + } else { + // package names must be in the format foo/bar + $name .= '/' . $name; + } + $name = strtolower($name); + } else { + if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $name)) { + throw new \InvalidArgumentException( + 'The package name '.$name.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' + ); + } + } + + $name = $io->askAndValidate( + 'Package name (/) ['.$name.']: ', + function ($value) use ($name) { + if (null === $value) { + return $name; + } + + if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $value)) { + throw new \InvalidArgumentException( + 'The package name '.$value.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' + ); + } + + return $value; + }, + null, + $name + ); + $input->setOption('name', $name); + + $description = $input->getOption('description') ?: false; + $description = $io->ask( + 'Description ['.$description.']: ', + $description + ); + $input->setOption('description', $description); + + if (null === $author = $input->getOption('author')) { + if (!empty($_SERVER['COMPOSER_DEFAULT_AUTHOR'])) { + $author_name = $_SERVER['COMPOSER_DEFAULT_AUTHOR']; + } elseif (isset($git['user.name'])) { + $author_name = $git['user.name']; + } + + if (!empty($_SERVER['COMPOSER_DEFAULT_EMAIL'])) { + $author_email = $_SERVER['COMPOSER_DEFAULT_EMAIL']; + } elseif (isset($git['user.email'])) { + $author_email = $git['user.email']; + } + + if (isset($author_name) && isset($author_email)) { + $author = sprintf('%s <%s>', $author_name, $author_email); + } + } + + $self = $this; + $author = $io->askAndValidate( + 'Author ['.$author.', n to skip]: ', + function ($value) use ($self, $author) { + if ($value === 'n' || $value === 'no') { + return; + } + $value = $value ?: $author; + $author = $self->parseAuthorString($value); + + return sprintf('%s <%s>', $author['name'], $author['email']); + }, + null, + $author + ); + $input->setOption('author', $author); + + $minimumStability = $input->getOption('stability') ?: null; + $minimumStability = $io->askAndValidate( + 'Minimum Stability ['.$minimumStability.']: ', + function ($value) use ($minimumStability) { + if (null === $value) { + return $minimumStability; + } + + if (!isset(BasePackage::$stabilities[$value])) { + throw new \InvalidArgumentException( + 'Invalid minimum stability "'.$value.'". Must be empty or one of: '. + implode(', ', array_keys(BasePackage::$stabilities)) + ); + } + + return $value; + }, + null, + $minimumStability + ); + $input->setOption('stability', $minimumStability); + + $type = $input->getOption('type') ?: false; + $type = $io->ask( + 'Package Type (e.g. library, project, metapackage, composer-plugin) ['.$type.']: ', + $type + ); + $input->setOption('type', $type); + + if (null === $license = $input->getOption('license')) { + if (!empty($_SERVER['COMPOSER_DEFAULT_LICENSE'])) { + $license = $_SERVER['COMPOSER_DEFAULT_LICENSE']; + } + } + + $license = $io->ask( + 'License ['.$license.']: ', + $license + ); + $input->setOption('license', $license); + + $io->writeError(array('', 'Define your dependencies.', '')); + + // prepare to resolve dependencies + $repos = $this->getRepos(); + $preferredStability = $minimumStability ?: 'stable'; + $phpVersion = $repos->findPackage('php', '*')->getPrettyVersion(); + + $question = 'Would you like to define your dependencies (require) interactively [yes]? '; + $require = $input->getOption('require'); + $requirements = array(); + if ($require || $io->askConfirmation($question, true)) { + $requirements = $this->determineRequirements($input, $output, $require, $phpVersion, $preferredStability); + } + $input->setOption('require', $requirements); + + $question = 'Would you like to define your dev dependencies (require-dev) interactively [yes]? '; + $requireDev = $input->getOption('require-dev'); + $devRequirements = array(); + if ($requireDev || $io->askConfirmation($question, true)) { + $devRequirements = $this->determineRequirements($input, $output, $requireDev, $phpVersion, $preferredStability); + } + $input->setOption('require-dev', $devRequirements); + } + + /** + * @private + * @param string $author + * @return array + */ + public function parseAuthorString($author) + { + if (preg_match('/^(?P[- .,\p{L}\p{N}\p{Mn}\'’"()]+) <(?P.+?)>$/u', $author, $match)) { + if ($this->isValidEmail($match['email'])) { + return array( + 'name' => trim($match['name']), + 'email' => $match['email'], + ); + } + } + + throw new \InvalidArgumentException( + 'Invalid author string. Must be in the format: '. + 'John Smith ' + ); + } + + protected function findPackages($name) + { + return $this->getRepos()->search($name); + } + + protected function getRepos() + { + if (!$this->repos) { + $this->repos = new CompositeRepository(array_merge( + array(new PlatformRepository), + RepositoryFactory::defaultRepos($this->getIO()) + )); + } + + return $this->repos; + } + + protected function determineRequirements(InputInterface $input, OutputInterface $output, $requires = array(), $phpVersion = null, $preferredStability = 'stable', $checkProvidedVersions = true) + { + if ($requires) { + $requires = $this->normalizeRequirements($requires); + $result = array(); + $io = $this->getIO(); + + foreach ($requires as $requirement) { + if (!isset($requirement['version'])) { + // determine the best version automatically + list($name, $version) = $this->findBestVersionAndNameForPackage($input, $requirement['name'], $phpVersion, $preferredStability); + $requirement['version'] = $version; + + // replace package name from packagist.org + $requirement['name'] = $name; + + $io->writeError(sprintf( + 'Using version %s for %s', + $requirement['version'], + $requirement['name'] + )); + } else { + // check that the specified version/constraint exists before we proceed + list($name, $version) = $this->findBestVersionAndNameForPackage($input, $requirement['name'], $phpVersion, $preferredStability, $checkProvidedVersions ? $requirement['version'] : null, 'dev'); + + // replace package name from packagist.org + $requirement['name'] = $name; + } + + $result[] = $requirement['name'] . ' ' . $requirement['version']; + } + + return $result; + } + + $versionParser = new VersionParser(); + $io = $this->getIO(); + while (null !== $package = $io->ask('Search for a package: ')) { + $matches = $this->findPackages($package); + + if (count($matches)) { + $exactMatch = null; + $choices = array(); + foreach ($matches as $position => $foundPackage) { + $abandoned = ''; + if (isset($foundPackage['abandoned'])) { + if (is_string($foundPackage['abandoned'])) { + $replacement = sprintf('Use %s instead', $foundPackage['abandoned']); + } else { + $replacement = 'No replacement was suggested'; + } + $abandoned = sprintf('Abandoned. %s.', $replacement); + } + + $choices[] = sprintf(' %5s %s %s', "[$position]", $foundPackage['name'], $abandoned); + if ($foundPackage['name'] === $package) { + $exactMatch = true; + break; + } + } + + // no match, prompt which to pick + if (!$exactMatch) { + $io->writeError(array( + '', + sprintf('Found %s packages matching %s', count($matches), $package), + '', + )); + + $io->writeError($choices); + $io->writeError(''); + + $validator = function ($selection) use ($matches, $versionParser) { + if ('' === $selection) { + return false; + } + + if (is_numeric($selection) && isset($matches[(int) $selection])) { + $package = $matches[(int) $selection]; + + return $package['name']; + } + + if (preg_match('{^\s*(?P[\S/]+)(?:\s+(?P\S+))?\s*$}', $selection, $packageMatches)) { + if (isset($packageMatches['version'])) { + // parsing `acme/example ~2.3` + + // validate version constraint + $versionParser->parseConstraints($packageMatches['version']); + + return $packageMatches['name'].' '.$packageMatches['version']; + } + + // parsing `acme/example` + return $packageMatches['name']; + } + + throw new \Exception('Not a valid selection'); + }; + + $package = $io->askAndValidate( + 'Enter package # to add, or the complete package name if it is not listed: ', + $validator, + 3, + false + ); + } + + // no constraint yet, determine the best version automatically + if (false !== $package && false === strpos($package, ' ')) { + $validator = function ($input) { + $input = trim($input); + + return $input ?: false; + }; + + $constraint = $io->askAndValidate( + 'Enter the version constraint to require (or leave blank to use the latest version): ', + $validator, + 3, + false + ); + + if (false === $constraint) { + list($name, $constraint) = $this->findBestVersionAndNameForPackage($input, $package, $phpVersion, $preferredStability); + + $io->writeError(sprintf( + 'Using version %s for %s', + $constraint, + $package + )); + } + + $package .= ' '.$constraint; + } + + if (false !== $package) { + $requires[] = $package; + } + } + } + + return $requires; + } + + protected function formatAuthors($author) + { + return array($this->parseAuthorString($author)); + } + + protected function formatRequirements(array $requirements) + { + $requires = array(); + $requirements = $this->normalizeRequirements($requirements); + foreach ($requirements as $requirement) { + $requires[$requirement['name']] = $requirement['version']; + } + + return $requires; + } + + protected function getGitConfig() + { + if (null !== $this->gitConfig) { + return $this->gitConfig; + } + + $finder = new ExecutableFinder(); + $gitBin = $finder->find('git'); + + // TODO in v3 always call with an array + if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { + $cmd = new Process(array($gitBin, 'config', '-l')); + } else { + $cmd = new Process(sprintf('%s config -l', ProcessExecutor::escape($gitBin))); + } + $cmd->run(); + + if ($cmd->isSuccessful()) { + $this->gitConfig = array(); + preg_match_all('{^([^=]+)=(.*)$}m', $cmd->getOutput(), $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + $this->gitConfig[$match[1]] = $match[2]; + } + + return $this->gitConfig; + } + + return $this->gitConfig = array(); + } + + /** + * Checks the local .gitignore file for the Composer vendor directory. + * + * Tested patterns include: + * "/$vendor" + * "$vendor" + * "$vendor/" + * "/$vendor/" + * "/$vendor/*" + * "$vendor/*" + * + * @param string $ignoreFile + * @param string $vendor + * + * @return bool + */ + protected function hasVendorIgnore($ignoreFile, $vendor = 'vendor') + { + if (!file_exists($ignoreFile)) { + return false; + } + + $pattern = sprintf('{^/?%s(/\*?)?$}', preg_quote($vendor)); + + $lines = file($ignoreFile, FILE_IGNORE_NEW_LINES); + foreach ($lines as $line) { + if (preg_match($pattern, $line)) { + return true; + } + } + + return false; + } + + protected function normalizeRequirements(array $requirements) + { + $parser = new VersionParser(); + + return $parser->parseNameVersionPairs($requirements); + } + + protected function addVendorIgnore($ignoreFile, $vendor = '/vendor/') + { + $contents = ""; + if (file_exists($ignoreFile)) { + $contents = file_get_contents($ignoreFile); + + if ("\n" !== substr($contents, 0, -1)) { + $contents .= "\n"; + } + } + + file_put_contents($ignoreFile, $contents . $vendor. "\n"); + } + + protected function isValidEmail($email) + { + // assume it's valid if we can't validate it + if (!function_exists('filter_var')) { + return true; + } + + // php <5.3.3 has a very broken email validator, so bypass checks + if (PHP_VERSION_ID < 50303) { + return true; + } + + return false !== filter_var($email, FILTER_VALIDATE_EMAIL); + } + + private function getPool(InputInterface $input, $minimumStability = null) + { + $key = $minimumStability ?: 'default'; + + if (!isset($this->pools[$key])) { + $this->pools[$key] = $pool = new Pool($minimumStability ?: $this->getMinimumStability($input)); + $pool->addRepository($this->getRepos()); + } + + return $this->pools[$key]; + } + + private function getMinimumStability(InputInterface $input) + { + if ($input->hasOption('stability')) { + return $input->getOption('stability') ?: 'stable'; + } + + $file = Factory::getComposerFile(); + if (is_file($file) && is_readable($file) && is_array($composer = json_decode(file_get_contents($file), true))) { + if (!empty($composer['minimum-stability'])) { + return $composer['minimum-stability']; + } + } + + return 'stable'; + } + + /** + * Given a package name, this determines the best version to use in the require key. + * + * This returns a version with the ~ operator prefixed when possible. + * + * @param InputInterface $input + * @param string $name + * @param string|null $phpVersion + * @param string $preferredStability + * @param string|null $requiredVersion + * @param string $minimumStability + * @throws \InvalidArgumentException + * @return array name version + */ + private function findBestVersionAndNameForPackage(InputInterface $input, $name, $phpVersion, $preferredStability = 'stable', $requiredVersion = null, $minimumStability = null) + { + // find the latest version allowed in this pool + $versionSelector = new VersionSelector($this->getPool($input, $minimumStability)); + $ignorePlatformReqs = $input->hasOption('ignore-platform-reqs') && $input->getOption('ignore-platform-reqs'); + + // ignore phpVersion if platform requirements are ignored + if ($ignorePlatformReqs) { + $phpVersion = null; + } + + $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability); + + if (!$package) { + // platform packages can not be found in the pool in versions other than the local platform's has + // so if platform reqs are ignored we just take the user's word for it + if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) { + return array($name, $requiredVersion ?: '*'); + } + + // Check whether the PHP version was the problem + if ($phpVersion && $versionSelector->findBestCandidate($name, $requiredVersion, null, $preferredStability)) { + throw new \InvalidArgumentException(sprintf( + 'Package %s at version %s has a PHP requirement incompatible with your PHP version (%s)', + $name, + $requiredVersion, + $phpVersion + )); + } + // Check whether the required version was the problem + if ($requiredVersion && $versionSelector->findBestCandidate($name, null, $phpVersion, $preferredStability)) { + throw new \InvalidArgumentException(sprintf( + 'Could not find package %s in a version matching %s', + $name, + $requiredVersion + )); + } + // Check whether the PHP version was the problem + if ($phpVersion && $versionSelector->findBestCandidate($name)) { + throw new \InvalidArgumentException(sprintf( + 'Could not find package %s in any version matching your PHP version (%s)', + $name, + $phpVersion + )); + } + + // Check for similar names/typos + $similar = $this->findSimilar($name); + if ($similar) { + // Check whether the minimum stability was the problem but the package exists + if ($requiredVersion === null && in_array($name, $similar, true)) { + throw new \InvalidArgumentException(sprintf( + 'Could not find a version of package %s matching your minimum-stability (%s). Require it with an explicit version constraint allowing its desired stability.', + $name, + $this->getMinimumStability($input) + )); + } + + throw new \InvalidArgumentException(sprintf( + "Could not find package %s.\n\nDid you mean " . (count($similar) > 1 ? 'one of these' : 'this') . "?\n %s", + $name, + implode("\n ", $similar) + )); + } + + throw new \InvalidArgumentException(sprintf( + 'Could not find a matching version of package %s. Check the package spelling, your version constraint and that the package is available in a stability which matches your minimum-stability (%s).', + $name, + $this->getMinimumStability($input) + )); + } + + return array( + $package->getPrettyName(), + $versionSelector->findRecommendedRequireVersion($package), + ); + } + + private function findSimilar($package) + { + try { + $results = $this->repos->search($package); + } catch (\Exception $e) { + // ignore search errors + return array(); + } + $similarPackages = array(); + + foreach ($results as $result) { + $similarPackages[$result['name']] = levenshtein($package, $result['name']); + } + asort($similarPackages); + + return array_keys(array_slice($similarPackages, 0, 5)); + } + + private function installDependencies($output) + { + try { + $installCommand = $this->getApplication()->find('install'); + $installCommand->run(new ArrayInput(array()), $output); + } catch (\Exception $e) { + $this->getIO()->writeError('Could not install dependencies. Run `composer install` to see more information.'); + } + + } + + private function hasDependencies($options) + { + $requires = (array) $options['require']; + $devRequires = isset($options['require-dev']) ? (array) $options['require-dev'] : array(); + + return !empty($requires) || !empty($devRequires); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/InstallCommand.php b/vendor/composer/composer/src/Composer/Command/InstallCommand.php new file mode 100644 index 0000000..32fb1bd --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/InstallCommand.php @@ -0,0 +1,124 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Installer; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Jordi Boggiano + * @author Ryan Weaver + * @author Konstantin Kudryashov + * @author Nils Adermann + */ +class InstallCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('install') + ->setAliases(array('i')) + ->setDescription('Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.') + ->setDefinition(array( + new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), + new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), + new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), + new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), + new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), + new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), + new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), + new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), + new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'Do not show package suggestions.'), + new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), + new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), + new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), + new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), + new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), + new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Should not be provided, use composer require instead to add a given package to composer.json.'), + )) + ->setHelp( + <<install command reads the composer.lock file from +the current directory, processes it, and downloads and installs all the +libraries and dependencies outlined in that file. If the file does not +exist it will look for composer.json and do the same. + +php composer.phar install + +Read more at https://getcomposer.org/doc/03-cli.md#install-i +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = $this->getIO(); + if ($args = $input->getArgument('packages')) { + $io->writeError('Invalid argument '.implode(' ', $args).'. Use "composer require '.implode(' ', $args).'" instead to add packages to your composer.json.'); + + return 1; + } + + if ($input->getOption('no-custom-installers')) { + $io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); + $input->setOption('no-plugins', true); + } + + if ($input->getOption('dev')) { + $io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); + } + + $composer = $this->getComposer(true, $input->getOption('no-plugins')); + $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'install', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $install = Installer::create($io, $composer); + + $config = $composer->getConfig(); + list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); + + $optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); + $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); + $apcu = $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); + + $install + ->setDryRun($input->getOption('dry-run')) + ->setVerbose($input->getOption('verbose')) + ->setPreferSource($preferSource) + ->setPreferDist($preferDist) + ->setDevMode(!$input->getOption('no-dev')) + ->setDumpAutoloader(!$input->getOption('no-autoloader')) + ->setRunScripts(!$input->getOption('no-scripts')) + ->setSkipSuggest($input->getOption('no-suggest')) + ->setOptimizeAutoloader($optimize) + ->setClassMapAuthoritative($authoritative) + ->setApcuAutoloader($apcu) + ->setIgnorePlatformRequirements($input->getOption('ignore-platform-reqs')) + ; + + if ($input->getOption('no-plugins')) { + $install->disablePlugins(); + } + + return $install->run(); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/LicensesCommand.php b/vendor/composer/composer/src/Composer/Command/LicensesCommand.php new file mode 100644 index 0000000..7537945 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/LicensesCommand.php @@ -0,0 +1,161 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Json\JsonFile; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Composer\Package\PackageInterface; +use Composer\Repository\RepositoryInterface; +use Symfony\Component\Console\Helper\Table; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Benoît Merlet + */ +class LicensesCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('licenses') + ->setDescription('Shows information about licenses of dependencies.') + ->setDefinition(array( + new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text'), + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), + )) + ->setHelp( + <<getComposer(); + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'licenses', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $root = $composer->getPackage(); + $repo = $composer->getRepositoryManager()->getLocalRepository(); + + if ($input->getOption('no-dev')) { + $packages = $this->filterRequiredPackages($repo, $root); + } else { + $packages = $this->appendPackages($repo->getPackages(), array()); + } + + ksort($packages); + $io = $this->getIO(); + + switch ($format = $input->getOption('format')) { + case 'text': + $io->write('Name: '.$root->getPrettyName().''); + $io->write('Version: '.$root->getFullPrettyVersion().''); + $io->write('Licenses: '.(implode(', ', $root->getLicense()) ?: 'none').''); + $io->write('Dependencies:'); + $io->write(''); + + $table = new Table($output); + $table->setStyle('compact'); + $tableStyle = $table->getStyle(); + $tableStyle->setVerticalBorderChar(''); + $tableStyle->setCellRowContentFormat('%s '); + $table->setHeaders(array('Name', 'Version', 'License')); + foreach ($packages as $package) { + $table->addRow(array( + $package->getPrettyName(), + $package->getFullPrettyVersion(), + implode(', ', $package->getLicense()) ?: 'none', + )); + } + $table->render(); + break; + + case 'json': + $dependencies = array(); + foreach ($packages as $package) { + $dependencies[$package->getPrettyName()] = array( + 'version' => $package->getFullPrettyVersion(), + 'license' => $package->getLicense(), + ); + } + + $io->write(JsonFile::encode(array( + 'name' => $root->getPrettyName(), + 'version' => $root->getFullPrettyVersion(), + 'license' => $root->getLicense(), + 'dependencies' => $dependencies, + ))); + break; + + default: + throw new \RuntimeException(sprintf('Unsupported format "%s". See help for supported formats.', $format)); + } + + return 0; + } + + /** + * Find package requires and child requires + * + * @param RepositoryInterface $repo + * @param PackageInterface $package + * @param array $bucket + * @return array + */ + private function filterRequiredPackages(RepositoryInterface $repo, PackageInterface $package, $bucket = array()) + { + $requires = array_keys($package->getRequires()); + + $packageListNames = array_keys($bucket); + $packages = array_filter( + $repo->getPackages(), + function ($package) use ($requires, $packageListNames) { + return in_array($package->getName(), $requires) && !in_array($package->getName(), $packageListNames); + } + ); + + $bucket = $this->appendPackages($packages, $bucket); + + foreach ($packages as $package) { + $bucket = $this->filterRequiredPackages($repo, $package, $bucket); + } + + return $bucket; + } + + /** + * Adds packages to the package list + * + * @param array $packages the list of packages to add + * @param array $bucket the list to add packages to + * @return array + */ + public function appendPackages(array $packages, array $bucket) + { + foreach ($packages as $package) { + $bucket[$package->getName()] = $package; + } + + return $bucket; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php b/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php new file mode 100644 index 0000000..5990872 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php @@ -0,0 +1,95 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\ArrayInput; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Jordi Boggiano + */ +class OutdatedCommand extends ShowCommand +{ + protected function configure() + { + $this + ->setName('outdated') + ->setDescription('Shows a list of installed packages that have updates available, including their latest version.') + ->setDefinition(array( + new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.'), + new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show only packages that are outdated (this is the default, but present here for compat with `show`'), + new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show all installed packages with their latest versions'), + new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), + new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), + new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates. Use with the --outdated option.'), + new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text'), + new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it with the --outdated option if you don\'t want to be informed about new versions of some packages.'), + )) + ->setHelp( + <<green (=): Dependency is in the latest version and is up to date. +- yellow (~): Dependency has a new version available that includes backwards + compatibility breaks according to semver, so upgrade when you can but it + may involve work. +- red (!): Dependency has a new version that is semver-compatible and you should upgrade it. + +Read more at https://getcomposer.org/doc/03-cli.md#outdated +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $args = array( + 'command' => 'show', + '--latest' => true, + ); + if (!$input->getOption('all')) { + $args['--outdated'] = true; + } + if ($input->getOption('direct')) { + $args['--direct'] = true; + } + if ($input->getArgument('package')) { + $args['package'] = $input->getArgument('package'); + } + if ($input->getOption('strict')) { + $args['--strict'] = true; + } + if ($input->getOption('minor-only')) { + $args['--minor-only'] = true; + } + $args['--format'] = $input->getOption('format'); + $args['--ignore'] = $input->getOption('ignore'); + + $input = new ArrayInput($args); + + return $this->getApplication()->run($input, $output); + } + + /** + * {@inheritDoc} + */ + public function isProxyCommand() + { + return true; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php b/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php new file mode 100644 index 0000000..1e18e5e --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php @@ -0,0 +1,57 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Niels Keurentjes + */ +class ProhibitsCommand extends BaseDependencyCommand +{ + /** + * Configure command metadata. + */ + protected function configure() + { + parent::configure(); + + $this + ->setName('prohibits') + ->setAliases(array('why-not')) + ->setDescription('Shows which packages prevent the given package from being installed.') + ->setHelp( + <<php composer.phar prohibits composer/composer + +Read more at https://getcomposer.org/doc/03-cli.md#prohibits-why-not- +EOT + ) + ; + } + + /** + * Execute the function. + * + * @param InputInterface $input + * @param OutputInterface $output + * @return int + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + return parent::doExecute($input, $output, true); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/RemoveCommand.php b/vendor/composer/composer/src/Composer/Command/RemoveCommand.php new file mode 100644 index 0000000..e4407d4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/RemoveCommand.php @@ -0,0 +1,163 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Config\JsonConfigSource; +use Composer\Installer; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Composer\Json\JsonFile; +use Composer\Factory; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Output\OutputInterface; +use Composer\Package\BasePackage; + +/** + * @author Pierre du Plessis + * @author Jordi Boggiano + */ +class RemoveCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('remove') + ->setDescription('Removes a package from the require or require-dev.') + ->setDefinition(array( + new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'Packages that should be removed.'), + new InputOption('dev', null, InputOption::VALUE_NONE, 'Removes a package from the require-dev section.'), + new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), + new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies.'), + new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), + new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), + new InputOption('update-with-dependencies', null, InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated with explicit dependencies. (Deprecrated, is now default behavior)'), + new InputOption('no-update-with-dependencies', null, InputOption::VALUE_NONE, 'Does not allow inherited dependencies to be updated with explicit dependencies.'), + new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), + new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), + new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), + new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), + )) + ->setHelp( + <<remove command removes a package from the current +list of installed packages + +php composer.phar remove + +Read more at https://getcomposer.org/doc/03-cli.md#remove +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $packages = $input->getArgument('packages'); + $packages = array_map('strtolower', $packages); + + $file = Factory::getComposerFile(); + + $jsonFile = new JsonFile($file); + $composer = $jsonFile->read(); + $composerBackup = file_get_contents($jsonFile->getPath()); + + $json = new JsonConfigSource($jsonFile); + + $type = $input->getOption('dev') ? 'require-dev' : 'require'; + $altType = !$input->getOption('dev') ? 'require-dev' : 'require'; + $io = $this->getIO(); + + if ($input->getOption('update-with-dependencies')) { + $io->writeError('You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies.'); + } + + // make sure name checks are done case insensitively + foreach (array('require', 'require-dev') as $linkType) { + if (isset($composer[$linkType])) { + foreach ($composer[$linkType] as $name => $version) { + $composer[$linkType][strtolower($name)] = $name; + } + } + } + + foreach ($packages as $package) { + if (isset($composer[$type][$package])) { + $json->removeLink($type, $composer[$type][$package]); + } elseif (isset($composer[$altType][$package])) { + $io->writeError('' . $composer[$altType][$package] . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); + if ($io->isInteractive()) { + if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ', true)) { + $json->removeLink($altType, $composer[$altType][$package]); + } + } + } elseif (isset($composer[$type]) && $matches = preg_grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$type]))) { + foreach ($matches as $matchedPackage) { + $json->removeLink($type, $matchedPackage); + } + } elseif (isset($composer[$altType]) && $matches = preg_grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$altType]))) { + foreach ($matches as $matchedPackage) { + $io->writeError('' . $matchedPackage . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); + if ($io->isInteractive()) { + if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ', true)) { + $json->removeLink($altType, $matchedPackage); + } + } + } + } else { + $io->writeError(''.$package.' is not required in your composer.json and has not been removed'); + } + } + + if ($input->getOption('no-update')) { + return 0; + } + + // Update packages + $this->resetComposer(); + $composer = $this->getComposer(true, $input->getOption('no-plugins')); + $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'remove', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $install = Installer::create($io, $composer); + + $updateDevMode = !$input->getOption('update-no-dev'); + $optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); + $authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); + $apcu = $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); + + $install + ->setVerbose($input->getOption('verbose')) + ->setDevMode($updateDevMode) + ->setOptimizeAutoloader($optimize) + ->setClassMapAuthoritative($authoritative) + ->setApcuAutoloader($apcu) + ->setUpdate(true) + ->setUpdateWhitelist($packages) + ->setWhitelistTransitiveDependencies(!$input->getOption('no-update-with-dependencies')) + ->setIgnorePlatformRequirements($input->getOption('ignore-platform-reqs')) + ->setRunScripts(!$input->getOption('no-scripts')) + ; + + $status = $install->run(); + if ($status !== 0) { + $io->writeError("\n".'Removal failed, reverting '.$file.' to its original content.'); + file_put_contents($jsonFile->getPath(), $composerBackup); + } + + return $status; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/RequireCommand.php b/vendor/composer/composer/src/Composer/Command/RequireCommand.php new file mode 100644 index 0000000..bb99fc3 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/RequireCommand.php @@ -0,0 +1,277 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Composer\Factory; +use Composer\Installer; +use Composer\Json\JsonFile; +use Composer\Json\JsonManipulator; +use Composer\Package\Version\VersionParser; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Composer\Repository\CompositeRepository; +use Composer\Repository\PlatformRepository; +use Composer\IO\IOInterface; +use Composer\Util\Silencer; + +/** + * @author Jérémy Romey + * @author Jordi Boggiano + */ +class RequireCommand extends InitCommand +{ + private $newlyCreated; + private $json; + private $file; + private $composerBackup; + + protected function configure() + { + $this + ->setName('require') + ->setDescription('Adds required packages to your composer.json and installs them.') + ->setDefinition(array( + new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Optional package name can also include a version constraint, e.g. foo/bar or foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), + new InputOption('dev', null, InputOption::VALUE_NONE, 'Add requirement to require-dev.'), + new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), + new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), + new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), + new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'Do not show package suggestions.'), + new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies.'), + new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), + new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), + new InputOption('update-with-dependencies', null, InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated, except those that are root requirements.'), + new InputOption('update-with-all-dependencies', null, InputOption::VALUE_NONE, 'Allows all inherited dependencies to be updated, including those that are root requirements.'), + new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), + new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies.'), + new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies.'), + new InputOption('sort-packages', null, InputOption::VALUE_NONE, 'Sorts packages when adding/updating a new dependency'), + new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), + new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), + new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), + )) + ->setHelp( + <<file = Factory::getComposerFile(); + $io = $this->getIO(); + + $this->newlyCreated = !file_exists($this->file); + if ($this->newlyCreated && !file_put_contents($this->file, "{\n}\n")) { + $io->writeError(''.$this->file.' could not be created.'); + + return 1; + } + // check for readability by reading the file as is_readable can not be trusted on network-mounts + // see https://github.com/composer/composer/issues/8231 and https://bugs.php.net/bug.php?id=68926 + if (!is_readable($this->file) && false === Silencer::call('file_get_contents', $this->file)) { + $io->writeError(''.$this->file.' is not readable.'); + + return 1; + } + + if (filesize($this->file) === 0) { + file_put_contents($this->file, "{\n}\n"); + } + + $this->json = new JsonFile($this->file); + $this->composerBackup = file_get_contents($this->json->getPath()); + + // check for writability by writing to the file as is_writable can not be trusted on network-mounts + // see https://github.com/composer/composer/issues/8231 and https://bugs.php.net/bug.php?id=68926 + if (!is_writable($this->file) && !Silencer::call('file_put_contents', $this->file, $this->composerBackup)) { + $io->writeError(''.$this->file.' is not writable.'); + + return 1; + } + + $composer = $this->getComposer(true, $input->getOption('no-plugins')); + $repos = $composer->getRepositoryManager()->getRepositories(); + + $platformOverrides = $composer->getConfig()->get('platform') ?: array(); + // initialize $this->repos as it is used by the parent InitCommand + $this->repos = new CompositeRepository(array_merge( + array(new PlatformRepository(array(), $platformOverrides)), + $repos + )); + + if ($composer->getPackage()->getPreferStable()) { + $preferredStability = 'stable'; + } else { + $preferredStability = $composer->getPackage()->getMinimumStability(); + } + + $phpVersion = $this->repos->findPackage('php', '*')->getPrettyVersion(); + try { + $requirements = $this->determineRequirements($input, $output, $input->getArgument('packages'), $phpVersion, $preferredStability, !$input->getOption('no-update')); + } catch (\Exception $e) { + if ($this->newlyCreated) { + throw new \RuntimeException('No composer.json present in the current directory, this may be the cause of the following exception.', 0, $e); + } + + throw $e; + } + + $requireKey = $input->getOption('dev') ? 'require-dev' : 'require'; + $removeKey = $input->getOption('dev') ? 'require' : 'require-dev'; + $requirements = $this->formatRequirements($requirements); + + // validate requirements format + $versionParser = new VersionParser(); + foreach ($requirements as $package => $constraint) { + if (strtolower($package) === $composer->getPackage()->getName()) { + $io->writeError(sprintf('Root package \'%s\' cannot require itself in its composer.json', $package)); + + return 1; + } + $versionParser->parseConstraints($constraint); + } + + $sortPackages = $input->getOption('sort-packages') || $composer->getConfig()->get('sort-packages'); + + if (!$this->updateFileCleanly($this->json, $requirements, $requireKey, $removeKey, $sortPackages)) { + $composerDefinition = $this->json->read(); + foreach ($requirements as $package => $version) { + $composerDefinition[$requireKey][$package] = $version; + unset($composerDefinition[$removeKey][$package]); + } + $this->json->write($composerDefinition); + } + + $io->writeError(''.$this->file.' has been '.($this->newlyCreated ? 'created' : 'updated').''); + + if ($input->getOption('no-update')) { + return 0; + } + + try { + return $this->doUpdate($input, $output, $io, $requirements); + } catch (\Exception $e) { + $this->revertComposerFile(false); + throw $e; + } + } + + private function doUpdate(InputInterface $input, OutputInterface $output, IOInterface $io, array $requirements) + { + // Update packages + $this->resetComposer(); + $composer = $this->getComposer(true, $input->getOption('no-plugins')); + $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); + + $updateDevMode = !$input->getOption('update-no-dev'); + $optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); + $authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); + $apcu = $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'require', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $install = Installer::create($io, $composer); + + $install + ->setVerbose($input->getOption('verbose')) + ->setPreferSource($input->getOption('prefer-source')) + ->setPreferDist($input->getOption('prefer-dist')) + ->setDevMode($updateDevMode) + ->setRunScripts(!$input->getOption('no-scripts')) + ->setSkipSuggest($input->getOption('no-suggest')) + ->setOptimizeAutoloader($optimize) + ->setClassMapAuthoritative($authoritative) + ->setApcuAutoloader($apcu) + ->setUpdate(true) + ->setUpdateWhitelist(array_keys($requirements)) + ->setWhitelistTransitiveDependencies($input->getOption('update-with-dependencies')) + ->setWhitelistAllDependencies($input->getOption('update-with-all-dependencies')) + ->setIgnorePlatformRequirements($input->getOption('ignore-platform-reqs')) + ->setPreferStable($input->getOption('prefer-stable')) + ->setPreferLowest($input->getOption('prefer-lowest')) + ; + + $status = $install->run(); + if ($status !== 0) { + $this->revertComposerFile(false); + } + + return $status; + } + + private function updateFileCleanly($json, array $new, $requireKey, $removeKey, $sortPackages) + { + $contents = file_get_contents($json->getPath()); + + $manipulator = new JsonManipulator($contents); + + foreach ($new as $package => $constraint) { + if (!$manipulator->addLink($requireKey, $package, $constraint, $sortPackages)) { + return false; + } + if (!$manipulator->removeSubNode($removeKey, $package)) { + return false; + } + } + + file_put_contents($json->getPath(), $manipulator->getContents()); + + return true; + } + + protected function interact(InputInterface $input, OutputInterface $output) + { + return; + } + + public function revertComposerFile($hardExit = true) + { + $io = $this->getIO(); + + if ($this->newlyCreated) { + $io->writeError("\n".'Installation failed, deleting '.$this->file.'.'); + unlink($this->json->getPath()); + } else { + $io->writeError("\n".'Installation failed, reverting '.$this->file.' to its original content.'); + file_put_contents($this->json->getPath(), $this->composerBackup); + } + + if ($hardExit) { + exit(1); + } + } +} diff --git a/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php b/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php new file mode 100644 index 0000000..a110cc3 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php @@ -0,0 +1,142 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Script\Event as ScriptEvent; +use Composer\Script\ScriptEvents; +use Composer\Util\ProcessExecutor; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Helper\Table; + +/** + * @author Fabien Potencier + */ +class RunScriptCommand extends BaseCommand +{ + /** + * @var array Array with command events + */ + protected $scriptEvents = array( + ScriptEvents::PRE_INSTALL_CMD, + ScriptEvents::POST_INSTALL_CMD, + ScriptEvents::PRE_UPDATE_CMD, + ScriptEvents::POST_UPDATE_CMD, + ScriptEvents::PRE_STATUS_CMD, + ScriptEvents::POST_STATUS_CMD, + ScriptEvents::POST_ROOT_PACKAGE_INSTALL, + ScriptEvents::POST_CREATE_PROJECT_CMD, + ScriptEvents::PRE_ARCHIVE_CMD, + ScriptEvents::POST_ARCHIVE_CMD, + ScriptEvents::PRE_AUTOLOAD_DUMP, + ScriptEvents::POST_AUTOLOAD_DUMP, + ); + + protected function configure() + { + $this + ->setName('run-script') + ->setAliases(array('run')) + ->setDescription('Runs the scripts defined in composer.json.') + ->setDefinition(array( + new InputArgument('script', InputArgument::OPTIONAL, 'Script name to run.'), + new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), + new InputOption('timeout', null, InputOption::VALUE_REQUIRED, 'Sets script timeout in seconds, or 0 for never.'), + new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), + new InputOption('list', 'l', InputOption::VALUE_NONE, 'List scripts.'), + )) + ->setHelp( + <<run-script command runs scripts defined in composer.json: + +php composer.phar run-script post-update-cmd + +Read more at https://getcomposer.org/doc/03-cli.md#run-script +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + if ($input->getOption('list')) { + return $this->listScripts($output); + } elseif (!$input->getArgument('script')) { + throw new \RuntimeException('Missing required argument "script"'); + } + + $script = $input->getArgument('script'); + if (!in_array($script, $this->scriptEvents)) { + if (defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { + throw new \InvalidArgumentException(sprintf('Script "%s" cannot be run with this command', $script)); + } + } + + $composer = $this->getComposer(); + $devMode = $input->getOption('dev') || !$input->getOption('no-dev'); + $event = new ScriptEvent($script, $composer, $this->getIO(), $devMode); + $hasListeners = $composer->getEventDispatcher()->hasEventListeners($event); + if (!$hasListeners) { + throw new \InvalidArgumentException(sprintf('Script "%s" is not defined in this package', $script)); + } + + $args = $input->getArgument('args'); + + if (null !== $timeout = $input->getOption('timeout')) { + if (!ctype_digit($timeout)) { + throw new \RuntimeException('Timeout value must be numeric and positive if defined, or 0 for forever'); + } + // Override global timeout set before in Composer by environment or config + ProcessExecutor::setTimeout((int) $timeout); + } + + return $composer->getEventDispatcher()->dispatchScript($script, $devMode, $args); + } + + protected function listScripts(OutputInterface $output) + { + $scripts = $this->getComposer()->getPackage()->getScripts(); + + if (!count($scripts)) { + return 0; + } + + $io = $this->getIO(); + $io->writeError('scripts:'); + $table = array(); + foreach ($scripts as $name => $script) { + $description = ''; + try { + $cmd = $this->getApplication()->find($name); + if ($cmd instanceof ScriptAliasCommand) { + $description = $cmd->getDescription(); + } + } catch (\Symfony\Component\Console\Exception\CommandNotFoundException $e) { + // ignore scripts that have no command associated, like native Composer script listeners + } + $table[] = array(' '.$name, $description); + } + + $renderer = new Table($output); + $renderer->setStyle('compact'); + $rendererStyle = $renderer->getStyle(); + $rendererStyle->setVerticalBorderChar(''); + $rendererStyle->setCellRowContentFormat('%s '); + $renderer->setRows($table)->render(); + + return 0; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php b/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php new file mode 100644 index 0000000..455f742 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php @@ -0,0 +1,66 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Jordi Boggiano + */ +class ScriptAliasCommand extends BaseCommand +{ + private $script; + private $description; + + public function __construct($script, $description) + { + $this->script = $script; + $this->description = empty($description) ? 'Runs the '.$script.' script as defined in composer.json.' : $description; + + parent::__construct(); + } + + protected function configure() + { + $this + ->setName($this->script) + ->setDescription($this->description) + ->setDefinition(array( + new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), + new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), + )) + ->setHelp( + <<run-script command runs scripts defined in composer.json: + +php composer.phar run-script post-update-cmd + +Read more at https://getcomposer.org/doc/03-cli.md#run-script +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $composer = $this->getComposer(); + + $args = $input->getArguments(); + + return $composer->getEventDispatcher()->dispatchScript($this->script, $input->getOption('dev') || !$input->getOption('no-dev'), $args['args']); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/SearchCommand.php b/vendor/composer/composer/src/Composer/Command/SearchCommand.php new file mode 100644 index 0000000..0e8aa60 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/SearchCommand.php @@ -0,0 +1,85 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Factory; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Composer\Repository\CompositeRepository; +use Composer\Repository\PlatformRepository; +use Composer\Repository\RepositoryInterface; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; + +/** + * @author Robert Schönthal + */ +class SearchCommand extends BaseCommand +{ + protected $matches; + protected $lowMatches = array(); + protected $tokens; + protected $output; + protected $onlyName; + + protected function configure() + { + $this + ->setName('search') + ->setDescription('Searches for packages.') + ->setDefinition(array( + new InputOption('only-name', 'N', InputOption::VALUE_NONE, 'Search only in name'), + new InputOption('type', 't', InputOption::VALUE_REQUIRED, 'Search for a specific package type'), + new InputArgument('tokens', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'tokens to search for'), + )) + ->setHelp( + <<php composer.phar search symfony composer + +Read more at https://getcomposer.org/doc/03-cli.md#search +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + // init repos + $platformRepo = new PlatformRepository; + $io = $this->getIO(); + if (!($composer = $this->getComposer(false))) { + $composer = Factory::create($this->getIO(), array(), $input->hasParameterOption('--no-plugins')); + } + $localRepo = $composer->getRepositoryManager()->getLocalRepository(); + $installedRepo = new CompositeRepository(array($localRepo, $platformRepo)); + $repos = new CompositeRepository(array_merge(array($installedRepo), $composer->getRepositoryManager()->getRepositories())); + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'search', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $onlyName = $input->getOption('only-name'); + $type = $input->getOption('type') ?: null; + + $flags = $onlyName ? RepositoryInterface::SEARCH_NAME : RepositoryInterface::SEARCH_FULLTEXT; + $results = $repos->search(implode(' ', $input->getArgument('tokens')), $flags, $type); + + foreach ($results as $result) { + $io->write($result['name'] . (isset($result['description']) ? ' '. $result['description'] : '')); + } + + return 0; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php b/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php new file mode 100644 index 0000000..0dba48e --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php @@ -0,0 +1,407 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Composer; +use Composer\Factory; +use Composer\Config; +use Composer\Util\Filesystem; +use Composer\SelfUpdate\Keys; +use Composer\SelfUpdate\Versions; +use Composer\IO\IOInterface; +use Composer\Downloader\FilesystemException; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Finder\Finder; + +/** + * @author Igor Wiedler + * @author Kevin Ran + * @author Jordi Boggiano + */ +class SelfUpdateCommand extends BaseCommand +{ + const HOMEPAGE = 'getcomposer.org'; + const OLD_INSTALL_EXT = '-old.phar'; + + protected function configure() + { + $this + ->setName('self-update') + ->setAliases(array('selfupdate')) + ->setDescription('Updates composer.phar to the latest version.') + ->setDefinition(array( + new InputOption('rollback', 'r', InputOption::VALUE_NONE, 'Revert to an older installation of composer'), + new InputOption('clean-backups', null, InputOption::VALUE_NONE, 'Delete old backups during an update. This makes the current version of composer the only backup available after the update'), + new InputArgument('version', InputArgument::OPTIONAL, 'The version to update to'), + new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), + new InputOption('update-keys', null, InputOption::VALUE_NONE, 'Prompt user for a key update'), + new InputOption('stable', null, InputOption::VALUE_NONE, 'Force an update to the stable channel'), + new InputOption('preview', null, InputOption::VALUE_NONE, 'Force an update to the preview channel'), + new InputOption('snapshot', null, InputOption::VALUE_NONE, 'Force an update to the snapshot channel'), + new InputOption('set-channel-only', null, InputOption::VALUE_NONE, 'Only store the channel as the default one and then exit'), + )) + ->setHelp( + <<self-update command checks getcomposer.org for newer +versions of composer and if found, installs the latest. + +php composer.phar self-update + +Read more at https://getcomposer.org/doc/03-cli.md#self-update-selfupdate- +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $config = Factory::createConfig(); + + if ($config->get('disable-tls') === true) { + $baseUrl = 'http://' . self::HOMEPAGE; + } else { + $baseUrl = 'https://' . self::HOMEPAGE; + } + + $io = $this->getIO(); + $remoteFilesystem = Factory::createRemoteFilesystem($io, $config); + + $versionsUtil = new Versions($config, $remoteFilesystem); + + // switch channel if requested + foreach (array('stable', 'preview', 'snapshot') as $channel) { + if ($input->getOption($channel)) { + $versionsUtil->setChannel($channel); + } + } + + if ($input->getOption('set-channel-only')) { + return 0; + } + + $cacheDir = $config->get('cache-dir'); + $rollbackDir = $config->get('data-dir'); + $home = $config->get('home'); + $localFilename = realpath($_SERVER['argv'][0]) ?: $_SERVER['argv'][0]; + + if ($input->getOption('update-keys')) { + return $this->fetchKeys($io, $config); + } + + // check if current dir is writable and if not try the cache dir from settings + $tmpDir = is_writable(dirname($localFilename)) ? dirname($localFilename) : $cacheDir; + + // check for permissions in local filesystem before start connection process + if (!is_writable($tmpDir)) { + throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written'); + } + + // check if composer is running as the same user that owns the directory root, only if POSIX is defined and callable + if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { + $composeUser = posix_getpwuid(posix_geteuid()); + $homeOwner = posix_getpwuid(fileowner($home)); + if (isset($composeUser['name']) && isset($homeOwner['name']) && $composeUser['name'] !== $homeOwner['name']) { + $io->writeError('You are running composer as "'.$composeUser['name'].'", while "'.$home.'" is owned by "'.$homeOwner['name'].'"'); + } + } + + if ($input->getOption('rollback')) { + return $this->rollback($output, $rollbackDir, $localFilename); + } + + $latest = $versionsUtil->getLatest(); + $latestVersion = $latest['version']; + $updateVersion = $input->getArgument('version') ?: $latestVersion; + + if (preg_match('{^[0-9a-f]{40}$}', $updateVersion) && $updateVersion !== $latestVersion) { + $io->writeError('You can not update to a specific SHA-1 as those phars are not available for download'); + + return 1; + } + + if (Composer::VERSION === $updateVersion) { + $io->writeError(sprintf('You are already using composer version %s (%s channel).', $updateVersion, $versionsUtil->getChannel())); + + // remove all backups except for the most recent, if any + if ($input->getOption('clean-backups')) { + $this->cleanBackups($rollbackDir, $this->getLastBackupVersion($rollbackDir)); + } + + return 0; + } + + $tempFilename = $tmpDir . '/' . basename($localFilename, '.phar').'-temp.phar'; + $backupFile = sprintf( + '%s/%s-%s%s', + $rollbackDir, + strtr(Composer::RELEASE_DATE, ' :', '_-'), + preg_replace('{^([0-9a-f]{7})[0-9a-f]{33}$}', '$1', Composer::VERSION), + self::OLD_INSTALL_EXT + ); + + $updatingToTag = !preg_match('{^[0-9a-f]{40}$}', $updateVersion); + + $io->write(sprintf("Updating to version %s (%s channel).", $updateVersion, $versionsUtil->getChannel())); + $remoteFilename = $baseUrl . ($updatingToTag ? "/download/{$updateVersion}/composer.phar" : '/composer.phar'); + $signature = $remoteFilesystem->getContents(self::HOMEPAGE, $remoteFilename.'.sig', false); + $io->writeError(' ', false); + $remoteFilesystem->copy(self::HOMEPAGE, $remoteFilename, $tempFilename, !$input->getOption('no-progress')); + $io->writeError(''); + + if (!file_exists($tempFilename) || !$signature) { + $io->writeError('The download of the new composer version failed for an unexpected reason'); + + return 1; + } + + // verify phar signature + if (!extension_loaded('openssl') && $config->get('disable-tls')) { + $io->writeError('Skipping phar signature verification as you have disabled OpenSSL via config.disable-tls'); + } else { + if (!extension_loaded('openssl')) { + throw new \RuntimeException('The openssl extension is required for phar signatures to be verified but it is not available. ' + . 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); + } + + $sigFile = 'file://'.$home.'/' . ($updatingToTag ? 'keys.tags.pub' : 'keys.dev.pub'); + if (!file_exists($sigFile)) { + file_put_contents( + $home.'/keys.dev.pub', + <<getOption('clean-backups')) { + $this->cleanBackups($rollbackDir); + } + + if ($err = $this->setLocalPhar($localFilename, $tempFilename, $backupFile)) { + @unlink($tempFilename); + $io->writeError('The file is corrupted ('.$err->getMessage().').'); + $io->writeError('Please re-run the self-update command to try again.'); + + return 1; + } + + if (file_exists($backupFile)) { + $io->writeError(sprintf( + 'Use composer self-update --rollback to return to version %s', + Composer::VERSION + )); + } else { + $io->writeError('A backup of the current version could not be written to '.$backupFile.', no rollback possible'); + } + + return 0; + } + + protected function fetchKeys(IOInterface $io, Config $config) + { + if (!$io->isInteractive()) { + throw new \RuntimeException('Public keys can not be fetched in non-interactive mode, please run Composer interactively'); + } + + $io->write('Open https://composer.github.io/pubkeys.html to find the latest keys'); + + $validator = function ($value) { + if (!preg_match('{^-----BEGIN PUBLIC KEY-----$}', trim($value))) { + throw new \UnexpectedValueException('Invalid input'); + } + + return trim($value)."\n"; + }; + + $devKey = ''; + while (!preg_match('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $devKey, $match)) { + $devKey = $io->askAndValidate('Enter Dev / Snapshot Public Key (including lines with -----): ', $validator); + while ($line = $io->ask('')) { + $devKey .= trim($line)."\n"; + if (trim($line) === '-----END PUBLIC KEY-----') { + break; + } + } + } + file_put_contents($keyPath = $config->get('home').'/keys.dev.pub', $match[0]); + $io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); + + $tagsKey = ''; + while (!preg_match('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $tagsKey, $match)) { + $tagsKey = $io->askAndValidate('Enter Tags Public Key (including lines with -----): ', $validator); + while ($line = $io->ask('')) { + $tagsKey .= trim($line)."\n"; + if (trim($line) === '-----END PUBLIC KEY-----') { + break; + } + } + } + file_put_contents($keyPath = $config->get('home').'/keys.tags.pub', $match[0]); + $io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); + + $io->write('Public keys stored in '.$config->get('home')); + } + + protected function rollback(OutputInterface $output, $rollbackDir, $localFilename) + { + $rollbackVersion = $this->getLastBackupVersion($rollbackDir); + if (!$rollbackVersion) { + throw new \UnexpectedValueException('Composer rollback failed: no installation to roll back to in "'.$rollbackDir.'"'); + } + + $oldFile = $rollbackDir . '/' . $rollbackVersion . self::OLD_INSTALL_EXT; + + if (!is_file($oldFile)) { + throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be found'); + } + if (!is_readable($oldFile)) { + throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be read'); + } + + $io = $this->getIO(); + $io->writeError(sprintf("Rolling back to version %s.", $rollbackVersion)); + if ($err = $this->setLocalPhar($localFilename, $oldFile)) { + $io->writeError('The backup file was corrupted ('.$err->getMessage().').'); + + return 1; + } + + return 0; + } + + /** + * @param string $localFilename + * @param string $newFilename + * @param string $backupTarget + * @throws \Exception + * @return \UnexpectedValueException|\PharException|null + */ + protected function setLocalPhar($localFilename, $newFilename, $backupTarget = null) + { + try { + @chmod($newFilename, fileperms($localFilename)); + if (!ini_get('phar.readonly')) { + // test the phar validity + $phar = new \Phar($newFilename); + // free the variable to unlock the file + unset($phar); + } + + // copy current file into installations dir + if ($backupTarget && file_exists($localFilename)) { + @copy($localFilename, $backupTarget); + } + + rename($newFilename, $localFilename); + + return null; + } catch (\Exception $e) { + if (!$e instanceof \UnexpectedValueException && !$e instanceof \PharException) { + throw $e; + } + + return $e; + } + } + + protected function cleanBackups($rollbackDir, $except = null) + { + $finder = $this->getOldInstallationFinder($rollbackDir); + $io = $this->getIO(); + $fs = new Filesystem; + + foreach ($finder as $file) { + if ($except && $file->getBasename(self::OLD_INSTALL_EXT) === $except) { + continue; + } + $file = (string) $file; + $io->writeError('Removing: '.$file.''); + $fs->remove($file); + } + } + + protected function getLastBackupVersion($rollbackDir) + { + $finder = $this->getOldInstallationFinder($rollbackDir); + $finder->sortByName(); + $files = iterator_to_array($finder); + + if (count($files)) { + return basename(end($files), self::OLD_INSTALL_EXT); + } + + return false; + } + + protected function getOldInstallationFinder($rollbackDir) + { + $finder = Finder::create() + ->depth(0) + ->files() + ->name('*' . self::OLD_INSTALL_EXT) + ->in($rollbackDir); + + return $finder; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/ShowCommand.php b/vendor/composer/composer/src/Composer/Command/ShowCommand.php new file mode 100644 index 0000000..e906174 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/ShowCommand.php @@ -0,0 +1,1015 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Composer; +use Composer\DependencyResolver\DefaultPolicy; +use Composer\DependencyResolver\Pool; +use Composer\Json\JsonFile; +use Composer\Package\BasePackage; +use Composer\Package\CompletePackageInterface; +use Composer\Package\PackageInterface; +use Composer\Package\Version\VersionParser; +use Composer\Package\Version\VersionSelector; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Composer\Repository\ArrayRepository; +use Composer\Repository\ComposerRepository; +use Composer\Repository\CompositeRepository; +use Composer\Repository\PlatformRepository; +use Composer\Repository\RepositoryFactory; +use Composer\Repository\RepositoryInterface; +use Composer\Semver\Constraint\ConstraintInterface; +use Composer\Semver\Semver; +use Composer\Spdx\SpdxLicenses; +use Composer\Util\Platform; +use Symfony\Component\Console\Formatter\OutputFormatterStyle; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Terminal; + +/** + * @author Robert Schönthal + * @author Jordi Boggiano + * @author Jérémy Romey + * @author Mihai Plasoianu + */ +class ShowCommand extends BaseCommand +{ + /** @var VersionParser */ + protected $versionParser; + protected $colors; + + /** @var Pool */ + private $pool; + + protected function configure() + { + $this + ->setName('show') + ->setAliases(array('info')) + ->setDescription('Shows information about packages.') + ->setDefinition(array( + new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.'), + new InputArgument('version', InputArgument::OPTIONAL, 'Version or version constraint to inspect'), + new InputOption('all', null, InputOption::VALUE_NONE, 'List all packages'), + new InputOption('installed', 'i', InputOption::VALUE_NONE, 'List installed packages only (enabled by default, only present for BC).'), + new InputOption('platform', 'p', InputOption::VALUE_NONE, 'List platform packages only'), + new InputOption('available', 'a', InputOption::VALUE_NONE, 'List available packages only'), + new InputOption('self', 's', InputOption::VALUE_NONE, 'Show the root package information'), + new InputOption('name-only', 'N', InputOption::VALUE_NONE, 'List package names only'), + new InputOption('path', 'P', InputOption::VALUE_NONE, 'Show package paths'), + new InputOption('tree', 't', InputOption::VALUE_NONE, 'List the dependencies as a tree'), + new InputOption('latest', 'l', InputOption::VALUE_NONE, 'Show the latest version'), + new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show the latest version but only for packages that are outdated'), + new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it with the --outdated option if you don\'t want to be informed about new versions of some packages.'), + new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates. Use with the --outdated option.'), + new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), + new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), + new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text'), + )) + ->setHelp( + <<versionParser = new VersionParser; + if ($input->getOption('tree')) { + $this->initStyles($output); + } + + $composer = $this->getComposer(false); + $io = $this->getIO(); + + if ($input->getOption('installed')) { + $io->writeError('You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.'); + } + + if ($input->getOption('outdated')) { + $input->setOption('latest', true); + } elseif ($input->getOption('ignore')) { + $io->writeError('You are using the option "ignore" for action other than "outdated", it will be ignored.'); + } + + if ($input->getOption('direct') && ($input->getOption('all') || $input->getOption('available') || $input->getOption('platform'))) { + $io->writeError('The --direct (-D) option is not usable in combination with --all, --platform (-p) or --available (-a)'); + + return 1; + } + + if ($input->getOption('tree') && ($input->getOption('all') || $input->getOption('available'))) { + $io->writeError('The --tree (-t) option is not usable in combination with --all or --available (-a)'); + + return 1; + } + + if ($input->getOption('tree') && $input->getOption('latest')) { + $io->writeError('The --tree (-t) option is not usable in combination with --latest (-l)'); + + return 1; + } + + $format = $input->getOption('format'); + if (!in_array($format, array('text', 'json'))) { + $io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); + + return 1; + } + + // init repos + $platformOverrides = array(); + if ($composer) { + $platformOverrides = $composer->getConfig()->get('platform') ?: array(); + } + $platformRepo = new PlatformRepository(array(), $platformOverrides); + $phpVersion = $platformRepo->findPackage('php', '*')->getVersion(); + + if ($input->getOption('self')) { + $package = $this->getComposer()->getPackage(); + $repos = $installedRepo = new ArrayRepository(array($package)); + } elseif ($input->getOption('platform')) { + $repos = $installedRepo = $platformRepo; + } elseif ($input->getOption('available')) { + $installedRepo = $platformRepo; + if ($composer) { + $repos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); + } else { + $defaultRepos = RepositoryFactory::defaultRepos($io); + $repos = new CompositeRepository($defaultRepos); + $io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); + } + } elseif ($input->getOption('all') && $composer) { + $localRepo = $composer->getRepositoryManager()->getLocalRepository(); + $installedRepo = new CompositeRepository(array($localRepo, $platformRepo)); + $repos = new CompositeRepository(array_merge(array($installedRepo), $composer->getRepositoryManager()->getRepositories())); + } elseif ($input->getOption('all')) { + $defaultRepos = RepositoryFactory::defaultRepos($io); + $io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); + $installedRepo = $platformRepo; + $repos = new CompositeRepository(array_merge(array($installedRepo), $defaultRepos)); + } else { + $repos = $installedRepo = $this->getComposer()->getRepositoryManager()->getLocalRepository(); + $rootPkg = $this->getComposer()->getPackage(); + if (!$installedRepo->getPackages() && ($rootPkg->getRequires() || $rootPkg->getDevRequires())) { + $io->writeError('No dependencies installed. Try running composer install or update.'); + } + } + + if ($composer) { + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'show', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + } + + if ($input->getOption('latest') && null === $composer) { + $io->writeError('No composer.json found in the current directory, disabling "latest" option'); + $input->setOption('latest', false); + } + + $packageFilter = $input->getArgument('package'); + + // show single package or single version + if (($packageFilter && false === strpos($packageFilter, '*')) || !empty($package)) { + if (empty($package)) { + list($package, $versions) = $this->getPackage($installedRepo, $repos, $input->getArgument('package'), $input->getArgument('version')); + + if (empty($package)) { + $options = $input->getOptions(); + if (!isset($options['working-dir']) || !file_exists('composer.json')) { + throw new \InvalidArgumentException('Package ' . $packageFilter . ' not found'); + } + + $io->writeError('Package ' . $packageFilter . ' not found in ' . $options['working-dir'] . '/composer.json'); + + return 1; + } + } else { + $versions = array($package->getPrettyVersion() => $package->getVersion()); + } + + $exitCode = 0; + if ($input->getOption('tree')) { + $arrayTree = $this->generatePackageTree($package, $installedRepo, $repos); + + if ('json' === $format) { + $io->write(JsonFile::encode(array('installed' => array($arrayTree)))); + } else { + $this->displayPackageTree(array($arrayTree)); + } + } else { + $latestPackage = null; + if ($input->getOption('latest')) { + $latestPackage = $this->findLatestPackage($package, $composer, $phpVersion); + } + if ($input->getOption('outdated') && $input->getOption('strict') && $latestPackage && $latestPackage->getFullPrettyVersion() !== $package->getFullPrettyVersion() && !$latestPackage->isAbandoned()) { + $exitCode = 1; + } + if ($input->getOption('path')) { + $io->write($package->getName(), false); + $io->write(' ' . strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n")); + + return $exitCode; + } + $this->printMeta($package, $versions, $installedRepo, $latestPackage ?: null); + $this->printLinks($package, 'requires'); + $this->printLinks($package, 'devRequires', 'requires (dev)'); + if ($package->getSuggests()) { + $io->write("\nsuggests"); + foreach ($package->getSuggests() as $suggested => $reason) { + $io->write($suggested . ' ' . $reason . ''); + } + } + $this->printLinks($package, 'provides'); + $this->printLinks($package, 'conflicts'); + $this->printLinks($package, 'replaces'); + } + + return $exitCode; + } + + // show tree view if requested + if ($input->getOption('tree')) { + $rootRequires = $this->getRootRequires(); + $packages = $installedRepo->getPackages(); + usort($packages, 'strcmp'); + $arrayTree = array(); + foreach ($packages as $package) { + if (in_array($package->getName(), $rootRequires, true)) { + $arrayTree[] = $this->generatePackageTree($package, $installedRepo, $repos); + } + } + + if ('json' === $format) { + $io->write(JsonFile::encode(array('installed' => $arrayTree))); + } else { + $this->displayPackageTree($arrayTree); + } + + return 0; + } + + if ($repos instanceof CompositeRepository) { + $repos = $repos->getRepositories(); + } elseif (!is_array($repos)) { + $repos = array($repos); + } + + // list packages + $packages = array(); + if (null !== $packageFilter) { + $packageFilter = '{^'.str_replace('\\*', '.*?', preg_quote($packageFilter)).'$}i'; + } + + $packageListFilter = array(); + if ($input->getOption('direct')) { + $packageListFilter = $this->getRootRequires(); + } + + if (class_exists('Symfony\Component\Console\Terminal')) { + $terminal = new Terminal(); + $width = $terminal->getWidth(); + } else { + // For versions of Symfony console before 3.2 + list($width) = $this->getApplication()->getTerminalDimensions(); + } + if (null === $width) { + // In case the width is not detected, we're probably running the command + // outside of a real terminal, use space without a limit + $width = PHP_INT_MAX; + } + if (Platform::isWindows()) { + $width--; + } else { + $width = max(80, $width); + } + + if ($input->getOption('path') && null === $composer) { + $io->writeError('No composer.json found in the current directory, disabling "path" option'); + $input->setOption('path', false); + } + + foreach ($repos as $repo) { + if ($repo === $platformRepo) { + $type = 'platform'; + } elseif ( + $repo === $installedRepo + || ($installedRepo instanceof CompositeRepository && in_array($repo, $installedRepo->getRepositories(), true)) + ) { + $type = 'installed'; + } else { + $type = 'available'; + } + if ($repo instanceof ComposerRepository && $repo->hasProviders()) { + foreach ($repo->getProviderNames() as $name) { + if (!$packageFilter || preg_match($packageFilter, $name)) { + $packages[$type][$name] = $name; + } + } + } else { + foreach ($repo->getPackages() as $package) { + if (!isset($packages[$type][$package->getName()]) + || !is_object($packages[$type][$package->getName()]) + || version_compare($packages[$type][$package->getName()]->getVersion(), $package->getVersion(), '<') + ) { + if (!$packageFilter || preg_match($packageFilter, $package->getName())) { + if (!$packageListFilter || in_array($package->getName(), $packageListFilter, true)) { + $packages[$type][$package->getName()] = $package; + } + } + } + } + } + } + + $showAllTypes = $input->getOption('all'); + $showLatest = $input->getOption('latest'); + $showMinorOnly = $input->getOption('minor-only'); + $ignoredPackages = array_map('strtolower', $input->getOption('ignore')); + $indent = $showAllTypes ? ' ' : ''; + $latestPackages = array(); + $exitCode = 0; + $viewData = array(); + $viewMetaData = array(); + foreach (array('platform' => true, 'available' => false, 'installed' => true) as $type => $showVersion) { + if (isset($packages[$type])) { + ksort($packages[$type]); + + $nameLength = $versionLength = $latestLength = 0; + + if ($showLatest && $showVersion) { + foreach ($packages[$type] as $package) { + if (is_object($package)) { + $latestPackage = $this->findLatestPackage($package, $composer, $phpVersion, $showMinorOnly); + if ($latestPackage === false) { + continue; + } + + $latestPackages[$package->getPrettyName()] = $latestPackage; + } + } + } + + $writePath = !$input->getOption('name-only') && $input->getOption('path'); + $writeVersion = !$input->getOption('name-only') && !$input->getOption('path') && $showVersion; + $writeLatest = $writeVersion && $showLatest; + $writeDescription = !$input->getOption('name-only') && !$input->getOption('path'); + + $hasOutdatedPackages = false; + + $viewData[$type] = array(); + foreach ($packages[$type] as $package) { + $packageViewData = array(); + if (is_object($package)) { + $latestPackage = null; + if ($showLatest && isset($latestPackages[$package->getPrettyName()])) { + $latestPackage = $latestPackages[$package->getPrettyName()]; + } + + // Determine if Composer is checking outdated dependencies and if current package should trigger non-default exit code + $packageIsUpToDate = $latestPackage && $latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion() && !$latestPackage->isAbandoned(); + $packageIsIgnored = \in_array($package->getPrettyName(), $ignoredPackages, true); + if ($input->getOption('outdated') && ($packageIsUpToDate || $packageIsIgnored)) { + continue; + } elseif ($input->getOption('outdated') || $input->getOption('strict')) { + $hasOutdatedPackages = true; + } + + $packageViewData['name'] = $package->getPrettyName(); + $nameLength = max($nameLength, strlen($package->getPrettyName())); + if ($writeVersion) { + $packageViewData['version'] = $package->getFullPrettyVersion(); + $versionLength = max($versionLength, strlen($package->getFullPrettyVersion())); + } + if ($writeLatest && $latestPackage) { + $packageViewData['latest'] = $latestPackage->getFullPrettyVersion(); + $packageViewData['latest-status'] = $this->getUpdateStatus($latestPackage, $package); + $latestLength = max($latestLength, strlen($latestPackage->getFullPrettyVersion())); + } + if ($writeDescription) { + $packageViewData['description'] = $package->getDescription(); + } + if ($writePath) { + $packageViewData['path'] = strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n"); + } + + if ($latestPackage && $latestPackage->isAbandoned()) { + $replacement = is_string($latestPackage->getReplacementPackage()) + ? 'Use ' . $latestPackage->getReplacementPackage() . ' instead' + : 'No replacement was suggested'; + $packageWarning = sprintf( + 'Package %s is abandoned, you should avoid using it. %s.', + $package->getPrettyName(), + $replacement + ); + $packageViewData['warning'] = $packageWarning; + } + } else { + $packageViewData['name'] = $package; + $nameLength = max($nameLength, strlen($package)); + } + $viewData[$type][] = $packageViewData; + } + $viewMetaData[$type] = array( + 'nameLength' => $nameLength, + 'versionLength' => $versionLength, + 'latestLength' => $latestLength, + ); + if ($input->getOption('strict') && $hasOutdatedPackages) { + $exitCode = 1; + break; + } + } + } + + if ('json' === $format) { + $io->write(JsonFile::encode($viewData)); + } else { + foreach ($viewData as $type => $packages) { + $nameLength = $viewMetaData[$type]['nameLength']; + $versionLength = $viewMetaData[$type]['versionLength']; + $latestLength = $viewMetaData[$type]['latestLength']; + + $writeVersion = $nameLength + $versionLength + 3 <= $width; + $writeLatest = $nameLength + $versionLength + $latestLength + 3 <= $width; + $writeDescription = $nameLength + $versionLength + $latestLength + 24 <= $width; + + if ($writeLatest && !$io->isDecorated()) { + $latestLength += 2; + } + + if ($showAllTypes) { + if ('available' === $type) { + $io->write('' . $type . ':'); + } else { + $io->write('' . $type . ':'); + } + } + + foreach ($packages as $package) { + $io->write($indent . str_pad($package['name'], $nameLength, ' '), false); + if (isset($package['version']) && $writeVersion) { + $io->write(' ' . str_pad($package['version'], $versionLength, ' '), false); + } + if (isset($package['latest']) && $writeLatest) { + $latestVersion = $package['latest']; + $updateStatus = $package['latest-status']; + $style = $this->updateStatusToVersionStyle($updateStatus); + if (!$io->isDecorated()) { + $latestVersion = str_replace(array('up-to-date', 'semver-safe-update', 'update-possible'), array('=', '!', '~'), $updateStatus) . ' ' . $latestVersion; + } + $io->write(' <' . $style . '>' . str_pad($latestVersion, $latestLength, ' ') . '', false); + } + if (isset($package['description']) && $writeDescription) { + $description = strtok($package['description'], "\r\n"); + $remaining = $width - $nameLength - $versionLength - 4; + if ($writeLatest) { + $remaining -= $latestLength; + } + if (strlen($description) > $remaining) { + $description = substr($description, 0, $remaining - 3) . '...'; + } + $io->write(' ' . $description, false); + } + if (isset($package['path'])) { + $io->write(' ' . $package['path'], false); + } + $io->write(''); + if (isset($package['warning'])) { + $io->writeError('' . $package['warning'] . ''); + } + } + + if ($showAllTypes) { + $io->write(''); + } + } + } + + return $exitCode; + } + + protected function getRootRequires() + { + $rootPackage = $this->getComposer()->getPackage(); + + return array_map( + 'strtolower', + array_keys(array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires())) + ); + } + + protected function getVersionStyle(PackageInterface $latestPackage, PackageInterface $package) + { + return $this->updateStatusToVersionStyle($this->getUpdateStatus($latestPackage, $package)); + } + + /** + * finds a package by name and version if provided + * + * @param RepositoryInterface $installedRepo + * @param RepositoryInterface $repos + * @param string $name + * @param ConstraintInterface|string $version + * @throws \InvalidArgumentException + * @return array array(CompletePackageInterface, array of versions) + */ + protected function getPackage(RepositoryInterface $installedRepo, RepositoryInterface $repos, $name, $version = null) + { + $name = strtolower($name); + $constraint = is_string($version) ? $this->versionParser->parseConstraints($version) : $version; + + $policy = new DefaultPolicy(); + $pool = new Pool('dev'); + $pool->addRepository($repos); + + $matchedPackage = null; + $versions = array(); + $matches = $pool->whatProvides($name, $constraint); + foreach ($matches as $index => $package) { + // skip providers/replacers + if ($package->getName() !== $name) { + unset($matches[$index]); + continue; + } + + // select an exact match if it is in the installed repo and no specific version was required + if (null === $version && $installedRepo->hasPackage($package)) { + $matchedPackage = $package; + } + + $versions[$package->getPrettyVersion()] = $package->getVersion(); + $matches[$index] = $package->getId(); + } + + // select preferred package according to policy rules + if (!$matchedPackage && $matches && $preferred = $policy->selectPreferredPackages($pool, array(), $matches)) { + $matchedPackage = $pool->literalToPackage($preferred[0]); + } + + return array($matchedPackage, $versions); + } + + /** + * Prints package metadata. + * + * @param CompletePackageInterface $package + * @param array $versions + * @param RepositoryInterface $installedRepo + */ + protected function printMeta(CompletePackageInterface $package, array $versions, RepositoryInterface $installedRepo, PackageInterface $latestPackage = null) + { + $io = $this->getIO(); + $io->write('name : ' . $package->getPrettyName()); + $io->write('descrip. : ' . $package->getDescription()); + $io->write('keywords : ' . implode(', ', $package->getKeywords() ?: array())); + $this->printVersions($package, $versions, $installedRepo); + if ($latestPackage) { + $style = $this->getVersionStyle($latestPackage, $package); + $io->write('latest : <'.$style.'>' . $latestPackage->getPrettyVersion() . ''); + } else { + $latestPackage = $package; + } + $io->write('type : ' . $package->getType()); + $this->printLicenses($package); + $io->write('source : ' . sprintf('[%s] %s %s', $package->getSourceType(), $package->getSourceUrl(), $package->getSourceReference())); + $io->write('dist : ' . sprintf('[%s] %s %s', $package->getDistType(), $package->getDistUrl(), $package->getDistReference())); + if ($installedRepo->hasPackage($package)) { + $io->write('path : ' . sprintf('%s', realpath($this->getComposer()->getInstallationManager()->getInstallPath($package)))); + } + $io->write('names : ' . implode(', ', $package->getNames())); + + if ($latestPackage->isAbandoned()) { + $replacement = ($latestPackage->getReplacementPackage() !== null) + ? ' The author suggests using the ' . $latestPackage->getReplacementPackage(). ' package instead.' + : null; + + $io->writeError( + sprintf('Attention: This package is abandoned and no longer maintained.%s', $replacement) + ); + } + + if ($package->getSupport()) { + $io->write("\nsupport"); + foreach ($package->getSupport() as $type => $value) { + $io->write('' . $type . ' : '.$value); + } + } + + if ($package->getAutoload()) { + $io->write("\nautoload"); + foreach ($package->getAutoload() as $type => $autoloads) { + $io->write('' . $type . ''); + + if ($type === 'psr-0') { + foreach ($autoloads as $name => $path) { + $io->write(($name ?: '*') . ' => ' . (is_array($path) ? implode(', ', $path) : ($path ?: '.'))); + } + } elseif ($type === 'psr-4') { + foreach ($autoloads as $name => $path) { + $io->write(($name ?: '*') . ' => ' . (is_array($path) ? implode(', ', $path) : ($path ?: '.'))); + } + } elseif ($type === 'classmap') { + $io->write(implode(', ', $autoloads)); + } + } + if ($package->getIncludePaths()) { + $io->write('include-path'); + $io->write(implode(', ', $package->getIncludePaths())); + } + } + } + + /** + * Prints all available versions of this package and highlights the installed one if any. + * + * @param CompletePackageInterface $package + * @param array $versions + * @param RepositoryInterface $installedRepo + */ + protected function printVersions(CompletePackageInterface $package, array $versions, RepositoryInterface $installedRepo) + { + uasort($versions, 'version_compare'); + $versions = array_keys(array_reverse($versions)); + + // highlight installed version + if ($installedRepo->hasPackage($package)) { + $installedVersion = $package->getPrettyVersion(); + $key = array_search($installedVersion, $versions); + if (false !== $key) { + $versions[$key] = '* ' . $installedVersion . ''; + } + } + + $versions = implode(', ', $versions); + + $this->getIO()->write('versions : ' . $versions); + } + + /** + * print link objects + * + * @param CompletePackageInterface $package + * @param string $linkType + * @param string $title + */ + protected function printLinks(CompletePackageInterface $package, $linkType, $title = null) + { + $title = $title ?: $linkType; + $io = $this->getIO(); + if ($links = $package->{'get'.ucfirst($linkType)}()) { + $io->write("\n" . $title . ""); + + foreach ($links as $link) { + $io->write($link->getTarget() . ' ' . $link->getPrettyConstraint() . ''); + } + } + } + + /** + * Prints the licenses of a package with metadata + * + * @param CompletePackageInterface $package + */ + protected function printLicenses(CompletePackageInterface $package) + { + $spdxLicenses = new SpdxLicenses(); + + $licenses = $package->getLicense(); + $io = $this->getIO(); + + foreach ($licenses as $licenseId) { + $license = $spdxLicenses->getLicenseByIdentifier($licenseId); // keys: 0 fullname, 1 osi, 2 url + + if (!$license) { + $out = $licenseId; + } else { + // is license OSI approved? + if ($license[1] === true) { + $out = sprintf('%s (%s) (OSI approved) %s', $license[0], $licenseId, $license[2]); + } else { + $out = sprintf('%s (%s) %s', $license[0], $licenseId, $license[2]); + } + } + + $io->write('license : ' . $out); + } + } + + /** + * Init styles for tree + * + * @param OutputInterface $output + */ + protected function initStyles(OutputInterface $output) + { + $this->colors = array( + 'green', + 'yellow', + 'cyan', + 'magenta', + 'blue', + ); + + foreach ($this->colors as $color) { + $style = new OutputFormatterStyle($color); + $output->getFormatter()->setStyle($color, $style); + } + } + + /** + * Display the tree + * + * @param array $arrayTree + */ + protected function displayPackageTree(array $arrayTree) + { + $io = $this->getIO(); + foreach ($arrayTree as $package) { + $io->write(sprintf('%s', $package['name']), false); + $io->write(' ' . $package['version'], false); + $io->write(' ' . strtok($package['description'], "\r\n")); + + if (isset($package['requires'])) { + $requires = $package['requires']; + $treeBar = '├'; + $j = 0; + $total = count($requires); + foreach ($requires as $require) { + $requireName = $require['name']; + $j++; + if ($j === $total) { + $treeBar = 'â””'; + } + $level = 1; + $color = $this->colors[$level]; + $info = sprintf( + '%s──<%s>%s %s', + $treeBar, + $color, + $requireName, + $color, + $require['version'] + ); + $this->writeTreeLine($info); + + $treeBar = str_replace('â””', ' ', $treeBar); + $packagesInTree = array($package['name'], $requireName); + + $this->displayTree($require, $packagesInTree, $treeBar, $level + 1); + } + } + } + } + + /** + * Generate the package tree + * + * @param PackageInterface $package + * @param RepositoryInterface $installedRepo + * @param RepositoryInterface $distantRepos + * @return array + */ + protected function generatePackageTree( + PackageInterface $package, + RepositoryInterface $installedRepo, + RepositoryInterface $distantRepos + ) { + $requires = $package->getRequires(); + ksort($requires); + $children = array(); + foreach ($requires as $requireName => $require) { + $packagesInTree = array($package->getName(), $requireName); + + $treeChildDesc = array( + 'name' => $requireName, + 'version' => $require->getPrettyConstraint(), + ); + + $deepChildren = $this->addTree($requireName, $require, $installedRepo, $distantRepos, $packagesInTree); + + if ($deepChildren) { + $treeChildDesc['requires'] = $deepChildren; + } + + $children[] = $treeChildDesc; + } + $tree = array( + 'name' => $package->getPrettyName(), + 'version' => $package->getPrettyVersion(), + 'description' => $package->getDescription(), + ); + + if ($children) { + $tree['requires'] = $children; + } + + return $tree; + } + + /** + * Display a package tree + * + * @param PackageInterface|string $package + * @param array $packagesInTree + * @param string $previousTreeBar + * @param int $level + */ + protected function displayTree( + $package, + array $packagesInTree, + $previousTreeBar = '├', + $level = 1 + ) { + $previousTreeBar = str_replace('├', '│', $previousTreeBar); + if (isset($package['requires'])) { + $requires = $package['requires']; + $treeBar = $previousTreeBar . ' ├'; + $i = 0; + $total = count($requires); + foreach ($requires as $require) { + $currentTree = $packagesInTree; + $i++; + if ($i === $total) { + $treeBar = $previousTreeBar . ' â””'; + } + $colorIdent = $level % count($this->colors); + $color = $this->colors[$colorIdent]; + + $circularWarn = in_array( + $require['name'], + $currentTree, + true + ) ? '(circular dependency aborted here)' : ''; + $info = rtrim(sprintf( + '%s──<%s>%s %s %s', + $treeBar, + $color, + $require['name'], + $color, + $require['version'], + $circularWarn + )); + $this->writeTreeLine($info); + + $treeBar = str_replace('â””', ' ', $treeBar); + + $currentTree[] = $require['name']; + $this->displayTree($require, $currentTree, $treeBar, $level + 1); + } + } + } + + /** + * Display a package tree + * + * @param string $name + * @param PackageInterface|string $package + * @param RepositoryInterface $installedRepo + * @param RepositoryInterface $distantRepos + * @param array $packagesInTree + * @return array + */ + protected function addTree( + $name, + $package, + RepositoryInterface $installedRepo, + RepositoryInterface $distantRepos, + array $packagesInTree + ) { + $children = array(); + list($package, $versions) = $this->getPackage( + $installedRepo, + $distantRepos, + $name, + $package->getPrettyConstraint() === 'self.version' ? $package->getConstraint() : $package->getPrettyConstraint() + ); + if (is_object($package)) { + $requires = $package->getRequires(); + ksort($requires); + foreach ($requires as $requireName => $require) { + $currentTree = $packagesInTree; + + $treeChildDesc = array( + 'name' => $requireName, + 'version' => $require->getPrettyConstraint(), + ); + + if (!in_array($requireName, $currentTree, true)) { + $currentTree[] = $requireName; + $deepChildren = $this->addTree($requireName, $require, $installedRepo, $distantRepos, $currentTree); + if ($deepChildren) { + $treeChildDesc['requires'] = $deepChildren; + } + } + + $children[] = $treeChildDesc; + } + } + + return $children; + } + + private function updateStatusToVersionStyle($updateStatus) + { + // 'up-to-date' is printed green + // 'semver-safe-update' is printed red + // 'update-possible' is printed yellow + return str_replace(array('up-to-date', 'semver-safe-update', 'update-possible'), array('info', 'highlight', 'comment'), $updateStatus); + } + + private function getUpdateStatus(PackageInterface $latestPackage, PackageInterface $package) + { + if ($latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion()) { + return 'up-to-date'; + } + + $constraint = $package->getVersion(); + if (0 !== strpos($constraint, 'dev-')) { + $constraint = '^'.$constraint; + } + if ($latestPackage->getVersion() && Semver::satisfies($latestPackage->getVersion(), $constraint)) { + // it needs an immediate semver-compliant upgrade + return 'semver-safe-update'; + } + + // it needs an upgrade but has potential BC breaks so is not urgent + return 'update-possible'; + } + + private function writeTreeLine($line) + { + $io = $this->getIO(); + if (!$io->isDecorated()) { + $line = str_replace(array('â””', '├', '──', '│'), array('`-', '|-', '-', '|'), $line); + } + + $io->write($line); + } + + /** + * Given a package, this finds the latest package matching it + * + * @param PackageInterface $package + * @param Composer $composer + * @param string $phpVersion + * @param bool $minorOnly + * + * @return PackageInterface|null + */ + private function findLatestPackage(PackageInterface $package, Composer $composer, $phpVersion, $minorOnly = false) + { + // find the latest version allowed in this pool + $name = $package->getName(); + $versionSelector = new VersionSelector($this->getPool($composer)); + $stability = $composer->getPackage()->getMinimumStability(); + $flags = $composer->getPackage()->getStabilityFlags(); + if (isset($flags[$name])) { + $stability = array_search($flags[$name], BasePackage::$stabilities, true); + } + + $bestStability = $stability; + if ($composer->getPackage()->getPreferStable()) { + $bestStability = $package->getStability(); + } + + $targetVersion = null; + if (0 === strpos($package->getVersion(), 'dev-')) { + $targetVersion = $package->getVersion(); + } + + if ($targetVersion === null && $minorOnly) { + $targetVersion = '^' . $package->getVersion(); + } + + return $versionSelector->findBestCandidate($name, $targetVersion, $phpVersion, $bestStability); + } + + private function getPool(Composer $composer) + { + if (!$this->pool) { + $this->pool = new Pool($composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags()); + $this->pool->addRepository(new CompositeRepository($composer->getRepositoryManager()->getRepositories())); + } + + return $this->pool; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/StatusCommand.php b/vendor/composer/composer/src/Composer/Command/StatusCommand.php new file mode 100644 index 0000000..116d5b9 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/StatusCommand.php @@ -0,0 +1,214 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Composer\Downloader\ChangeReportInterface; +use Composer\Downloader\DvcsDownloaderInterface; +use Composer\Downloader\VcsCapableDownloaderInterface; +use Composer\Package\Dumper\ArrayDumper; +use Composer\Package\Version\VersionGuesser; +use Composer\Package\Version\VersionParser; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Composer\Script\ScriptEvents; +use Composer\Util\ProcessExecutor; + +/** + * @author Tiago Ribeiro + * @author Rui Marinho + */ +class StatusCommand extends BaseCommand +{ + const EXIT_CODE_ERRORS = 1; + const EXIT_CODE_UNPUSHED_CHANGES = 2; + const EXIT_CODE_VERSION_CHANGES = 4; + + /** + * @throws \Symfony\Component\Console\Exception\InvalidArgumentException + */ + protected function configure() + { + $this + ->setName('status') + ->setDescription('Shows a list of locally modified packages, for packages installed from source.') + ->setDefinition(array( + new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Show modified files for each directory that contains changes.'), + )) + ->setHelp( + <<getComposer(); + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'status', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $installedRepo = $composer->getRepositoryManager()->getLocalRepository(); + + $dm = $composer->getDownloadManager(); + $im = $composer->getInstallationManager(); + + // Dispatch pre-status-command + $composer->getEventDispatcher()->dispatchScript(ScriptEvents::PRE_STATUS_CMD, true); + + $errors = array(); + $io = $this->getIO(); + $unpushedChanges = array(); + $vcsVersionChanges = array(); + + $parser = new VersionParser; + $guesser = new VersionGuesser($composer->getConfig(), new ProcessExecutor($io), $parser); + $dumper = new ArrayDumper; + + // list packages + foreach ($installedRepo->getCanonicalPackages() as $package) { + $downloader = $dm->getDownloaderForInstalledPackage($package); + $targetDir = $im->getInstallPath($package); + + if ($downloader instanceof ChangeReportInterface) { + if (is_link($targetDir)) { + $errors[$targetDir] = $targetDir . ' is a symbolic link.'; + } + + if ($changes = $downloader->getLocalChanges($package, $targetDir)) { + $errors[$targetDir] = $changes; + } + } + + if ($downloader instanceof VcsCapableDownloaderInterface) { + if ($currentRef = $downloader->getVcsReference($package, $targetDir)) { + switch ($package->getInstallationSource()) { + case 'source': + $previousRef = $package->getSourceReference(); + break; + case 'dist': + $previousRef = $package->getDistReference(); + break; + default: + $previousRef = null; + } + + $currentVersion = $guesser->guessVersion($dumper->dump($package), $targetDir); + + if ($previousRef && $currentVersion && $currentVersion['commit'] !== $previousRef) { + $vcsVersionChanges[$targetDir] = array( + 'previous' => array( + 'version' => $package->getPrettyVersion(), + 'ref' => $previousRef, + ), + 'current' => array( + 'version' => $currentVersion['pretty_version'], + 'ref' => $currentVersion['commit'], + ), + ); + } + } + } + + if ($downloader instanceof DvcsDownloaderInterface) { + if ($unpushed = $downloader->getUnpushedChanges($package, $targetDir)) { + $unpushedChanges[$targetDir] = $unpushed; + } + } + } + + // output errors/warnings + if (!$errors && !$unpushedChanges && !$vcsVersionChanges) { + $io->writeError('No local changes'); + + return 0; + } + + if ($errors) { + $io->writeError('You have changes in the following dependencies:'); + + foreach ($errors as $path => $changes) { + if ($input->getOption('verbose')) { + $indentedChanges = implode("\n", array_map(function ($line) { + return ' ' . ltrim($line); + }, explode("\n", $changes))); + $io->write(''.$path.':'); + $io->write($indentedChanges); + } else { + $io->write($path); + } + } + } + + if ($unpushedChanges) { + $io->writeError('You have unpushed changes on the current branch in the following dependencies:'); + + foreach ($unpushedChanges as $path => $changes) { + if ($input->getOption('verbose')) { + $indentedChanges = implode("\n", array_map(function ($line) { + return ' ' . ltrim($line); + }, explode("\n", $changes))); + $io->write(''.$path.':'); + $io->write($indentedChanges); + } else { + $io->write($path); + } + } + } + + if ($vcsVersionChanges) { + $io->writeError('You have version variations in the following dependencies:'); + + foreach ($vcsVersionChanges as $path => $changes) { + if ($input->getOption('verbose')) { + // If we don't can't find a version, use the ref instead. + $currentVersion = $changes['current']['version'] ?: $changes['current']['ref']; + $previousVersion = $changes['previous']['version'] ?: $changes['previous']['ref']; + + if ($io->isVeryVerbose()) { + // Output the ref regardless of whether or not it's being used as the version + $currentVersion .= sprintf(' (%s)', $changes['current']['ref']); + $previousVersion .= sprintf(' (%s)', $changes['previous']['ref']); + } + + $io->write(''.$path.':'); + $io->write(sprintf(' From %s to %s', $previousVersion, $currentVersion)); + } else { + $io->write($path); + } + } + } + + if (($errors || $unpushedChanges || $vcsVersionChanges) && !$input->getOption('verbose')) { + $io->writeError('Use --verbose (-v) to see a list of files'); + } + + // Dispatch post-status-command + $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_STATUS_CMD, true); + + return ($errors ? self::EXIT_CODE_ERRORS : 0) + ($unpushedChanges ? self::EXIT_CODE_UNPUSHED_CHANGES : 0) + ($vcsVersionChanges ? self::EXIT_CODE_VERSION_CHANGES : 0); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php b/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php new file mode 100644 index 0000000..add539b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php @@ -0,0 +1,154 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Repository\PlatformRepository; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class SuggestsCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('suggests') + ->setDescription('Shows package suggestions.') + ->setDefinition(array( + new InputOption('by-package', null, InputOption::VALUE_NONE, 'Groups output by suggesting package'), + new InputOption('by-suggestion', null, InputOption::VALUE_NONE, 'Groups output by suggested package'), + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Exclude suggestions from require-dev packages'), + new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that you want to list suggestions from.'), + )) + ->setHelp( + <<%command.name% command shows a sorted list of suggested packages. + +Enabling -v implies --by-package --by-suggestion, showing both lists. + +Read more at https://getcomposer.org/doc/03-cli.md#suggests +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $lock = $this->getComposer()->getLocker()->getLockData(); + + if (empty($lock)) { + throw new \RuntimeException('Lockfile seems to be empty?'); + } + + $packages = $lock['packages']; + + if (!$input->getOption('no-dev')) { + $packages += $lock['packages-dev']; + } + + $filter = $input->getArgument('packages'); + + // First assemble lookup list of packages that are installed, replaced or provided + $installed = array(); + foreach ($packages as $package) { + $installed[] = $package['name']; + + if (!empty($package['provide'])) { + $installed = array_merge($installed, array_keys($package['provide'])); + } + + if (!empty($package['replace'])) { + $installed = array_merge($installed, array_keys($package['replace'])); + } + } + + // Undub and sort the install list into a sorted lookup array + $installed = array_flip($installed); + ksort($installed); + + // Init platform repo + $platform = new PlatformRepository(array(), $this->getComposer()->getConfig()->get('platform') ?: array()); + + // Next gather all suggestions that are not in that list + $suggesters = array(); + $suggested = array(); + foreach ($packages as $package) { + $packageName = $package['name']; + if ((!empty($filter) && !in_array($packageName, $filter)) || empty($package['suggest'])) { + continue; + } + foreach ($package['suggest'] as $suggestion => $reason) { + if (false === strpos('/', $suggestion) && null !== $platform->findPackage($suggestion, '*')) { + continue; + } + if (!isset($installed[$suggestion])) { + $suggesters[$packageName][$suggestion] = $reason; + $suggested[$suggestion][$packageName] = $reason; + } + } + } + ksort($suggesters); + ksort($suggested); + + // Determine output mode + $mode = 0; + $io = $this->getIO(); + if ($input->getOption('by-package') || $io->isVerbose()) { + $mode |= 1; + } + if ($input->getOption('by-suggestion')) { + $mode |= 2; + } + + // Simple mode + if ($mode === 0) { + foreach (array_keys($suggested) as $suggestion) { + $io->write(sprintf('%s', $suggestion)); + } + + return 0; + } + + // Grouped by package + if ($mode & 1) { + foreach ($suggesters as $suggester => $suggestions) { + $io->write(sprintf('%s suggests:', $suggester)); + + foreach ($suggestions as $suggestion => $reason) { + $io->write(sprintf(' - %s: %s', $suggestion, $reason ?: '*')); + } + $io->write(''); + } + } + + // Grouped by suggestion + if ($mode & 2) { + // Improve readability in full mode + if ($mode & 1) { + $io->write(str_repeat('-', 78)); + } + foreach ($suggested as $suggestion => $suggesters) { + $io->write(sprintf('%s is suggested by:', $suggestion)); + + foreach ($suggesters as $suggester => $reason) { + $io->write(sprintf(' - %s: %s', $suggester, $reason ?: '*')); + } + $io->write(''); + } + } + + return 0; + } +} diff --git a/vendor/composer/composer/src/Composer/Command/UpdateCommand.php b/vendor/composer/composer/src/Composer/Command/UpdateCommand.php new file mode 100644 index 0000000..e68c265 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/UpdateCommand.php @@ -0,0 +1,228 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Composer; +use Composer\Installer; +use Composer\IO\IOInterface; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Symfony\Component\Console\Helper\Table; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Question\Question; + +/** + * @author Jordi Boggiano + * @author Nils Adermann + */ +class UpdateCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('update') + ->setAliases(array('u', 'upgrade')) + ->setDescription('Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file.') + ->setDefinition(array( + new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that should be updated, if not provided all packages are.'), + new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), + new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), + new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), + new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), + new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), + new InputOption('lock', null, InputOption::VALUE_NONE, 'Only updates the lock file hash to suppress warning about the lock file being out of date.'), + new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), + new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), + new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), + new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), + new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'Do not show package suggestions.'), + new InputOption('with-dependencies', null, InputOption::VALUE_NONE, 'Add also dependencies of whitelisted packages to the whitelist, except those defined in root package.'), + new InputOption('with-all-dependencies', null, InputOption::VALUE_NONE, 'Add also all dependencies of whitelisted packages to the whitelist, including those defined in root package.'), + new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), + new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump.'), + new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), + new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), + new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), + new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies.'), + new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies.'), + new InputOption('interactive', 'i', InputOption::VALUE_NONE, 'Interactive interface with autocompletion to select the packages to update.'), + new InputOption('root-reqs', null, InputOption::VALUE_NONE, 'Restricts the update to your first degree dependencies.'), + )) + ->setHelp( + <<update command reads the composer.json file from the +current directory, processes it, and updates, removes or installs all the +dependencies. + +php composer.phar update + +To limit the update operation to a few packages, you can list the package(s) +you want to update as such: + +php composer.phar update vendor/package1 foo/mypackage [...] + +You may also use an asterisk (*) pattern to limit the update operation to package(s) +from a specific vendor: + +php composer.phar update vendor/package1 foo/* [...] + +To select packages names interactively with auto-completion use -i. + +Read more at https://getcomposer.org/doc/03-cli.md#update-u +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = $this->getIO(); + if ($input->getOption('no-custom-installers')) { + $io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); + $input->setOption('no-plugins', true); + } + + if ($input->getOption('dev')) { + $io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); + } + + $composer = $this->getComposer(true, $input->getOption('no-plugins')); + + $packages = $input->getArgument('packages'); + + if ($input->getOption('interactive')) { + $packages = $this->getPackagesInteractively($io, $input, $output, $composer, $packages); + } + + if ($input->getOption('root-reqs')) { + $require = array_keys($composer->getPackage()->getRequires()); + if (!$input->getOption('no-dev')) { + $requireDev = array_keys($composer->getPackage()->getDevRequires()); + $require = array_merge($require, $requireDev); + } + + if (!empty($packages)) { + $packages = array_intersect($packages, $require); + } else { + $packages = $require; + } + } + + $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'update', $input, $output); + $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + $install = Installer::create($io, $composer); + + $config = $composer->getConfig(); + list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); + + $optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); + $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); + $apcu = $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); + + $install + ->setDryRun($input->getOption('dry-run')) + ->setVerbose($input->getOption('verbose')) + ->setPreferSource($preferSource) + ->setPreferDist($preferDist) + ->setDevMode(!$input->getOption('no-dev')) + ->setDumpAutoloader(!$input->getOption('no-autoloader')) + ->setRunScripts(!$input->getOption('no-scripts')) + ->setSkipSuggest($input->getOption('no-suggest')) + ->setOptimizeAutoloader($optimize) + ->setClassMapAuthoritative($authoritative) + ->setApcuAutoloader($apcu) + ->setUpdate(true) + ->setUpdateWhitelist($input->getOption('lock') ? array('lock') : $packages) + ->setWhitelistTransitiveDependencies($input->getOption('with-dependencies')) + ->setWhitelistAllDependencies($input->getOption('with-all-dependencies')) + ->setIgnorePlatformRequirements($input->getOption('ignore-platform-reqs')) + ->setPreferStable($input->getOption('prefer-stable')) + ->setPreferLowest($input->getOption('prefer-lowest')) + ; + + if ($input->getOption('no-plugins')) { + $install->disablePlugins(); + } + + return $install->run(); + } + + private function getPackagesInteractively(IOInterface $io, InputInterface $input, OutputInterface $output, Composer $composer, array $packages) + { + if (!$input->isInteractive()) { + throw new \InvalidArgumentException('--interactive cannot be used in non-interactive terminals.'); + } + + $requires = array_merge( + $composer->getPackage()->getRequires(), + $composer->getPackage()->getDevRequires() + ); + $autocompleterValues = array(); + foreach ($requires as $require) { + $target = $require->getTarget(); + $autocompleterValues[strtolower($target)] = $target; + } + + $installedPackages = $composer->getRepositoryManager()->getLocalRepository()->getPackages(); + foreach ($installedPackages as $package) { + $autocompleterValues[$package->getName()] = $package->getPrettyName(); + } + + $helper = $this->getHelper('question'); + $question = new Question('Enter package name: ', null); + + $io->writeError('Press enter without value to end submission'); + + do { + $autocompleterValues = array_diff($autocompleterValues, $packages); + $question->setAutocompleterValues($autocompleterValues); + $addedPackage = $helper->ask($input, $output, $question); + + if (!is_string($addedPackage) || empty($addedPackage)) { + break; + } + + $addedPackage = strtolower($addedPackage); + if (!in_array($addedPackage, $packages)) { + $packages[] = $addedPackage; + } + } while (true); + + $packages = array_filter($packages); + if (!$packages) { + throw new \InvalidArgumentException('You must enter minimum one package.'); + } + + $table = new Table($output); + $table->setHeaders(array('Selected packages')); + foreach ($packages as $package) { + $table->addRow(array($package)); + } + $table->render(); + + if ($io->askConfirmation(sprintf( + 'Would you like to continue and update the above package%s [yes]? ', + 1 === count($packages) ? '' : 's' + ), true)) { + return $packages; + } + + throw new \RuntimeException('Installation aborted.'); + } +} diff --git a/vendor/composer/composer/src/Composer/Command/ValidateCommand.php b/vendor/composer/composer/src/Composer/Command/ValidateCommand.php new file mode 100644 index 0000000..7ec15cc --- /dev/null +++ b/vendor/composer/composer/src/Composer/Command/ValidateCommand.php @@ -0,0 +1,172 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Command; + +use Composer\Factory; +use Composer\Package\Loader\ValidatingArrayLoader; +use Composer\Plugin\CommandEvent; +use Composer\Plugin\PluginEvents; +use Composer\Util\ConfigValidator; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * ValidateCommand + * + * @author Robert Schönthal + * @author Jordi Boggiano + */ +class ValidateCommand extends BaseCommand +{ + /** + * configure + */ + protected function configure() + { + $this + ->setName('validate') + ->setDescription('Validates a composer.json and composer.lock.') + ->setDefinition(array( + new InputOption('no-check-all', null, InputOption::VALUE_NONE, 'Do not validate requires for overly strict/loose constraints'), + new InputOption('no-check-lock', null, InputOption::VALUE_NONE, 'Do not check if lock file is up to date'), + new InputOption('no-check-publish', null, InputOption::VALUE_NONE, 'Do not check for publish errors'), + new InputOption('with-dependencies', 'A', InputOption::VALUE_NONE, 'Also validate the composer.json of all installed dependencies'), + new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code for warnings as well as errors'), + new InputArgument('file', InputArgument::OPTIONAL, 'path to composer.json file'), + )) + ->setHelp( + <<getArgument('file') ?: Factory::getComposerFile(); + $io = $this->getIO(); + + if (!file_exists($file)) { + $io->writeError('' . $file . ' not found.'); + + return 3; + } + if (!is_readable($file)) { + $io->writeError('' . $file . ' is not readable.'); + + return 3; + } + + $validator = new ConfigValidator($io); + $checkAll = $input->getOption('no-check-all') ? 0 : ValidatingArrayLoader::CHECK_ALL; + $checkPublish = !$input->getOption('no-check-publish'); + $checkLock = !$input->getOption('no-check-lock'); + $isStrict = $input->getOption('strict'); + list($errors, $publishErrors, $warnings) = $validator->validate($file, $checkAll); + + $lockErrors = array(); + $composer = Factory::create($io, $file, $input->hasParameterOption('--no-plugins')); + $locker = $composer->getLocker(); + if ($locker->isLocked() && !$locker->isFresh()) { + $lockErrors[] = 'The lock file is not up to date with the latest changes in composer.json, it is recommended that you run `composer update` or `composer update `.'; + } + + $this->outputResult($io, $file, $errors, $warnings, $checkPublish, $publishErrors, $checkLock, $lockErrors, true, $isStrict); + + // $errors include publish and lock errors when exists + $exitCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); + + if ($input->getOption('with-dependencies')) { + $localRepo = $composer->getRepositoryManager()->getLocalRepository(); + foreach ($localRepo->getPackages() as $package) { + $path = $composer->getInstallationManager()->getInstallPath($package); + $file = $path . '/composer.json'; + if (is_dir($path) && file_exists($file)) { + list($errors, $publishErrors, $warnings) = $validator->validate($file, $checkAll); + $this->outputResult($io, $package->getPrettyName(), $errors, $warnings, $checkPublish, $publishErrors); + + $depCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); + $exitCode = max($depCode, $exitCode); + } + } + } + + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'validate', $input, $output); + $eventCode = $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + $exitCode = max($eventCode, $exitCode); + + return $exitCode; + } + + private function outputResult($io, $name, &$errors, &$warnings, $checkPublish = false, $publishErrors = array(), $checkLock = false, $lockErrors = array(), $printSchemaUrl = false, $isStrict = false) + { + if (!$errors && !$publishErrors && !$warnings) { + $io->write('' . $name . ' is valid'); + } elseif (!$errors && !$publishErrors) { + $io->writeError('' . $name . ' is valid, but with a few warnings'); + if ($printSchemaUrl) { + $io->writeError('See https://getcomposer.org/doc/04-schema.md for details on the schema'); + } + } elseif (!$errors) { + $io->writeError('' . $name . ' is valid for simple usage with composer but has'); + $io->writeError('strict errors that make it unable to be published as a package:'); + if ($printSchemaUrl) { + $io->writeError('See https://getcomposer.org/doc/04-schema.md for details on the schema'); + } + } else { + $io->writeError('' . $name . ' is invalid, the following errors/warnings were found:'); + } + + // If checking publish errors, display them as errors, otherwise just show them as warnings + // Skip when it is a strict check and we don't want to check publish errors + if ($checkPublish) { + $errors = array_merge($errors, $publishErrors); + } elseif (!$isStrict) { + $warnings = array_merge($warnings, $publishErrors); + } + + // If checking lock errors, display them as errors, otherwise just show them as warnings + // Skip when it is a strict check and we don't want to check lock errors + if ($checkLock) { + $errors = array_merge($errors, $lockErrors); + } elseif (!$isStrict) { + $warnings = array_merge($warnings, $lockErrors); + } + + $messages = array( + 'error' => $errors, + 'warning' => $warnings, + ); + + foreach ($messages as $style => $msgs) { + foreach ($msgs as $msg) { + $io->writeError('<' . $style . '>' . $msg . ''); + } + } + } +} diff --git a/vendor/composer/composer/src/Composer/Compiler.php b/vendor/composer/composer/src/Composer/Compiler.php new file mode 100644 index 0000000..2c763d0 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Compiler.php @@ -0,0 +1,284 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Json\JsonFile; +use Composer\Spdx\SpdxLicenses; +use Composer\CaBundle\CaBundle; +use Symfony\Component\Finder\Finder; +use Symfony\Component\Process\Process; +use Seld\PharUtils\Timestamps; + +/** + * The Compiler class compiles composer into a phar + * + * @author Fabien Potencier + * @author Jordi Boggiano + */ +class Compiler +{ + private $version; + private $branchAliasVersion = ''; + private $versionDate; + + /** + * Compiles composer into a single phar file + * + * @param string $pharFile The full path to the file to create + * @throws \RuntimeException + */ + public function compile($pharFile = 'composer.phar') + { + if (file_exists($pharFile)) { + unlink($pharFile); + } + + $process = new Process('git log --pretty="%H" -n1 HEAD', __DIR__); + if ($process->run() != 0) { + throw new \RuntimeException('Can\'t run git log. You must ensure to run compile from composer git repository clone and that git binary is available.'); + } + $this->version = trim($process->getOutput()); + + $process = new Process('git log -n1 --pretty=%ci HEAD', __DIR__); + if ($process->run() != 0) { + throw new \RuntimeException('Can\'t run git log. You must ensure to run compile from composer git repository clone and that git binary is available.'); + } + + $this->versionDate = new \DateTime(trim($process->getOutput())); + $this->versionDate->setTimezone(new \DateTimeZone('UTC')); + + $process = new Process('git describe --tags --exact-match HEAD'); + if ($process->run() == 0) { + $this->version = trim($process->getOutput()); + } else { + // get branch-alias defined in composer.json for dev-master (if any) + $localConfig = __DIR__.'/../../composer.json'; + $file = new JsonFile($localConfig); + $localConfig = $file->read(); + if (isset($localConfig['extra']['branch-alias']['dev-master'])) { + $this->branchAliasVersion = $localConfig['extra']['branch-alias']['dev-master']; + } + } + + $phar = new \Phar($pharFile, 0, 'composer.phar'); + $phar->setSignatureAlgorithm(\Phar::SHA1); + + $phar->startBuffering(); + + $finderSort = function ($a, $b) { + return strcmp(strtr($a->getRealPath(), '\\', '/'), strtr($b->getRealPath(), '\\', '/')); + }; + + $finder = new Finder(); + $finder->files() + ->ignoreVCS(true) + ->name('*.php') + ->notName('Compiler.php') + ->notName('ClassLoader.php') + ->in(__DIR__.'/..') + ->sort($finderSort) + ; + + foreach ($finder as $file) { + $this->addFile($phar, $file); + } + $this->addFile($phar, new \SplFileInfo(__DIR__ . '/Autoload/ClassLoader.php'), false); + + $finder = new Finder(); + $finder->files() + ->name('*.json') + ->in(__DIR__.'/../../res') + ->in(SpdxLicenses::getResourcesDir()) + ->sort($finderSort) + ; + + foreach ($finder as $file) { + $this->addFile($phar, $file, false); + } + $this->addFile($phar, new \SplFileInfo(__DIR__ . '/../../vendor/symfony/console/Resources/bin/hiddeninput.exe'), false); + + $finder = new Finder(); + $finder->files() + ->ignoreVCS(true) + ->name('*.php') + ->name('LICENSE') + ->exclude('Tests') + ->exclude('tests') + ->exclude('docs') + ->in(__DIR__.'/../../vendor/symfony/') + ->in(__DIR__.'/../../vendor/seld/jsonlint/') + ->in(__DIR__.'/../../vendor/justinrainbow/json-schema/') + ->in(__DIR__.'/../../vendor/composer/spdx-licenses/') + ->in(__DIR__.'/../../vendor/composer/semver/') + ->in(__DIR__.'/../../vendor/composer/ca-bundle/') + ->in(__DIR__.'/../../vendor/composer/xdebug-handler/') + ->in(__DIR__.'/../../vendor/psr/') + ->sort($finderSort) + ; + + foreach ($finder as $file) { + $this->addFile($phar, $file); + } + + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/autoload.php')); + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_namespaces.php')); + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_psr4.php')); + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_classmap.php')); + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_files.php')); + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_real.php')); + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_static.php')); + if (file_exists(__DIR__.'/../../vendor/composer/include_paths.php')) { + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/include_paths.php')); + } + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/ClassLoader.php')); + + $this->addFile($phar, new \SplFileInfo(CaBundle::getBundledCaBundlePath()), false); + + $this->addComposerBin($phar); + + // Stubs + $phar->setStub($this->getStub()); + + $phar->stopBuffering(); + + // disabled for interoperability with systems without gzip ext + // $phar->compressFiles(\Phar::GZ); + + $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../LICENSE'), false); + + unset($phar); + + // re-sign the phar with reproducible timestamp / signature + $util = new Timestamps($pharFile); + $util->updateTimestamps($this->versionDate); + $util->save($pharFile, \Phar::SHA1); + } + + /** + * @param \SplFileInfo $file + * @return string + */ + private function getRelativeFilePath($file) + { + $realPath = $file->getRealPath(); + $pathPrefix = dirname(dirname(__DIR__)).DIRECTORY_SEPARATOR; + + $pos = strpos($realPath, $pathPrefix); + $relativePath = ($pos !== false) ? substr_replace($realPath, '', $pos, strlen($pathPrefix)) : $realPath; + + return strtr($relativePath, '\\', '/'); + } + + private function addFile($phar, $file, $strip = true) + { + $path = $this->getRelativeFilePath($file); + $content = file_get_contents($file); + if ($strip) { + $content = $this->stripWhitespace($content); + } elseif ('LICENSE' === basename($file)) { + $content = "\n".$content."\n"; + } + + if ($path === 'src/Composer/Composer.php') { + $content = str_replace('@package_version@', $this->version, $content); + $content = str_replace('@package_branch_alias_version@', $this->branchAliasVersion, $content); + $content = str_replace('@release_date@', $this->versionDate->format('Y-m-d H:i:s'), $content); + $content = preg_replace('{SOURCE_VERSION = \'[^\']+\';}', 'SOURCE_VERSION = \'\';', $content); + } + + $phar->addFromString($path, $content); + } + + private function addComposerBin($phar) + { + $content = file_get_contents(__DIR__.'/../../bin/composer'); + $content = preg_replace('{^#!/usr/bin/env php\s*}', '', $content); + $phar->addFromString('bin/composer', $content); + } + + /** + * Removes whitespace from a PHP source string while preserving line numbers. + * + * @param string $source A PHP string + * @return string The PHP string with the whitespace removed + */ + private function stripWhitespace($source) + { + if (!function_exists('token_get_all')) { + return $source; + } + + $output = ''; + foreach (token_get_all($source) as $token) { + if (is_string($token)) { + $output .= $token; + } elseif (in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) { + $output .= str_repeat("\n", substr_count($token[1], "\n")); + } elseif (T_WHITESPACE === $token[0]) { + // reduce wide spaces + $whitespace = preg_replace('{[ \t]+}', ' ', $token[1]); + // normalize newlines to \n + $whitespace = preg_replace('{(?:\r\n|\r|\n)}', "\n", $whitespace); + // trim leading spaces + $whitespace = preg_replace('{\n +}', "\n", $whitespace); + $output .= $whitespace; + } else { + $output .= $token[1]; + } + } + + return $output; + } + + private function getStub() + { + $stub = <<<'EOF' +#!/usr/bin/env php + + * Jordi Boggiano + * + * For the full copyright and license information, please view + * the license that is located at the bottom of this file. + */ + +// Avoid APC causing random fatal errors per https://github.com/composer/composer/issues/264 +if (extension_loaded('apc') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN) && filter_var(ini_get('apc.cache_by_default'), FILTER_VALIDATE_BOOLEAN)) { + if (version_compare(phpversion('apc'), '3.0.12', '>=')) { + ini_set('apc.cache_by_default', 0); + } else { + fwrite(STDERR, 'Warning: APC <= 3.0.12 may cause fatal errors when running composer commands.'.PHP_EOL); + fwrite(STDERR, 'Update APC, or set apc.enable_cli or apc.cache_by_default to 0 in your php.ini.'.PHP_EOL); + } +} + +Phar::mapPhar('composer.phar'); + +EOF; + + // add warning once the phar is older than 60 days + if (preg_match('{^[a-f0-9]+$}', $this->version)) { + $warningTime = $this->versionDate->format('U') + 60 * 86400; + $stub .= "define('COMPOSER_DEV_WARNING_TIME', $warningTime);\n"; + } + + return $stub . <<<'EOF' +require 'phar://composer.phar/bin/composer'; + +__HALT_COMPILER(); +EOF; + } +} diff --git a/vendor/composer/composer/src/Composer/Composer.php b/vendor/composer/composer/src/Composer/Composer.php new file mode 100644 index 0000000..35cd782 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Composer.php @@ -0,0 +1,283 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Package\RootPackageInterface; +use Composer\Package\Locker; +use Composer\Repository\RepositoryManager; +use Composer\Installer\InstallationManager; +use Composer\Plugin\PluginManager; +use Composer\Downloader\DownloadManager; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Autoload\AutoloadGenerator; +use Composer\Package\Archiver\ArchiveManager; + +/** + * @author Jordi Boggiano + * @author Konstantin Kudryashiv + * @author Nils Adermann + */ +class Composer +{ + /* + * Examples of the following constants in the various configurations they can be in + * + * releases (phar): + * const VERSION = '1.8.2'; + * const BRANCH_ALIAS_VERSION = ''; + * const RELEASE_DATE = '2019-01-29 15:00:53'; + * const SOURCE_VERSION = ''; + * + * snapshot builds (phar): + * const VERSION = 'd3873a05650e168251067d9648845c220c50e2d7'; + * const BRANCH_ALIAS_VERSION = '1.9-dev'; + * const RELEASE_DATE = '2019-02-20 07:43:56'; + * const SOURCE_VERSION = ''; + * + * source (git clone): + * const VERSION = '1.9.3'; + * const BRANCH_ALIAS_VERSION = ''; + * const RELEASE_DATE = '2020-02-04 12:58:49'; + * const SOURCE_VERSION = '1.8-dev+source'; + */ + const VERSION = '1.9.3'; + const BRANCH_ALIAS_VERSION = ''; + const RELEASE_DATE = '2020-02-04 12:58:49'; + const SOURCE_VERSION = '1.9-dev+source'; + + public static function getVersion() + { + // no replacement done, this must be a source checkout + if (self::VERSION === '@package_version'.'@') { + return self::SOURCE_VERSION; + } + + // we have a branch alias and version is a commit id, this must be a snapshot build + if (self::BRANCH_ALIAS_VERSION !== '' && preg_match('{^[a-f0-9]{40}$}', self::VERSION)) { + return self::BRANCH_ALIAS_VERSION.'+'.self::VERSION; + } + + return self::VERSION; + } + + /** + * @var Package\RootPackageInterface + */ + private $package; + + /** + * @var Locker + */ + private $locker; + + /** + * @var Repository\RepositoryManager + */ + private $repositoryManager; + + /** + * @var Downloader\DownloadManager + */ + private $downloadManager; + + /** + * @var Installer\InstallationManager + */ + private $installationManager; + + /** + * @var Plugin\PluginManager + */ + private $pluginManager; + + /** + * @var Config + */ + private $config; + + /** + * @var EventDispatcher + */ + private $eventDispatcher; + + /** + * @var Autoload\AutoloadGenerator + */ + private $autoloadGenerator; + + /** + * @var ArchiveManager + */ + private $archiveManager; + + /** + * @param Package\RootPackageInterface $package + * @return void + */ + public function setPackage(RootPackageInterface $package) + { + $this->package = $package; + } + + /** + * @return Package\RootPackageInterface + */ + public function getPackage() + { + return $this->package; + } + + /** + * @param Config $config + */ + public function setConfig(Config $config) + { + $this->config = $config; + } + + /** + * @return Config + */ + public function getConfig() + { + return $this->config; + } + + /** + * @param Package\Locker $locker + */ + public function setLocker(Locker $locker) + { + $this->locker = $locker; + } + + /** + * @return Package\Locker + */ + public function getLocker() + { + return $this->locker; + } + + /** + * @param Repository\RepositoryManager $manager + */ + public function setRepositoryManager(RepositoryManager $manager) + { + $this->repositoryManager = $manager; + } + + /** + * @return Repository\RepositoryManager + */ + public function getRepositoryManager() + { + return $this->repositoryManager; + } + + /** + * @param Downloader\DownloadManager $manager + */ + public function setDownloadManager(DownloadManager $manager) + { + $this->downloadManager = $manager; + } + + /** + * @return Downloader\DownloadManager + */ + public function getDownloadManager() + { + return $this->downloadManager; + } + + /** + * @param ArchiveManager $manager + */ + public function setArchiveManager(ArchiveManager $manager) + { + $this->archiveManager = $manager; + } + + /** + * @return ArchiveManager + */ + public function getArchiveManager() + { + return $this->archiveManager; + } + + /** + * @param Installer\InstallationManager $manager + */ + public function setInstallationManager(InstallationManager $manager) + { + $this->installationManager = $manager; + } + + /** + * @return Installer\InstallationManager + */ + public function getInstallationManager() + { + return $this->installationManager; + } + + /** + * @param Plugin\PluginManager $manager + */ + public function setPluginManager(PluginManager $manager) + { + $this->pluginManager = $manager; + } + + /** + * @return Plugin\PluginManager + */ + public function getPluginManager() + { + return $this->pluginManager; + } + + /** + * @param EventDispatcher $eventDispatcher + */ + public function setEventDispatcher(EventDispatcher $eventDispatcher) + { + $this->eventDispatcher = $eventDispatcher; + } + + /** + * @return EventDispatcher + */ + public function getEventDispatcher() + { + return $this->eventDispatcher; + } + + /** + * @param Autoload\AutoloadGenerator $autoloadGenerator + */ + public function setAutoloadGenerator(AutoloadGenerator $autoloadGenerator) + { + $this->autoloadGenerator = $autoloadGenerator; + } + + /** + * @return Autoload\AutoloadGenerator + */ + public function getAutoloadGenerator() + { + return $this->autoloadGenerator; + } +} diff --git a/vendor/composer/composer/src/Composer/Config.php b/vendor/composer/composer/src/Composer/Config.php new file mode 100644 index 0000000..7abca7d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Config.php @@ -0,0 +1,479 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Config\ConfigSourceInterface; +use Composer\Downloader\TransportException; +use Composer\IO\IOInterface; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; + +/** + * @author Jordi Boggiano + */ +class Config +{ + const RELATIVE_PATHS = 1; + + public static $defaultConfig = array( + 'process-timeout' => 300, + 'use-include-path' => false, + 'preferred-install' => 'auto', + 'notify-on-install' => true, + 'github-protocols' => array('https', 'ssh', 'git'), + 'vendor-dir' => 'vendor', + 'bin-dir' => '{$vendor-dir}/bin', + 'cache-dir' => '{$home}/cache', + 'data-dir' => '{$home}', + 'cache-files-dir' => '{$cache-dir}/files', + 'cache-repo-dir' => '{$cache-dir}/repo', + 'cache-vcs-dir' => '{$cache-dir}/vcs', + 'cache-ttl' => 15552000, // 6 months + 'cache-files-ttl' => null, // fallback to cache-ttl + 'cache-files-maxsize' => '300MiB', + 'bin-compat' => 'auto', + 'discard-changes' => false, + 'autoloader-suffix' => null, + 'sort-packages' => false, + 'optimize-autoloader' => false, + 'classmap-authoritative' => false, + 'apcu-autoloader' => false, + 'prepend-autoloader' => true, + 'github-domains' => array('github.com'), + 'bitbucket-expose-hostname' => true, + 'disable-tls' => false, + 'secure-http' => true, + 'cafile' => null, + 'capath' => null, + 'github-expose-hostname' => true, + 'gitlab-domains' => array('gitlab.com'), + 'store-auths' => 'prompt', + 'platform' => array(), + 'archive-format' => 'tar', + 'archive-dir' => '.', + 'htaccess-protect' => true, + 'use-github-api' => true, + // valid keys without defaults (auth config stuff): + // bitbucket-oauth + // github-oauth + // gitlab-oauth + // gitlab-token + // http-basic + ); + + public static $defaultRepositories = array( + 'packagist.org' => array( + 'type' => 'composer', + 'url' => 'https?://repo.packagist.org', + 'allow_ssl_downgrade' => true, + ), + ); + + private $config; + private $baseDir; + private $repositories; + /** @var ConfigSourceInterface */ + private $configSource; + /** @var ConfigSourceInterface */ + private $authConfigSource; + private $useEnvironment; + private $warnedHosts = array(); + + /** + * @param bool $useEnvironment Use COMPOSER_ environment variables to replace config settings + * @param string $baseDir Optional base directory of the config + */ + public function __construct($useEnvironment = true, $baseDir = null) + { + // load defaults + $this->config = static::$defaultConfig; + $this->repositories = static::$defaultRepositories; + $this->useEnvironment = (bool) $useEnvironment; + $this->baseDir = $baseDir; + } + + public function setConfigSource(ConfigSourceInterface $source) + { + $this->configSource = $source; + } + + public function getConfigSource() + { + return $this->configSource; + } + + public function setAuthConfigSource(ConfigSourceInterface $source) + { + $this->authConfigSource = $source; + } + + public function getAuthConfigSource() + { + return $this->authConfigSource; + } + + /** + * Merges new config values with the existing ones (overriding) + * + * @param array $config + */ + public function merge($config) + { + // override defaults with given config + if (!empty($config['config']) && is_array($config['config'])) { + foreach ($config['config'] as $key => $val) { + if (in_array($key, array('bitbucket-oauth', 'github-oauth', 'gitlab-oauth', 'gitlab-token', 'http-basic')) && isset($this->config[$key])) { + $this->config[$key] = array_merge($this->config[$key], $val); + } elseif ('preferred-install' === $key && isset($this->config[$key])) { + if (is_array($val) || is_array($this->config[$key])) { + if (is_string($val)) { + $val = array('*' => $val); + } + if (is_string($this->config[$key])) { + $this->config[$key] = array('*' => $this->config[$key]); + } + $this->config[$key] = array_merge($this->config[$key], $val); + // the full match pattern needs to be last + if (isset($this->config[$key]['*'])) { + $wildcard = $this->config[$key]['*']; + unset($this->config[$key]['*']); + $this->config[$key]['*'] = $wildcard; + } + } else { + $this->config[$key] = $val; + } + } else { + $this->config[$key] = $val; + } + } + } + + if (!empty($config['repositories']) && is_array($config['repositories'])) { + $this->repositories = array_reverse($this->repositories, true); + $newRepos = array_reverse($config['repositories'], true); + foreach ($newRepos as $name => $repository) { + // disable a repository by name + if (false === $repository) { + $this->disableRepoByName($name); + continue; + } + + // disable a repository with an anonymous {"name": false} repo + if (is_array($repository) && 1 === count($repository) && false === current($repository)) { + $this->disableRepoByName(key($repository)); + continue; + } + + // store repo + if (is_int($name)) { + $this->repositories[] = $repository; + } else { + if ($name === 'packagist') { // BC support for default "packagist" named repo + $this->repositories[$name . '.org'] = $repository; + } else { + $this->repositories[$name] = $repository; + } + } + } + $this->repositories = array_reverse($this->repositories, true); + } + } + + /** + * @return array + */ + public function getRepositories() + { + return $this->repositories; + } + + /** + * Returns a setting + * + * @param string $key + * @param int $flags Options (see class constants) + * @throws \RuntimeException + * @return mixed + */ + public function get($key, $flags = 0) + { + switch ($key) { + case 'vendor-dir': + case 'bin-dir': + case 'process-timeout': + case 'data-dir': + case 'cache-dir': + case 'cache-files-dir': + case 'cache-repo-dir': + case 'cache-vcs-dir': + case 'cafile': + case 'capath': + // convert foo-bar to COMPOSER_FOO_BAR and check if it exists since it overrides the local config + $env = 'COMPOSER_' . strtoupper(strtr($key, '-', '_')); + + $val = $this->getComposerEnv($env); + $val = rtrim((string) $this->process(false !== $val ? $val : $this->config[$key], $flags), '/\\'); + $val = Platform::expandPath($val); + + if (substr($key, -4) !== '-dir') { + return $val; + } + + return (($flags & self::RELATIVE_PATHS) == self::RELATIVE_PATHS) ? $val : $this->realpath($val); + + case 'htaccess-protect': + $value = $this->getComposerEnv('COMPOSER_HTACCESS_PROTECT'); + if (false === $value) { + $value = $this->config[$key]; + } + return $value !== 'false' && (bool) $value; + + case 'cache-ttl': + return (int) $this->config[$key]; + + case 'cache-files-maxsize': + if (!preg_match('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', $this->config[$key], $matches)) { + throw new \RuntimeException( + "Could not parse the value of 'cache-files-maxsize': {$this->config[$key]}" + ); + } + $size = $matches[1]; + if (isset($matches[2])) { + switch (strtolower($matches[2])) { + case 'g': + $size *= 1024; + // intentional fallthrough + // no break + case 'm': + $size *= 1024; + // intentional fallthrough + // no break + case 'k': + $size *= 1024; + break; + } + } + + return $size; + + case 'cache-files-ttl': + if (isset($this->config[$key])) { + return (int) $this->config[$key]; + } + + return (int) $this->config['cache-ttl']; + + case 'home': + $val = preg_replace('#^(\$HOME|~)(/|$)#', rtrim(getenv('HOME') ?: getenv('USERPROFILE'), '/\\') . '/', $this->config[$key]); + + return rtrim($this->process($val, $flags), '/\\'); + + case 'bin-compat': + $value = $this->getComposerEnv('COMPOSER_BIN_COMPAT') ?: $this->config[$key]; + + if (!in_array($value, array('auto', 'full'))) { + throw new \RuntimeException( + "Invalid value for 'bin-compat': {$value}. Expected auto, full" + ); + } + + return $value; + + case 'discard-changes': + if ($env = $this->getComposerEnv('COMPOSER_DISCARD_CHANGES')) { + if (!in_array($env, array('stash', 'true', 'false', '1', '0'), true)) { + throw new \RuntimeException( + "Invalid value for COMPOSER_DISCARD_CHANGES: {$env}. Expected 1, 0, true, false or stash" + ); + } + if ('stash' === $env) { + return 'stash'; + } + + // convert string value to bool + return $env !== 'false' && (bool) $env; + } + + if (!in_array($this->config[$key], array(true, false, 'stash'), true)) { + throw new \RuntimeException( + "Invalid value for 'discard-changes': {$this->config[$key]}. Expected true, false or stash" + ); + } + + return $this->config[$key]; + + case 'github-protocols': + $protos = $this->config['github-protocols']; + if ($this->config['secure-http'] && false !== ($index = array_search('git', $protos))) { + unset($protos[$index]); + } + if (reset($protos) === 'http') { + throw new \RuntimeException('The http protocol for github is not available anymore, update your config\'s github-protocols to use "https", "git" or "ssh"'); + } + + return $protos; + + case 'disable-tls': + return $this->config[$key] !== 'false' && (bool) $this->config[$key]; + case 'secure-http': + return $this->config[$key] !== 'false' && (bool) $this->config[$key]; + case 'use-github-api': + return $this->config[$key] !== 'false' && (bool) $this->config[$key]; + default: + if (!isset($this->config[$key])) { + return null; + } + + return $this->process($this->config[$key], $flags); + } + } + + public function all($flags = 0) + { + $all = array( + 'repositories' => $this->getRepositories(), + ); + foreach (array_keys($this->config) as $key) { + $all['config'][$key] = $this->get($key, $flags); + } + + return $all; + } + + public function raw() + { + return array( + 'repositories' => $this->getRepositories(), + 'config' => $this->config, + ); + } + + /** + * Checks whether a setting exists + * + * @param string $key + * @return bool + */ + public function has($key) + { + return array_key_exists($key, $this->config); + } + + /** + * Replaces {$refs} inside a config string + * + * @param string|int|null $value a config string that can contain {$refs-to-other-config} + * @param int $flags Options (see class constants) + * @return string|int|null + */ + private function process($value, $flags) + { + $config = $this; + + if (!is_string($value)) { + return $value; + } + + return preg_replace_callback('#\{\$(.+)\}#', function ($match) use ($config, $flags) { + return $config->get($match[1], $flags); + }, $value); + } + + /** + * Turns relative paths in absolute paths without realpath() + * + * Since the dirs might not exist yet we can not call realpath or it will fail. + * + * @param string $path + * @return string + */ + private function realpath($path) + { + if (preg_match('{^(?:/|[a-z]:|[a-z0-9.]+://)}i', $path)) { + return $path; + } + + return $this->baseDir . '/' . $path; + } + + /** + * Reads the value of a Composer environment variable + * + * This should be used to read COMPOSER_ environment variables + * that overload config values. + * + * @param string $var + * @return string|bool + */ + private function getComposerEnv($var) + { + if ($this->useEnvironment) { + return getenv($var); + } + + return false; + } + + private function disableRepoByName($name) + { + if (isset($this->repositories[$name])) { + unset($this->repositories[$name]); + } elseif ($name === 'packagist') { // BC support for default "packagist" named repo + unset($this->repositories['packagist.org']); + } + } + + /** + * Validates that the passed URL is allowed to be used by current config, or throws an exception. + * + * @param string $url + * @param IOInterface $io + */ + public function prohibitUrlByConfig($url, IOInterface $io = null) + { + // Return right away if the URL is malformed or custom (see issue #5173) + if (false === filter_var($url, FILTER_VALIDATE_URL)) { + return; + } + + // Extract scheme and throw exception on known insecure protocols + $scheme = parse_url($url, PHP_URL_SCHEME); + if (in_array($scheme, array('http', 'git', 'ftp', 'svn'))) { + if ($this->get('secure-http')) { + throw new TransportException("Your configuration does not allow connections to $url. See https://getcomposer.org/doc/06-config.md#secure-http for details."); + } elseif ($io) { + $host = parse_url($url, PHP_URL_HOST); + if (!isset($this->warnedHosts[$host])) { + $io->writeError("Warning: Accessing $host over $scheme which is an insecure protocol."); + } + $this->warnedHosts[$host] = true; + } + } + } + + /** + * Used by long-running custom scripts in composer.json + * + * "scripts": { + * "watch": [ + * "Composer\\Config::disableProcessTimeout", + * "vendor/bin/long-running-script --watch" + * ] + * } + */ + public static function disableProcessTimeout() + { + // Override global timeout set earlier by environment or config + ProcessExecutor::setTimeout(0); + } +} diff --git a/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php b/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php new file mode 100644 index 0000000..0d56fc0 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php @@ -0,0 +1,91 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Config; + +/** + * Configuration Source Interface + * + * @author Jordi Boggiano + * @author Beau Simensen + */ +interface ConfigSourceInterface +{ + /** + * Add a repository + * + * @param string $name Name + * @param array $config Configuration + */ + public function addRepository($name, $config); + + /** + * Remove a repository + * + * @param string $name + */ + public function removeRepository($name); + + /** + * Add a config setting + * + * @param string $name Name + * @param string $value Value + */ + public function addConfigSetting($name, $value); + + /** + * Remove a config setting + * + * @param string $name + */ + public function removeConfigSetting($name); + + /** + * Add a property + * + * @param string $name Name + * @param string $value Value + */ + public function addProperty($name, $value); + + /** + * Remove a property + * + * @param string $name + */ + public function removeProperty($name); + + /** + * Add a package link + * + * @param string $type Type (require, require-dev, provide, suggest, replace, conflict) + * @param string $name Name + * @param string $value Value + */ + public function addLink($type, $name, $value); + + /** + * Remove a package link + * + * @param string $type Type (require, require-dev, provide, suggest, replace, conflict) + * @param string $name Name + */ + public function removeLink($type, $name); + + /** + * Gives a user-friendly name to this source (file path or so) + * + * @return string + */ + public function getName(); +} diff --git a/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php b/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php new file mode 100644 index 0000000..15d40d2 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php @@ -0,0 +1,271 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Config; + +use Composer\Json\JsonFile; +use Composer\Json\JsonManipulator; +use Composer\Util\Silencer; + +/** + * JSON Configuration Source + * + * @author Jordi Boggiano + * @author Beau Simensen + */ +class JsonConfigSource implements ConfigSourceInterface +{ + /** + * @var JsonFile + */ + private $file; + + /** + * @var bool + */ + private $authConfig; + + /** + * Constructor + * + * @param JsonFile $file + * @param bool $authConfig + */ + public function __construct(JsonFile $file, $authConfig = false) + { + $this->file = $file; + $this->authConfig = $authConfig; + } + + /** + * {@inheritdoc} + */ + public function getName() + { + return $this->file->getPath(); + } + + /** + * {@inheritdoc} + */ + public function addRepository($name, $config) + { + $this->manipulateJson('addRepository', $name, $config, function (&$config, $repo, $repoConfig) { + // if converting from an array format to hashmap format, and there is a {"packagist.org":false} repo, we have + // to convert it to "packagist.org": false key on the hashmap otherwise it fails schema validation + if (isset($config['repositories'])) { + foreach ($config['repositories'] as $index => $val) { + if ($index === $repo) { + continue; + } + if (is_numeric($index) && ($val === array('packagist' => false) || $val === array('packagist.org' => false))) { + unset($config['repositories'][$index]); + $config['repositories']['packagist.org'] = false; + break; + } + } + } + + $config['repositories'][$repo] = $repoConfig; + }); + } + + /** + * {@inheritdoc} + */ + public function removeRepository($name) + { + $this->manipulateJson('removeRepository', $name, function (&$config, $repo) { + unset($config['repositories'][$repo]); + }); + } + + /** + * {@inheritdoc} + */ + public function addConfigSetting($name, $value) + { + $authConfig = $this->authConfig; + $this->manipulateJson('addConfigSetting', $name, $value, function (&$config, $key, $val) use ($authConfig) { + if (preg_match('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic|platform)\.}', $key)) { + list($key, $host) = explode('.', $key, 2); + if ($authConfig) { + $config[$key][$host] = $val; + } else { + $config['config'][$key][$host] = $val; + } + } else { + $config['config'][$key] = $val; + } + }); + } + + /** + * {@inheritdoc} + */ + public function removeConfigSetting($name) + { + $authConfig = $this->authConfig; + $this->manipulateJson('removeConfigSetting', $name, function (&$config, $key) use ($authConfig) { + if (preg_match('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic|platform)\.}', $key)) { + list($key, $host) = explode('.', $key, 2); + if ($authConfig) { + unset($config[$key][$host]); + } else { + unset($config['config'][$key][$host]); + } + } else { + unset($config['config'][$key]); + } + }); + } + + /** + * {@inheritdoc} + */ + public function addProperty($name, $value) + { + $this->manipulateJson('addProperty', $name, $value, function (&$config, $key, $val) { + if (substr($key, 0, 6) === 'extra.' || substr($key, 0, 8) === 'scripts.') { + $bits = explode('.', $key); + $last = array_pop($bits); + $arr = &$config[reset($bits)]; + foreach ($bits as $bit) { + if (!isset($arr[$bit])) { + $arr[$bit] = array(); + } + $arr = &$arr[$bit]; + } + $arr[$last] = $val; + } else { + $config[$key] = $val; + } + }); + } + + /** + * {@inheritdoc} + */ + public function removeProperty($name) + { + $authConfig = $this->authConfig; + $this->manipulateJson('removeProperty', $name, function (&$config, $key) { + if (substr($key, 0, 6) === 'extra.' || substr($key, 0, 8) === 'scripts.') { + $bits = explode('.', $key); + $last = array_pop($bits); + $arr = &$config[reset($bits)]; + foreach ($bits as $bit) { + if (!isset($arr[$bit])) { + return; + } + $arr = &$arr[$bit]; + } + unset($arr[$last]); + } else { + unset($config[$key]); + } + }); + } + + /** + * {@inheritdoc} + */ + public function addLink($type, $name, $value) + { + $this->manipulateJson('addLink', $type, $name, $value, function (&$config, $type, $name, $value) { + $config[$type][$name] = $value; + }); + } + + /** + * {@inheritdoc} + */ + public function removeLink($type, $name) + { + $this->manipulateJson('removeSubNode', $type, $name, function (&$config, $type, $name) { + unset($config[$type][$name]); + + if (0 === count($config[$type])) { + unset($config[$type]); + } + }); + } + + protected function manipulateJson($method, $args, $fallback) + { + $args = func_get_args(); + // remove method & fallback + array_shift($args); + $fallback = array_pop($args); + + if ($this->file->exists()) { + if (!is_writable($this->file->getPath())) { + throw new \RuntimeException(sprintf('The file "%s" is not writable.', $this->file->getPath())); + } + + if (!is_readable($this->file->getPath())) { + throw new \RuntimeException(sprintf('The file "%s" is not readable.', $this->file->getPath())); + } + + $contents = file_get_contents($this->file->getPath()); + } elseif ($this->authConfig) { + $contents = "{\n}\n"; + } else { + $contents = "{\n \"config\": {\n }\n}\n"; + } + + $manipulator = new JsonManipulator($contents); + + $newFile = !$this->file->exists(); + + // override manipulator method for auth config files + if ($this->authConfig && $method === 'addConfigSetting') { + $method = 'addSubNode'; + list($mainNode, $name) = explode('.', $args[0], 2); + $args = array($mainNode, $name, $args[1]); + } elseif ($this->authConfig && $method === 'removeConfigSetting') { + $method = 'removeSubNode'; + list($mainNode, $name) = explode('.', $args[0], 2); + $args = array($mainNode, $name); + } + + // try to update cleanly + if (call_user_func_array(array($manipulator, $method), $args)) { + file_put_contents($this->file->getPath(), $manipulator->getContents()); + } else { + // on failed clean update, call the fallback and rewrite the whole file + $config = $this->file->read(); + $this->arrayUnshiftRef($args, $config); + call_user_func_array($fallback, $args); + $this->file->write($config); + } + + if ($newFile) { + Silencer::call('chmod', $this->file->getPath(), 0600); + } + } + + /** + * Prepend a reference to an element to the beginning of an array. + * + * @param array $array + * @param mixed $value + * @return array + */ + private function arrayUnshiftRef(&$array, &$value) + { + $return = array_unshift($array, ''); + $array[0] = &$value; + + return $return; + } +} diff --git a/vendor/composer/composer/src/Composer/Console/Application.php b/vendor/composer/composer/src/Composer/Console/Application.php new file mode 100644 index 0000000..e45ea80 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Console/Application.php @@ -0,0 +1,494 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Console; + +use Composer\IO\NullIO; +use Composer\Util\Platform; +use Composer\Util\Silencer; +use Symfony\Component\Console\Application as BaseApplication; +use Symfony\Component\Console\Exception\CommandNotFoundException; +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Helper\QuestionHelper; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Composer\Command; +use Composer\Composer; +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\IO\ConsoleIO; +use Composer\Json\JsonValidationException; +use Composer\Util\ErrorHandler; +use Composer\EventDispatcher\ScriptExecutionException; +use Composer\Exception\NoSslException; + +/** + * The console application that handles the commands + * + * @author Ryan Weaver + * @author Jordi Boggiano + * @author François Pluchino + */ +class Application extends BaseApplication +{ + /** + * @var Composer + */ + protected $composer; + + /** + * @var IOInterface + */ + protected $io; + + private static $logo = ' ______ + / ____/___ ____ ___ ____ ____ ________ _____ + / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ +/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / +\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ + /_/ +'; + + private $hasPluginCommands = false; + private $disablePluginsByDefault = false; + + public function __construct() + { + static $shutdownRegistered = false; + + if (function_exists('ini_set') && extension_loaded('xdebug')) { + ini_set('xdebug.show_exception_trace', false); + ini_set('xdebug.scream', false); + } + + if (function_exists('date_default_timezone_set') && function_exists('date_default_timezone_get')) { + date_default_timezone_set(Silencer::call('date_default_timezone_get')); + } + + if (!$shutdownRegistered) { + $shutdownRegistered = true; + + register_shutdown_function(function () { + $lastError = error_get_last(); + + if ($lastError && $lastError['message'] && + (strpos($lastError['message'], 'Allowed memory') !== false /*Zend PHP out of memory error*/ || + strpos($lastError['message'], 'exceeded memory') !== false /*HHVM out of memory errors*/)) { + echo "\n". 'Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.'; + } + }); + } + + $this->io = new NullIO(); + + parent::__construct('Composer', Composer::getVersion()); + } + + /** + * {@inheritDoc} + */ + public function run(InputInterface $input = null, OutputInterface $output = null) + { + if (null === $output) { + $output = Factory::createOutput(); + } + + return parent::run($input, $output); + } + + /** + * {@inheritDoc} + */ + public function doRun(InputInterface $input, OutputInterface $output) + { + $this->disablePluginsByDefault = $input->hasParameterOption('--no-plugins'); + + if (getenv('COMPOSER_NO_INTERACTION')) { + $input->setInteractive(false); + } + + $io = $this->io = new ConsoleIO($input, $output, new HelperSet(array( + new QuestionHelper(), + ))); + ErrorHandler::register($io); + + if ($input->hasParameterOption('--no-cache')) { + $io->writeError('Disabling cache usage', true, IOInterface::DEBUG); + putenv('COMPOSER_CACHE_DIR='.(Platform::isWindows() ? 'nul' : '/dev/null')); + } + + // switch working dir + if ($newWorkDir = $this->getNewWorkingDir($input)) { + $oldWorkingDir = getcwd(); + chdir($newWorkDir); + $io->writeError('Changed CWD to ' . getcwd(), true, IOInterface::DEBUG); + } + + // determine command name to be executed without including plugin commands + $commandName = ''; + if ($name = $this->getCommandName($input)) { + try { + $commandName = $this->find($name)->getName(); + } catch (CommandNotFoundException $e) { + // we'll check command validity again later after plugins are loaded + $commandName = false; + } catch (\InvalidArgumentException $e) { + } + } + + // prompt user for dir change if no composer.json is present in current dir + if ($io->isInteractive() && !$newWorkDir && !in_array($commandName, array('', 'list', 'init', 'about', 'help', 'diagnose', 'self-update', 'global', 'create-project'), true) && !file_exists(Factory::getComposerFile())) { + $dir = dirname(getcwd()); + $home = realpath(getenv('HOME') ?: getenv('USERPROFILE') ?: '/'); + + // abort when we reach the home dir or top of the filesystem + while (dirname($dir) !== $dir && $dir !== $home) { + if (file_exists($dir.'/'.Factory::getComposerFile())) { + if ($io->askConfirmation('No composer.json in current directory, do you want to use the one at '.$dir.'? [Y,n]? ', true)) { + $oldWorkingDir = getcwd(); + chdir($dir); + } + break; + } + $dir = dirname($dir); + } + } + + if (!$this->disablePluginsByDefault && !$this->hasPluginCommands && 'global' !== $commandName) { + try { + foreach ($this->getPluginCommands() as $command) { + if ($this->has($command->getName())) { + $io->writeError('Plugin command '.$command->getName().' ('.get_class($command).') would override a Composer command and has been skipped'); + } else { + $this->add($command); + } + } + } catch (NoSslException $e) { + // suppress these as they are not relevant at this point + } + + $this->hasPluginCommands = true; + } + + // determine command name to be executed incl plugin commands, and check if it's a proxy command + $isProxyCommand = false; + if ($name = $this->getCommandName($input)) { + try { + $command = $this->find($name); + $commandName = $command->getName(); + $isProxyCommand = ($command instanceof Command\BaseCommand && $command->isProxyCommand()); + } catch (\InvalidArgumentException $e) { + } + } + + if (!$isProxyCommand) { + $io->writeError(sprintf( + 'Running %s (%s) with %s on %s', + Composer::getVersion(), + Composer::RELEASE_DATE, + defined('HHVM_VERSION') ? 'HHVM '.HHVM_VERSION : 'PHP '.PHP_VERSION, + function_exists('php_uname') ? php_uname('s') . ' / ' . php_uname('r') : 'Unknown OS' + ), true, IOInterface::DEBUG); + + if (PHP_VERSION_ID < 50302) { + $io->writeError('Composer only officially supports PHP 5.3.2 and above, you will most likely encounter problems with your PHP '.PHP_VERSION.', upgrading is strongly recommended.'); + } + + if (extension_loaded('xdebug') && !getenv('COMPOSER_DISABLE_XDEBUG_WARN')) { + $io->writeError('You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug'); + } + + if (defined('COMPOSER_DEV_WARNING_TIME') && $commandName !== 'self-update' && $commandName !== 'selfupdate' && time() > COMPOSER_DEV_WARNING_TIME) { + $io->writeError(sprintf('Warning: This development build of composer is over 60 days old. It is recommended to update it by running "%s self-update" to get the latest version.', $_SERVER['PHP_SELF'])); + } + + if (!Platform::isWindows() && function_exists('exec') && !getenv('COMPOSER_ALLOW_SUPERUSER') && !file_exists('/.dockerenv')) { + if (function_exists('posix_getuid') && posix_getuid() === 0) { + if ($commandName !== 'self-update' && $commandName !== 'selfupdate') { + $io->writeError('Do not run Composer as root/super user! See https://getcomposer.org/root for details'); + } + if ($uid = (int) getenv('SUDO_UID')) { + // Silently clobber any sudo credentials on the invoking user to avoid privilege escalations later on + // ref. https://github.com/composer/composer/issues/5119 + Silencer::call('exec', "sudo -u \\#{$uid} sudo -K > /dev/null 2>&1"); + } + } + // Silently clobber any remaining sudo leases on the current user as well to avoid privilege escalations + Silencer::call('exec', 'sudo -K > /dev/null 2>&1'); + } + + // Check system temp folder for usability as it can cause weird runtime issues otherwise + Silencer::call(function () use ($io) { + $tempfile = sys_get_temp_dir() . '/temp-' . md5(microtime()); + if (!(file_put_contents($tempfile, __FILE__) && (file_get_contents($tempfile) == __FILE__) && unlink($tempfile) && !file_exists($tempfile))) { + $io->writeError(sprintf('PHP temp directory (%s) does not exist or is not writable to Composer. Set sys_temp_dir in your php.ini', sys_get_temp_dir())); + } + }); + + // add non-standard scripts as own commands + $file = Factory::getComposerFile(); + if (is_file($file) && is_readable($file) && is_array($composer = json_decode(file_get_contents($file), true))) { + if (isset($composer['scripts']) && is_array($composer['scripts'])) { + foreach ($composer['scripts'] as $script => $dummy) { + if (!defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { + if ($this->has($script)) { + $io->writeError('A script named '.$script.' would override a Composer command and has been skipped'); + } else { + $description = null; + + if (isset($composer['scripts-descriptions'][$script])) { + $description = $composer['scripts-descriptions'][$script]; + } + + $this->add(new Command\ScriptAliasCommand($script, $description)); + } + } + } + } + } + } + + try { + if ($input->hasParameterOption('--profile')) { + $startTime = microtime(true); + $this->io->enableDebugging($startTime); + } + + $result = parent::doRun($input, $output); + + if (isset($oldWorkingDir)) { + chdir($oldWorkingDir); + } + + if (isset($startTime)) { + $io->writeError('Memory usage: '.round(memory_get_usage() / 1024 / 1024, 2).'MiB (peak: '.round(memory_get_peak_usage() / 1024 / 1024, 2).'MiB), time: '.round(microtime(true) - $startTime, 2).'s'); + } + + restore_error_handler(); + + return $result; + } catch (ScriptExecutionException $e) { + return $e->getCode(); + } catch (\Exception $e) { + $this->hintCommonErrors($e); + restore_error_handler(); + throw $e; + } + } + + /** + * @param InputInterface $input + * @throws \RuntimeException + * @return string + */ + private function getNewWorkingDir(InputInterface $input) + { + $workingDir = $input->getParameterOption(array('--working-dir', '-d')); + if (false !== $workingDir && !is_dir($workingDir)) { + throw new \RuntimeException('Invalid working directory specified, '.$workingDir.' does not exist.'); + } + + return $workingDir; + } + + /** + * {@inheritDoc} + */ + private function hintCommonErrors($exception) + { + $io = $this->getIO(); + + Silencer::suppress(); + try { + $composer = $this->getComposer(false, true); + if ($composer) { + $config = $composer->getConfig(); + + $minSpaceFree = 1024 * 1024; + if ((($df = disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) + || (($df = disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) + || (($df = disk_free_space($dir = sys_get_temp_dir())) !== false && $df < $minSpaceFree) + ) { + $io->writeError('The disk hosting '.$dir.' is full, this may be the cause of the following exception', true, IOInterface::QUIET); + } + } + } catch (\Exception $e) { + } + Silencer::restore(); + + if (Platform::isWindows() && false !== strpos($exception->getMessage(), 'The system cannot find the path specified')) { + $io->writeError('The following exception may be caused by a stale entry in your cmd.exe AutoRun', true, IOInterface::QUIET); + $io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#-the-system-cannot-find-the-path-specified-windows- for details', true, IOInterface::QUIET); + } + + if (false !== strpos($exception->getMessage(), 'fork failed - Cannot allocate memory')) { + $io->writeError('The following exception is caused by a lack of memory or swap, or not having swap configured', true, IOInterface::QUIET); + $io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details', true, IOInterface::QUIET); + } + } + + /** + * @param bool $required + * @param bool|null $disablePlugins + * @throws JsonValidationException + * @return \Composer\Composer + */ + public function getComposer($required = true, $disablePlugins = null) + { + if (null === $disablePlugins) { + $disablePlugins = $this->disablePluginsByDefault; + } + + if (null === $this->composer) { + try { + $this->composer = Factory::create($this->io, null, $disablePlugins); + } catch (\InvalidArgumentException $e) { + if ($required) { + $this->io->writeError($e->getMessage()); + exit(1); + } + } catch (JsonValidationException $e) { + $errors = ' - ' . implode(PHP_EOL . ' - ', $e->getErrors()); + $message = $e->getMessage() . ':' . PHP_EOL . $errors; + throw new JsonValidationException($message); + } + } + + return $this->composer; + } + + /** + * Removes the cached composer instance + */ + public function resetComposer() + { + $this->composer = null; + if ($this->getIO() && method_exists($this->getIO(), 'resetAuthentications')) { + $this->getIO()->resetAuthentications(); + } + } + + /** + * @return IOInterface + */ + public function getIO() + { + return $this->io; + } + + public function getHelp() + { + return self::$logo . parent::getHelp(); + } + + /** + * Initializes all the composer commands. + */ + protected function getDefaultCommands() + { + $commands = array_merge(parent::getDefaultCommands(), array( + new Command\AboutCommand(), + new Command\ConfigCommand(), + new Command\DependsCommand(), + new Command\ProhibitsCommand(), + new Command\InitCommand(), + new Command\InstallCommand(), + new Command\CreateProjectCommand(), + new Command\UpdateCommand(), + new Command\SearchCommand(), + new Command\ValidateCommand(), + new Command\ShowCommand(), + new Command\SuggestsCommand(), + new Command\RequireCommand(), + new Command\DumpAutoloadCommand(), + new Command\StatusCommand(), + new Command\ArchiveCommand(), + new Command\DiagnoseCommand(), + new Command\RunScriptCommand(), + new Command\LicensesCommand(), + new Command\GlobalCommand(), + new Command\ClearCacheCommand(), + new Command\RemoveCommand(), + new Command\HomeCommand(), + new Command\ExecCommand(), + new Command\OutdatedCommand(), + new Command\CheckPlatformReqsCommand(), + )); + + if ('phar:' === substr(__FILE__, 0, 5)) { + $commands[] = new Command\SelfUpdateCommand(); + } + + return $commands; + } + + /** + * {@inheritDoc} + */ + public function getLongVersion() + { + if (Composer::BRANCH_ALIAS_VERSION && Composer::BRANCH_ALIAS_VERSION !== '@package_branch_alias_version'.'@') { + return sprintf( + '%s version %s (%s) %s', + $this->getName(), + Composer::BRANCH_ALIAS_VERSION, + $this->getVersion(), + Composer::RELEASE_DATE + ); + } + + return parent::getLongVersion() . ' ' . Composer::RELEASE_DATE; + } + + /** + * {@inheritDoc} + */ + protected function getDefaultInputDefinition() + { + $definition = parent::getDefaultInputDefinition(); + $definition->addOption(new InputOption('--profile', null, InputOption::VALUE_NONE, 'Display timing and memory usage information')); + $definition->addOption(new InputOption('--no-plugins', null, InputOption::VALUE_NONE, 'Whether to disable plugins.')); + $definition->addOption(new InputOption('--working-dir', '-d', InputOption::VALUE_REQUIRED, 'If specified, use the given directory as working directory.')); + $definition->addOption(new InputOption('--no-cache', null, InputOption::VALUE_NONE, 'Prevent use of the cache')); + + return $definition; + } + + private function getPluginCommands() + { + $commands = array(); + + $composer = $this->getComposer(false, false); + if (null === $composer) { + $composer = Factory::createGlobal($this->io, false); + } + + if (null !== $composer) { + $pm = $composer->getPluginManager(); + foreach ($pm->getPluginCapabilities('Composer\Plugin\Capability\CommandProvider', array('composer' => $composer, 'io' => $this->io)) as $capability) { + $newCommands = $capability->getCommands(); + if (!is_array($newCommands)) { + throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' failed to return an array from getCommands'); + } + foreach ($newCommands as $command) { + if (!$command instanceof Command\BaseCommand) { + throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' returned an invalid value, we expected an array of Composer\Command\BaseCommand objects'); + } + } + $commands = array_merge($commands, $newCommands); + } + } + + return $commands; + } +} diff --git a/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php b/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php new file mode 100644 index 0000000..994fcbc --- /dev/null +++ b/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php @@ -0,0 +1,90 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Console; + +use Symfony\Component\Console\Formatter\OutputFormatter; + +/** + * @author Jordi Boggiano + */ +class HtmlOutputFormatter extends OutputFormatter +{ + private static $availableForegroundColors = array( + 30 => 'black', + 31 => 'red', + 32 => 'green', + 33 => 'yellow', + 34 => 'blue', + 35 => 'magenta', + 36 => 'cyan', + 37 => 'white', + ); + private static $availableBackgroundColors = array( + 40 => 'black', + 41 => 'red', + 42 => 'green', + 43 => 'yellow', + 44 => 'blue', + 45 => 'magenta', + 46 => 'cyan', + 47 => 'white', + ); + private static $availableOptions = array( + 1 => 'bold', + 4 => 'underscore', + //5 => 'blink', + //7 => 'reverse', + //8 => 'conceal' + ); + + /** + * @param array $styles Array of "name => FormatterStyle" instances + */ + public function __construct(array $styles = array()) + { + parent::__construct(true, $styles); + } + + public function format($message) + { + $formatted = parent::format($message); + + $clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)'; + + return preg_replace_callback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", array($this, 'formatHtml'), $formatted); + } + + private function formatHtml($matches) + { + $out = ''.$matches[2].''; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php b/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php new file mode 100644 index 0000000..86b62c3 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php @@ -0,0 +1,211 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +/** + * Stores decisions on installing, removing or keeping packages + * + * @author Nils Adermann + */ +class Decisions implements \Iterator, \Countable +{ + const DECISION_LITERAL = 0; + const DECISION_REASON = 1; + + protected $pool; + protected $decisionMap; + protected $decisionQueue = array(); + + public function __construct($pool) + { + $this->pool = $pool; + $this->decisionMap = array(); + } + + public function decide($literal, $level, $why) + { + $this->addDecision($literal, $level); + $this->decisionQueue[] = array( + self::DECISION_LITERAL => $literal, + self::DECISION_REASON => $why, + ); + } + + public function satisfy($literal) + { + $packageId = abs($literal); + + return ( + $literal > 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 || + $literal < 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 + ); + } + + public function conflict($literal) + { + $packageId = abs($literal); + + return ( + (isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 && $literal < 0) || + (isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 && $literal > 0) + ); + } + + public function decided($literalOrPackageId) + { + return !empty($this->decisionMap[abs($literalOrPackageId)]); + } + + public function undecided($literalOrPackageId) + { + return empty($this->decisionMap[abs($literalOrPackageId)]); + } + + public function decidedInstall($literalOrPackageId) + { + $packageId = abs($literalOrPackageId); + + return isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0; + } + + public function decisionLevel($literalOrPackageId) + { + $packageId = abs($literalOrPackageId); + if (isset($this->decisionMap[$packageId])) { + return abs($this->decisionMap[$packageId]); + } + + return 0; + } + + public function decisionRule($literalOrPackageId) + { + $packageId = abs($literalOrPackageId); + + foreach ($this->decisionQueue as $i => $decision) { + if ($packageId === abs($decision[self::DECISION_LITERAL])) { + return $decision[self::DECISION_REASON]; + } + } + + return null; + } + + public function atOffset($queueOffset) + { + return $this->decisionQueue[$queueOffset]; + } + + public function validOffset($queueOffset) + { + return $queueOffset >= 0 && $queueOffset < count($this->decisionQueue); + } + + public function lastReason() + { + return $this->decisionQueue[count($this->decisionQueue) - 1][self::DECISION_REASON]; + } + + public function lastLiteral() + { + return $this->decisionQueue[count($this->decisionQueue) - 1][self::DECISION_LITERAL]; + } + + public function reset() + { + while ($decision = array_pop($this->decisionQueue)) { + $this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; + } + } + + public function resetToOffset($offset) + { + while (count($this->decisionQueue) > $offset + 1) { + $decision = array_pop($this->decisionQueue); + $this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; + } + } + + public function revertLast() + { + $this->decisionMap[abs($this->lastLiteral())] = 0; + array_pop($this->decisionQueue); + } + + public function count() + { + return count($this->decisionQueue); + } + + public function rewind() + { + end($this->decisionQueue); + } + + public function current() + { + return current($this->decisionQueue); + } + + public function key() + { + return key($this->decisionQueue); + } + + public function next() + { + return prev($this->decisionQueue); + } + + public function valid() + { + return false !== current($this->decisionQueue); + } + + public function isEmpty() + { + return count($this->decisionQueue) === 0; + } + + protected function addDecision($literal, $level) + { + $packageId = abs($literal); + + $previousDecision = isset($this->decisionMap[$packageId]) ? $this->decisionMap[$packageId] : null; + if ($previousDecision != 0) { + $literalString = $this->pool->literalToString($literal); + $package = $this->pool->literalToPackage($literal); + throw new SolverBugException( + "Trying to decide $literalString on level $level, even though $package was previously decided as ".(int) $previousDecision."." + ); + } + + if ($literal > 0) { + $this->decisionMap[$packageId] = $level; + } else { + $this->decisionMap[$packageId] = -$level; + } + } + + public function __toString() + { + $decisionMap = $this->decisionMap; + ksort($decisionMap); + $str = '['; + foreach ($decisionMap as $packageId => $level) { + $str .= $packageId.':'.$level.','; + } + $str .= ']'; + return $str; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php b/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php new file mode 100644 index 0000000..542c6e6 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php @@ -0,0 +1,285 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\PackageInterface; +use Composer\Package\AliasPackage; +use Composer\Package\BasePackage; +use Composer\Semver\Constraint\Constraint; + +/** + * @author Nils Adermann + * @author Jordi Boggiano + */ +class DefaultPolicy implements PolicyInterface +{ + private $preferStable; + private $preferLowest; + + public function __construct($preferStable = false, $preferLowest = false) + { + $this->preferStable = $preferStable; + $this->preferLowest = $preferLowest; + } + + public function versionCompare(PackageInterface $a, PackageInterface $b, $operator) + { + if ($this->preferStable && ($stabA = $a->getStability()) !== ($stabB = $b->getStability())) { + return BasePackage::$stabilities[$stabA] < BasePackage::$stabilities[$stabB]; + } + + $constraint = new Constraint($operator, $b->getVersion()); + $version = new Constraint('==', $a->getVersion()); + + return $constraint->matchSpecific($version, true); + } + + public function findUpdatePackages(Pool $pool, array $installedMap, PackageInterface $package, $mustMatchName = false) + { + $packages = array(); + + foreach ($pool->whatProvides($package->getName(), null, $mustMatchName) as $candidate) { + if ($candidate !== $package) { + $packages[] = $candidate; + } + } + + return $packages; + } + + public function getPriority(Pool $pool, PackageInterface $package) + { + return $pool->getPriority($package->getRepository()); + } + + public function selectPreferredPackages(Pool $pool, array $installedMap, array $literals, $requiredPackage = null) + { + $packages = $this->groupLiteralsByNamePreferInstalled($pool, $installedMap, $literals); + + foreach ($packages as &$literals) { + $policy = $this; + usort($literals, function ($a, $b) use ($policy, $pool, $installedMap, $requiredPackage) { + return $policy->compareByPriorityPreferInstalled($pool, $installedMap, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage, true); + }); + } + + foreach ($packages as &$literals) { + $literals = $this->pruneToHighestPriorityOrInstalled($pool, $installedMap, $literals); + + $literals = $this->pruneToBestVersion($pool, $literals); + + $literals = $this->pruneRemoteAliases($pool, $literals); + } + + $selected = call_user_func_array('array_merge', $packages); + + // now sort the result across all packages to respect replaces across packages + usort($selected, function ($a, $b) use ($policy, $pool, $installedMap, $requiredPackage) { + return $policy->compareByPriorityPreferInstalled($pool, $installedMap, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage); + }); + + return $selected; + } + + protected function groupLiteralsByNamePreferInstalled(Pool $pool, array $installedMap, $literals) + { + $packages = array(); + foreach ($literals as $literal) { + $packageName = $pool->literalToPackage($literal)->getName(); + + if (!isset($packages[$packageName])) { + $packages[$packageName] = array(); + } + + if (isset($installedMap[abs($literal)])) { + array_unshift($packages[$packageName], $literal); + } else { + $packages[$packageName][] = $literal; + } + } + + return $packages; + } + + /** + * @protected + */ + public function compareByPriorityPreferInstalled(Pool $pool, array $installedMap, PackageInterface $a, PackageInterface $b, $requiredPackage = null, $ignoreReplace = false) + { + if ($a->getRepository() === $b->getRepository()) { + // prefer aliases to the original package + if ($a->getName() === $b->getName()) { + $aAliased = $a instanceof AliasPackage; + $bAliased = $b instanceof AliasPackage; + if ($aAliased && !$bAliased) { + return -1; // use a + } + if (!$aAliased && $bAliased) { + return 1; // use b + } + } + + if (!$ignoreReplace) { + // return original, not replaced + if ($this->replaces($a, $b)) { + return 1; // use b + } + if ($this->replaces($b, $a)) { + return -1; // use a + } + + // for replacers not replacing each other, put a higher prio on replacing + // packages with the same vendor as the required package + if ($requiredPackage && false !== ($pos = strpos($requiredPackage, '/'))) { + $requiredVendor = substr($requiredPackage, 0, $pos); + + $aIsSameVendor = substr($a->getName(), 0, $pos) === $requiredVendor; + $bIsSameVendor = substr($b->getName(), 0, $pos) === $requiredVendor; + + if ($bIsSameVendor !== $aIsSameVendor) { + return $aIsSameVendor ? -1 : 1; + } + } + } + + // priority equal, sort by package id to make reproducible + if ($a->id === $b->id) { + return 0; + } + + return ($a->id < $b->id) ? -1 : 1; + } + + if (isset($installedMap[$a->id])) { + return -1; + } + + if (isset($installedMap[$b->id])) { + return 1; + } + + return ($this->getPriority($pool, $a) > $this->getPriority($pool, $b)) ? -1 : 1; + } + + /** + * Checks if source replaces a package with the same name as target. + * + * Replace constraints are ignored. This method should only be used for + * prioritisation, not for actual constraint verification. + * + * @param PackageInterface $source + * @param PackageInterface $target + * @return bool + */ + protected function replaces(PackageInterface $source, PackageInterface $target) + { + foreach ($source->getReplaces() as $link) { + if ($link->getTarget() === $target->getName() +// && (null === $link->getConstraint() || +// $link->getConstraint()->matches(new Constraint('==', $target->getVersion())))) { + ) { + return true; + } + } + + return false; + } + + protected function pruneToBestVersion(Pool $pool, $literals) + { + $operator = $this->preferLowest ? '<' : '>'; + $bestLiterals = array($literals[0]); + $bestPackage = $pool->literalToPackage($literals[0]); + foreach ($literals as $i => $literal) { + if (0 === $i) { + continue; + } + + $package = $pool->literalToPackage($literal); + + if ($this->versionCompare($package, $bestPackage, $operator)) { + $bestPackage = $package; + $bestLiterals = array($literal); + } elseif ($this->versionCompare($package, $bestPackage, '==')) { + $bestLiterals[] = $literal; + } + } + + return $bestLiterals; + } + + /** + * Assumes that installed packages come first and then all highest priority packages + */ + protected function pruneToHighestPriorityOrInstalled(Pool $pool, array $installedMap, array $literals) + { + $selected = array(); + + $priority = null; + + foreach ($literals as $literal) { + $package = $pool->literalToPackage($literal); + + if (isset($installedMap[$package->id])) { + $selected[] = $literal; + continue; + } + + if (null === $priority) { + $priority = $this->getPriority($pool, $package); + } + + if ($this->getPriority($pool, $package) != $priority) { + break; + } + + $selected[] = $literal; + } + + return $selected; + } + + /** + * Assumes that locally aliased (in root package requires) packages take priority over branch-alias ones + * + * If no package is a local alias, nothing happens + */ + protected function pruneRemoteAliases(Pool $pool, array $literals) + { + $hasLocalAlias = false; + + foreach ($literals as $literal) { + $package = $pool->literalToPackage($literal); + + if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { + $hasLocalAlias = true; + break; + } + } + + if (!$hasLocalAlias) { + return $literals; + } + + $selected = array(); + foreach ($literals as $literal) { + $package = $pool->literalToPackage($literal); + + if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { + $selected[] = $literal; + } + } + + return $selected; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php b/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php new file mode 100644 index 0000000..df8a2a0 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php @@ -0,0 +1,91 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\PackageInterface; +use Composer\Package\Link; + +/** + * @author Nils Adermann + */ +class GenericRule extends Rule +{ + protected $literals; + + /** + * @param array $literals + * @param int $reason A RULE_* constant describing the reason for generating this rule + * @param Link|PackageInterface $reasonData + * @param array $job The job this rule was created from + */ + public function __construct(array $literals, $reason, $reasonData, $job = null) + { + parent::__construct($reason, $reasonData, $job); + + // sort all packages ascending by id + sort($literals); + + $this->literals = $literals; + } + + public function getLiterals() + { + return $this->literals; + } + + public function getHash() + { + $data = unpack('ihash', md5(implode(',', $this->literals), true)); + + return $data['hash']; + } + + /** + * Checks if this rule is equal to another one + * + * Ignores whether either of the rules is disabled. + * + * @param Rule $rule The rule to check against + * @return bool Whether the rules are equal + */ + public function equals(Rule $rule) + { + return $this->literals === $rule->getLiterals(); + } + + public function isAssertion() + { + return 1 === count($this->literals); + } + + /** + * Formats a rule as a string of the format (Literal1|Literal2|...) + * + * @return string + */ + public function __toString() + { + $result = $this->isDisabled() ? 'disabled(' : '('; + + foreach ($this->literals as $i => $literal) { + if ($i != 0) { + $result .= '|'; + } + $result .= $literal; + } + + $result .= ')'; + + return $result; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php new file mode 100644 index 0000000..08c659c --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php @@ -0,0 +1,66 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver\Operation; + +use Composer\Package\PackageInterface; + +/** + * Solver install operation. + * + * @author Konstantin Kudryashov + */ +class InstallOperation extends SolverOperation +{ + protected $package; + + /** + * Initializes operation. + * + * @param PackageInterface $package package instance + * @param string $reason operation reason + */ + public function __construct(PackageInterface $package, $reason = null) + { + parent::__construct($reason); + + $this->package = $package; + } + + /** + * Returns package instance. + * + * @return PackageInterface + */ + public function getPackage() + { + return $this->package; + } + + /** + * Returns job type. + * + * @return string + */ + public function getJobType() + { + return 'install'; + } + + /** + * {@inheritDoc} + */ + public function __toString() + { + return 'Installing '.$this->package->getPrettyName().' ('.$this->formatVersion($this->package).')'; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php new file mode 100644 index 0000000..920e54e --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php @@ -0,0 +1,67 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver\Operation; + +use Composer\Package\AliasPackage; +use Composer\Package\PackageInterface; + +/** + * Solver install operation. + * + * @author Nils Adermann + */ +class MarkAliasInstalledOperation extends SolverOperation +{ + protected $package; + + /** + * Initializes operation. + * + * @param AliasPackage $package package instance + * @param string $reason operation reason + */ + public function __construct(AliasPackage $package, $reason = null) + { + parent::__construct($reason); + + $this->package = $package; + } + + /** + * Returns package instance. + * + * @return PackageInterface + */ + public function getPackage() + { + return $this->package; + } + + /** + * Returns job type. + * + * @return string + */ + public function getJobType() + { + return 'markAliasInstalled'; + } + + /** + * {@inheritDoc} + */ + public function __toString() + { + return 'Marking '.$this->package->getPrettyName().' ('.$this->formatVersion($this->package).') as installed, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->formatVersion($this->package->getAliasOf()).')'; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php new file mode 100644 index 0000000..77f3aef --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php @@ -0,0 +1,67 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver\Operation; + +use Composer\Package\AliasPackage; +use Composer\Package\PackageInterface; + +/** + * Solver install operation. + * + * @author Nils Adermann + */ +class MarkAliasUninstalledOperation extends SolverOperation +{ + protected $package; + + /** + * Initializes operation. + * + * @param AliasPackage $package package instance + * @param string $reason operation reason + */ + public function __construct(AliasPackage $package, $reason = null) + { + parent::__construct($reason); + + $this->package = $package; + } + + /** + * Returns package instance. + * + * @return PackageInterface + */ + public function getPackage() + { + return $this->package; + } + + /** + * Returns job type. + * + * @return string + */ + public function getJobType() + { + return 'markAliasUninstalled'; + } + + /** + * {@inheritDoc} + */ + public function __toString() + { + return 'Marking '.$this->package->getPrettyName().' ('.$this->formatVersion($this->package).') as uninstalled, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->formatVersion($this->package->getAliasOf()).')'; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php new file mode 100644 index 0000000..330cbce --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php @@ -0,0 +1,42 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver\Operation; + +/** + * Solver operation interface. + * + * @author Konstantin Kudryashov + */ +interface OperationInterface +{ + /** + * Returns job type. + * + * @return string + */ + public function getJobType(); + + /** + * Returns operation reason. + * + * @return string + */ + public function getReason(); + + /** + * Serializes the operation in a human readable format + * + * @return string + */ + public function __toString(); +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php new file mode 100644 index 0000000..e1a6858 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php @@ -0,0 +1,50 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver\Operation; + +use Composer\Package\PackageInterface; + +/** + * Abstract solver operation class. + * + * @author Konstantin Kudryashov + */ +abstract class SolverOperation implements OperationInterface +{ + protected $reason; + + /** + * Initializes operation. + * + * @param string $reason operation reason + */ + public function __construct($reason = null) + { + $this->reason = $reason; + } + + /** + * Returns operation reason. + * + * @return string + */ + public function getReason() + { + return $this->reason; + } + + protected function formatVersion(PackageInterface $package) + { + return $package->getFullPrettyVersion(); + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php new file mode 100644 index 0000000..b4a7381 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php @@ -0,0 +1,66 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver\Operation; + +use Composer\Package\PackageInterface; + +/** + * Solver uninstall operation. + * + * @author Konstantin Kudryashov + */ +class UninstallOperation extends SolverOperation +{ + protected $package; + + /** + * Initializes operation. + * + * @param PackageInterface $package package instance + * @param string $reason operation reason + */ + public function __construct(PackageInterface $package, $reason = null) + { + parent::__construct($reason); + + $this->package = $package; + } + + /** + * Returns package instance. + * + * @return PackageInterface + */ + public function getPackage() + { + return $this->package; + } + + /** + * Returns job type. + * + * @return string + */ + public function getJobType() + { + return 'uninstall'; + } + + /** + * {@inheritDoc} + */ + public function __toString() + { + return 'Uninstalling '.$this->package->getPrettyName().' ('.$this->formatVersion($this->package).')'; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php new file mode 100644 index 0000000..836725e --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php @@ -0,0 +1,80 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver\Operation; + +use Composer\Package\PackageInterface; + +/** + * Solver update operation. + * + * @author Konstantin Kudryashov + */ +class UpdateOperation extends SolverOperation +{ + protected $initialPackage; + protected $targetPackage; + + /** + * Initializes update operation. + * + * @param PackageInterface $initial initial package + * @param PackageInterface $target target package (updated) + * @param string $reason update reason + */ + public function __construct(PackageInterface $initial, PackageInterface $target, $reason = null) + { + parent::__construct($reason); + + $this->initialPackage = $initial; + $this->targetPackage = $target; + } + + /** + * Returns initial package. + * + * @return PackageInterface + */ + public function getInitialPackage() + { + return $this->initialPackage; + } + + /** + * Returns target package. + * + * @return PackageInterface + */ + public function getTargetPackage() + { + return $this->targetPackage; + } + + /** + * Returns job type. + * + * @return string + */ + public function getJobType() + { + return 'update'; + } + + /** + * {@inheritDoc} + */ + public function __toString() + { + return 'Updating '.$this->initialPackage->getPrettyName().' ('.$this->formatVersion($this->initialPackage).') to '. + $this->targetPackage->getPrettyName(). ' ('.$this->formatVersion($this->targetPackage).')'; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php b/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php new file mode 100644 index 0000000..3464bd5 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php @@ -0,0 +1,27 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\PackageInterface; + +/** + * @author Nils Adermann + */ +interface PolicyInterface +{ + public function versionCompare(PackageInterface $a, PackageInterface $b, $operator); + + public function findUpdatePackages(Pool $pool, array $installedMap, PackageInterface $package); + + public function selectPreferredPackages(Pool $pool, array $installedMap, array $literals, $requiredPackage = null); +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php b/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php new file mode 100644 index 0000000..085aaa7 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php @@ -0,0 +1,378 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\BasePackage; +use Composer\Package\AliasPackage; +use Composer\Package\Version\VersionParser; +use Composer\Semver\Constraint\ConstraintInterface; +use Composer\Semver\Constraint\Constraint; +use Composer\Semver\Constraint\EmptyConstraint; +use Composer\Repository\RepositoryInterface; +use Composer\Repository\CompositeRepository; +use Composer\Repository\ComposerRepository; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Repository\PlatformRepository; +use Composer\Package\PackageInterface; + +/** + * A package pool contains repositories that provide packages. + * + * @author Nils Adermann + * @author Jordi Boggiano + */ +class Pool implements \Countable +{ + const MATCH_NAME = -1; + const MATCH_NONE = 0; + const MATCH = 1; + const MATCH_PROVIDE = 2; + const MATCH_REPLACE = 3; + const MATCH_FILTERED = 4; + + protected $repositories = array(); + protected $providerRepos = array(); + protected $packages = array(); + protected $packageByName = array(); + protected $packageByExactName = array(); + protected $acceptableStabilities; + protected $stabilityFlags; + protected $versionParser; + protected $providerCache = array(); + protected $filterRequires; + protected $whitelist = null; + protected $id = 1; + + public function __construct($minimumStability = 'stable', array $stabilityFlags = array(), array $filterRequires = array()) + { + $this->versionParser = new VersionParser; + $this->acceptableStabilities = array(); + foreach (BasePackage::$stabilities as $stability => $value) { + if ($value <= BasePackage::$stabilities[$minimumStability]) { + $this->acceptableStabilities[$stability] = $value; + } + } + $this->stabilityFlags = $stabilityFlags; + $this->filterRequires = $filterRequires; + foreach ($filterRequires as $name => $constraint) { + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) { + unset($this->filterRequires[$name]); + } + } + } + + public function setWhitelist($whitelist) + { + $this->whitelist = $whitelist; + $this->providerCache = array(); + } + + /** + * Adds a repository and its packages to this package pool + * + * @param RepositoryInterface $repo A package repository + * @param array $rootAliases + */ + public function addRepository(RepositoryInterface $repo, $rootAliases = array()) + { + if ($repo instanceof CompositeRepository) { + $repos = $repo->getRepositories(); + } else { + $repos = array($repo); + } + + foreach ($repos as $repo) { + $this->repositories[] = $repo; + + $exempt = $repo instanceof PlatformRepository || $repo instanceof InstalledRepositoryInterface; + + if ($repo instanceof ComposerRepository && $repo->hasProviders()) { + $this->providerRepos[] = $repo; + $repo->setRootAliases($rootAliases); + $repo->resetPackageIds(); + } else { + foreach ($repo->getPackages() as $package) { + $names = $package->getNames(); + $stability = $package->getStability(); + if ($exempt || $this->isPackageAcceptable($names, $stability)) { + $package->setId($this->id++); + $this->packages[] = $package; + $this->packageByExactName[$package->getName()][$package->id] = $package; + + foreach ($names as $provided) { + $this->packageByName[$provided][] = $package; + } + + // handle root package aliases + $name = $package->getName(); + if (isset($rootAliases[$name][$package->getVersion()])) { + $alias = $rootAliases[$name][$package->getVersion()]; + if ($package instanceof AliasPackage) { + $package = $package->getAliasOf(); + } + $aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']); + $aliasPackage->setRootPackageAlias(true); + $aliasPackage->setId($this->id++); + + $package->getRepository()->addPackage($aliasPackage); + $this->packages[] = $aliasPackage; + $this->packageByExactName[$aliasPackage->getName()][$aliasPackage->id] = $aliasPackage; + + foreach ($aliasPackage->getNames() as $name) { + $this->packageByName[$name][] = $aliasPackage; + } + } + } + } + } + } + } + + public function getPriority(RepositoryInterface $repo) + { + $priority = array_search($repo, $this->repositories, true); + + if (false === $priority) { + throw new \RuntimeException("Could not determine repository priority. The repository was not registered in the pool."); + } + + return -$priority; + } + + /** + * Retrieves the package object for a given package id. + * + * @param int $id + * @return PackageInterface + */ + public function packageById($id) + { + return $this->packages[$id - 1]; + } + + /** + * Returns how many packages have been loaded into the pool + */ + public function count() + { + return count($this->packages); + } + + /** + * Searches all packages providing the given package name and match the constraint + * + * @param string $name The package name to be searched for + * @param ConstraintInterface $constraint A constraint that all returned + * packages must match or null to return all + * @param bool $mustMatchName Whether the name of returned packages + * must match the given name + * @param bool $bypassFilters If enabled, filterRequires and stability matching is ignored + * @return PackageInterface[] A set of packages + */ + public function whatProvides($name, ConstraintInterface $constraint = null, $mustMatchName = false, $bypassFilters = false) + { + if ($bypassFilters) { + return $this->computeWhatProvides($name, $constraint, $mustMatchName, true); + } + + $key = ((int) $mustMatchName).$constraint; + if (isset($this->providerCache[$name][$key])) { + return $this->providerCache[$name][$key]; + } + + return $this->providerCache[$name][$key] = $this->computeWhatProvides($name, $constraint, $mustMatchName, $bypassFilters); + } + + /** + * @see whatProvides + */ + private function computeWhatProvides($name, $constraint, $mustMatchName = false, $bypassFilters = false) + { + $candidates = array(); + + foreach ($this->providerRepos as $repo) { + foreach ($repo->whatProvides($this, $name, $bypassFilters) as $candidate) { + $candidates[] = $candidate; + if ($candidate->id < 1) { + $candidate->setId($this->id++); + $this->packages[$this->id - 2] = $candidate; + } + } + } + + if ($mustMatchName) { + $candidates = array_filter($candidates, function ($candidate) use ($name) { + return $candidate->getName() == $name; + }); + if (isset($this->packageByExactName[$name])) { + $candidates = array_merge($candidates, $this->packageByExactName[$name]); + } + } elseif (isset($this->packageByName[$name])) { + $candidates = array_merge($candidates, $this->packageByName[$name]); + } + + $matches = $provideMatches = array(); + $nameMatch = false; + + foreach ($candidates as $candidate) { + $aliasOfCandidate = null; + + // alias packages are not white listed, make sure that the package + // being aliased is white listed + if ($candidate instanceof AliasPackage) { + $aliasOfCandidate = $candidate->getAliasOf(); + } + + if ($this->whitelist !== null && !$bypassFilters && ( + (!($candidate instanceof AliasPackage) && !isset($this->whitelist[$candidate->id])) || + ($candidate instanceof AliasPackage && !isset($this->whitelist[$aliasOfCandidate->id])) + )) { + continue; + } + switch ($this->match($candidate, $name, $constraint, $bypassFilters)) { + case self::MATCH_NONE: + break; + + case self::MATCH_NAME: + $nameMatch = true; + break; + + case self::MATCH: + $nameMatch = true; + $matches[] = $candidate; + break; + + case self::MATCH_PROVIDE: + $provideMatches[] = $candidate; + break; + + case self::MATCH_REPLACE: + $matches[] = $candidate; + break; + + case self::MATCH_FILTERED: + break; + + default: + throw new \UnexpectedValueException('Unexpected match type'); + } + } + + // if a package with the required name exists, we ignore providers + if ($nameMatch) { + return $matches; + } + + return array_merge($matches, $provideMatches); + } + + public function literalToPackage($literal) + { + $packageId = abs($literal); + + return $this->packageById($packageId); + } + + public function literalToPrettyString($literal, $installedMap) + { + $package = $this->literalToPackage($literal); + + if (isset($installedMap[$package->id])) { + $prefix = ($literal > 0 ? 'keep' : 'remove'); + } else { + $prefix = ($literal > 0 ? 'install' : 'don\'t install'); + } + + return $prefix.' '.$package->getPrettyString(); + } + + public function isPackageAcceptable($name, $stability) + { + foreach ((array) $name as $n) { + // allow if package matches the global stability requirement and has no exception + if (!isset($this->stabilityFlags[$n]) && isset($this->acceptableStabilities[$stability])) { + return true; + } + + // allow if package matches the package-specific stability flag + if (isset($this->stabilityFlags[$n]) && BasePackage::$stabilities[$stability] <= $this->stabilityFlags[$n]) { + return true; + } + } + + return false; + } + + /** + * Checks if the package matches the given constraint directly or through + * provided or replaced packages + * + * @param PackageInterface $candidate + * @param string $name Name of the package to be matched + * @param ConstraintInterface $constraint The constraint to verify + * @return int One of the MATCH* constants of this class or 0 if there is no match + */ + public function match($candidate, $name, ConstraintInterface $constraint = null, $bypassFilters) + { + $candidateName = $candidate->getName(); + $candidateVersion = $candidate->getVersion(); + $isDev = $candidate->getStability() === 'dev'; + $isAlias = $candidate instanceof AliasPackage; + + if (!$bypassFilters && !$isDev && !$isAlias && isset($this->filterRequires[$name])) { + $requireFilter = $this->filterRequires[$name]; + } else { + $requireFilter = new EmptyConstraint; + } + + if ($candidateName === $name) { + $pkgConstraint = new Constraint('==', $candidateVersion); + + if ($constraint === null || $constraint->matches($pkgConstraint)) { + return $requireFilter->matches($pkgConstraint) ? self::MATCH : self::MATCH_FILTERED; + } + + return self::MATCH_NAME; + } + + $provides = $candidate->getProvides(); + $replaces = $candidate->getReplaces(); + + // aliases create multiple replaces/provides for one target so they can not use the shortcut below + if (isset($replaces[0]) || isset($provides[0])) { + foreach ($provides as $link) { + if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { + return $requireFilter->matches($link->getConstraint()) ? self::MATCH_PROVIDE : self::MATCH_FILTERED; + } + } + + foreach ($replaces as $link) { + if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { + return $requireFilter->matches($link->getConstraint()) ? self::MATCH_REPLACE : self::MATCH_FILTERED; + } + } + + return self::MATCH_NONE; + } + + if (isset($provides[$name]) && ($constraint === null || $constraint->matches($provides[$name]->getConstraint()))) { + return $requireFilter->matches($provides[$name]->getConstraint()) ? self::MATCH_PROVIDE : self::MATCH_FILTERED; + } + + if (isset($replaces[$name]) && ($constraint === null || $constraint->matches($replaces[$name]->getConstraint()))) { + return $requireFilter->matches($replaces[$name]->getConstraint()) ? self::MATCH_REPLACE : self::MATCH_FILTERED; + } + + return self::MATCH_NONE; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php b/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php new file mode 100644 index 0000000..df289a4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php @@ -0,0 +1,257 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\CompletePackageInterface; + +/** + * Represents a problem detected while solving dependencies + * + * @author Nils Adermann + */ +class Problem +{ + /** + * A map containing the id of each rule part of this problem as a key + * @var array + */ + protected $reasonSeen; + + /** + * A set of reasons for the problem, each is a rule or a job and a rule + * @var array + */ + protected $reasons = array(); + + protected $section = 0; + + protected $pool; + + public function __construct(Pool $pool) + { + $this->pool = $pool; + } + + /** + * Add a rule as a reason + * + * @param Rule $rule A rule which is a reason for this problem + */ + public function addRule(Rule $rule) + { + $this->addReason(spl_object_hash($rule), array( + 'rule' => $rule, + 'job' => $rule->getJob(), + )); + } + + /** + * Retrieve all reasons for this problem + * + * @return array The problem's reasons + */ + public function getReasons() + { + return $this->reasons; + } + + /** + * A human readable textual representation of the problem's reasons + * + * @param array $installedMap A map of all installed packages + * @return string + */ + public function getPrettyString(array $installedMap = array()) + { + $reasons = call_user_func_array('array_merge', array_reverse($this->reasons)); + + if (count($reasons) === 1) { + reset($reasons); + $reason = current($reasons); + + $job = $reason['job']; + + $packageName = $job['packageName']; + $constraint = $job['constraint']; + + if (isset($constraint)) { + $packages = $this->pool->whatProvides($packageName, $constraint); + } else { + $packages = array(); + } + + if ($job && $job['cmd'] === 'install' && empty($packages)) { + + // handle php/hhvm + if ($packageName === 'php' || $packageName === 'php-64bit' || $packageName === 'hhvm') { + $version = phpversion(); + $available = $this->pool->whatProvides($packageName); + + if (count($available)) { + $firstAvailable = reset($available); + $version = $firstAvailable->getPrettyVersion(); + $extra = $firstAvailable->getExtra(); + if ($firstAvailable instanceof CompletePackageInterface && isset($extra['config.platform']) && $extra['config.platform'] === true) { + $version .= '; ' . $firstAvailable->getDescription(); + } + } + + $msg = "\n - This package requires ".$packageName.$this->constraintToText($constraint).' but '; + + if (defined('HHVM_VERSION') || (count($available) && $packageName === 'hhvm')) { + return $msg . 'your HHVM version does not satisfy that requirement.'; + } + + if ($packageName === 'hhvm') { + return $msg . 'you are running this with PHP and not HHVM.'; + } + + return $msg . 'your PHP version ('. $version .') does not satisfy that requirement.'; + } + + // handle php extensions + if (0 === stripos($packageName, 'ext-')) { + if (false !== strpos($packageName, ' ')) { + return "\n - The requested PHP extension ".$packageName.' should be required as '.str_replace(' ', '-', $packageName).'.'; + } + + $ext = substr($packageName, 4); + $error = extension_loaded($ext) ? 'has the wrong version ('.(phpversion($ext) ?: '0').') installed' : 'is missing from your system'; + + return "\n - The requested PHP extension ".$packageName.$this->constraintToText($constraint).' '.$error.'. Install or enable PHP\'s '.$ext.' extension.'; + } + + // handle linked libs + if (0 === stripos($packageName, 'lib-')) { + if (strtolower($packageName) === 'lib-icu') { + $error = extension_loaded('intl') ? 'has the wrong version installed, try upgrading the intl extension.' : 'is missing from your system, make sure the intl extension is loaded.'; + + return "\n - The requested linked library ".$packageName.$this->constraintToText($constraint).' '.$error; + } + + return "\n - The requested linked library ".$packageName.$this->constraintToText($constraint).' has the wrong version installed or is missing from your system, make sure to load the extension providing it.'; + } + + if (!preg_match('{^[A-Za-z0-9_./-]+$}', $packageName)) { + $illegalChars = preg_replace('{[A-Za-z0-9_./-]+}', '', $packageName); + + return "\n - The requested package ".$packageName.' could not be found, it looks like its name is invalid, "'.$illegalChars.'" is not allowed in package names.'; + } + + if ($providers = $this->pool->whatProvides($packageName, $constraint, true, true)) { + return "\n - The requested package ".$packageName.$this->constraintToText($constraint).' is satisfiable by '.$this->getPackageList($providers).' but these conflict with your requirements or minimum-stability.'; + } + + if ($providers = $this->pool->whatProvides($packageName, null, true, true)) { + return "\n - The requested package ".$packageName.$this->constraintToText($constraint).' exists as '.$this->getPackageList($providers).' but these are rejected by your constraint.'; + } + + return "\n - The requested package ".$packageName.' could not be found in any version, there may be a typo in the package name.'; + } + } + + $messages = array(); + + foreach ($reasons as $reason) { + $rule = $reason['rule']; + $job = $reason['job']; + + if ($job) { + $messages[] = $this->jobToText($job); + } elseif ($rule) { + if ($rule instanceof Rule) { + $messages[] = $rule->getPrettyString($this->pool, $installedMap); + } + } + } + + return "\n - ".implode("\n - ", $messages); + } + + /** + * Store a reason descriptor but ignore duplicates + * + * @param string $id A canonical identifier for the reason + * @param string $reason The reason descriptor + */ + protected function addReason($id, $reason) + { + if (!isset($this->reasonSeen[$id])) { + $this->reasonSeen[$id] = true; + $this->reasons[$this->section][] = $reason; + } + } + + public function nextSection() + { + $this->section++; + } + + /** + * Turns a job into a human readable description + * + * @param array $job + * @return string + */ + protected function jobToText($job) + { + $packageName = $job['packageName']; + $constraint = $job['constraint']; + switch ($job['cmd']) { + case 'install': + $packages = $this->pool->whatProvides($packageName, $constraint); + if (!$packages) { + return 'No package found to satisfy install request for '.$packageName.$this->constraintToText($constraint); + } + + return 'Installation request for '.$packageName.$this->constraintToText($constraint).' -> satisfiable by '.$this->getPackageList($packages).'.'; + case 'update': + return 'Update request for '.$packageName.$this->constraintToText($constraint).'.'; + case 'remove': + return 'Removal request for '.$packageName.$this->constraintToText($constraint).''; + } + + if (isset($constraint)) { + $packages = $this->pool->whatProvides($packageName, $constraint); + } else { + $packages = array(); + } + + return 'Job(cmd='.$job['cmd'].', target='.$packageName.', packages=['.$this->getPackageList($packages).'])'; + } + + protected function getPackageList($packages) + { + $prepared = array(); + foreach ($packages as $package) { + $prepared[$package->getName()]['name'] = $package->getPrettyName(); + $prepared[$package->getName()]['versions'][$package->getVersion()] = $package->getPrettyVersion(); + } + foreach ($prepared as $name => $package) { + $prepared[$name] = $package['name'].'['.implode(', ', $package['versions']).']'; + } + + return implode(', ', $prepared); + } + + /** + * Turns a constraint into text usable in a sentence describing a job + * + * @param \Composer\Semver\Constraint\ConstraintInterface $constraint + * @return string + */ + protected function constraintToText($constraint) + { + return $constraint ? ' '.$constraint->getPrettyString() : ''; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Request.php b/vendor/composer/composer/src/Composer/DependencyResolver/Request.php new file mode 100644 index 0000000..85dc9c4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Request.php @@ -0,0 +1,78 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Semver\Constraint\ConstraintInterface; + +/** + * @author Nils Adermann + */ +class Request +{ + protected $jobs; + + public function __construct() + { + $this->jobs = array(); + } + + public function install($packageName, ConstraintInterface $constraint = null) + { + $this->addJob($packageName, 'install', $constraint); + } + + public function update($packageName, ConstraintInterface $constraint = null) + { + $this->addJob($packageName, 'update', $constraint); + } + + public function remove($packageName, ConstraintInterface $constraint = null) + { + $this->addJob($packageName, 'remove', $constraint); + } + + /** + * Mark an existing package as being installed and having to remain installed + * + * These jobs will not be tempered with by the solver + * + * @param string $packageName + * @param ConstraintInterface|null $constraint + */ + public function fix($packageName, ConstraintInterface $constraint = null) + { + $this->addJob($packageName, 'install', $constraint, true); + } + + protected function addJob($packageName, $cmd, ConstraintInterface $constraint = null, $fixed = false) + { + $packageName = strtolower($packageName); + + $this->jobs[] = array( + 'cmd' => $cmd, + 'packageName' => $packageName, + 'constraint' => $constraint, + 'fixed' => $fixed, + ); + } + + public function updateAll() + { + $this->jobs[] = array('cmd' => 'update-all'); + } + + public function getJobs() + { + return $this->jobs; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php b/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php new file mode 100644 index 0000000..82c9c49 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php @@ -0,0 +1,268 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\CompletePackage; +use Composer\Package\Link; +use Composer\Package\PackageInterface; + +/** + * @author Nils Adermann + * @author Ruben Gonzalez + */ +abstract class Rule +{ + // reason constants + const RULE_INTERNAL_ALLOW_UPDATE = 1; + const RULE_JOB_INSTALL = 2; + const RULE_JOB_REMOVE = 3; + const RULE_PACKAGE_CONFLICT = 6; + const RULE_PACKAGE_REQUIRES = 7; + const RULE_PACKAGE_OBSOLETES = 8; + const RULE_INSTALLED_PACKAGE_OBSOLETES = 9; + const RULE_PACKAGE_SAME_NAME = 10; + const RULE_PACKAGE_IMPLICIT_OBSOLETES = 11; + const RULE_LEARNED = 12; + const RULE_PACKAGE_ALIAS = 13; + + // bitfield defs + const BITFIELD_TYPE = 0; + const BITFIELD_REASON = 8; + const BITFIELD_DISABLED = 16; + + protected $bitfield; + protected $job; + protected $reasonData; + + /** + * @param int $reason A RULE_* constant describing the reason for generating this rule + * @param Link|PackageInterface $reasonData + * @param array $job The job this rule was created from + */ + public function __construct($reason, $reasonData, $job = null) + { + $this->reasonData = $reasonData; + + if ($job) { + $this->job = $job; + } + + $this->bitfield = (0 << self::BITFIELD_DISABLED) | + ($reason << self::BITFIELD_REASON) | + (255 << self::BITFIELD_TYPE); + } + + abstract public function getLiterals(); + + abstract public function getHash(); + + public function getJob() + { + return $this->job; + } + + abstract public function equals(Rule $rule); + + public function getReason() + { + return ($this->bitfield & (255 << self::BITFIELD_REASON)) >> self::BITFIELD_REASON; + } + + public function getReasonData() + { + return $this->reasonData; + } + + public function getRequiredPackage() + { + if ($this->getReason() === self::RULE_JOB_INSTALL) { + return $this->reasonData; + } + + if ($this->getReason() === self::RULE_PACKAGE_REQUIRES) { + return $this->reasonData->getTarget(); + } + } + + public function setType($type) + { + $this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_TYPE)) | ((255 & $type) << self::BITFIELD_TYPE); + } + + public function getType() + { + return ($this->bitfield & (255 << self::BITFIELD_TYPE)) >> self::BITFIELD_TYPE; + } + + public function disable() + { + $this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_DISABLED)) | (1 << self::BITFIELD_DISABLED); + } + + public function enable() + { + $this->bitfield &= ~(255 << self::BITFIELD_DISABLED); + } + + public function isDisabled() + { + return (bool) (($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); + } + + public function isEnabled() + { + return !(($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); + } + + abstract public function isAssertion(); + + public function getPrettyString(Pool $pool, array $installedMap = array()) + { + $literals = $this->getLiterals(); + + $ruleText = ''; + foreach ($literals as $i => $literal) { + if ($i != 0) { + $ruleText .= '|'; + } + $ruleText .= $pool->literalToPrettyString($literal, $installedMap); + } + + switch ($this->getReason()) { + case self::RULE_INTERNAL_ALLOW_UPDATE: + return $ruleText; + + case self::RULE_JOB_INSTALL: + return "Install command rule ($ruleText)"; + + case self::RULE_JOB_REMOVE: + return "Remove command rule ($ruleText)"; + + case self::RULE_PACKAGE_CONFLICT: + $package1 = $pool->literalToPackage($literals[0]); + $package2 = $pool->literalToPackage($literals[1]); + + return $package1->getPrettyString().' conflicts with '.$this->formatPackagesUnique($pool, array($package2)).'.'; + + case self::RULE_PACKAGE_REQUIRES: + $sourceLiteral = array_shift($literals); + $sourcePackage = $pool->literalToPackage($sourceLiteral); + + $requires = array(); + foreach ($literals as $literal) { + $requires[] = $pool->literalToPackage($literal); + } + + $text = $this->reasonData->getPrettyString($sourcePackage); + if ($requires) { + $text .= ' -> satisfiable by ' . $this->formatPackagesUnique($pool, $requires) . '.'; + } else { + $targetName = $this->reasonData->getTarget(); + + if ($targetName === 'php' || $targetName === 'php-64bit' || $targetName === 'hhvm') { + // handle php/hhvm + if (defined('HHVM_VERSION')) { + return $text . ' -> your HHVM version does not satisfy that requirement.'; + } + + $packages = $pool->whatProvides($targetName); + $package = count($packages) ? current($packages) : phpversion(); + + if ($targetName === 'hhvm') { + if ($package instanceof CompletePackage) { + return $text . ' -> your HHVM version ('.$package->getPrettyVersion().') does not satisfy that requirement.'; + } else { + return $text . ' -> you are running this with PHP and not HHVM.'; + } + } + + + if (!($package instanceof CompletePackage)) { + return $text . ' -> your PHP version ('.phpversion().') does not satisfy that requirement.'; + } + + $extra = $package->getExtra(); + + if (!empty($extra['config.platform'])) { + $text .= ' -> your PHP version ('.phpversion().') overridden by "config.platform.php" version ('.$package->getPrettyVersion().') does not satisfy that requirement.'; + } else { + $text .= ' -> your PHP version ('.$package->getPrettyVersion().') does not satisfy that requirement.'; + } + + return $text; + } + + if (0 === strpos($targetName, 'ext-')) { + // handle php extensions + $ext = substr($targetName, 4); + $error = extension_loaded($ext) ? 'has the wrong version ('.(phpversion($ext) ?: '0').') installed' : 'is missing from your system'; + + return $text . ' -> the requested PHP extension '.$ext.' '.$error.'.'; + } + + if (0 === strpos($targetName, 'lib-')) { + // handle linked libs + $lib = substr($targetName, 4); + + return $text . ' -> the requested linked library '.$lib.' has the wrong version installed or is missing from your system, make sure to have the extension providing it.'; + } + + if ($providers = $pool->whatProvides($targetName, $this->reasonData->getConstraint(), true, true)) { + return $text . ' -> satisfiable by ' . $this->formatPackagesUnique($pool, $providers) .' but these conflict with your requirements or minimum-stability.'; + } + + return $text . ' -> no matching package found.'; + } + + return $text; + + case self::RULE_PACKAGE_OBSOLETES: + return $ruleText; + case self::RULE_INSTALLED_PACKAGE_OBSOLETES: + return $ruleText; + case self::RULE_PACKAGE_SAME_NAME: + return 'Can only install one of: ' . $this->formatPackagesUnique($pool, $literals) . '.'; + case self::RULE_PACKAGE_IMPLICIT_OBSOLETES: + return $ruleText; + case self::RULE_LEARNED: + return 'Conclusion: '.$ruleText; + case self::RULE_PACKAGE_ALIAS: + return $ruleText; + default: + return '('.$ruleText.')'; + } + } + + /** + * @param Pool $pool + * @param array $packages + * + * @return string + */ + protected function formatPackagesUnique($pool, array $packages) + { + $prepared = array(); + foreach ($packages as $package) { + if (!is_object($package)) { + $package = $pool->literalToPackage($package); + } + $prepared[$package->getName()]['name'] = $package->getPrettyName(); + $prepared[$package->getName()]['versions'][$package->getVersion()] = $package->getPrettyVersion(); + } + foreach ($prepared as $name => $package) { + $prepared[$name] = $package['name'].'['.implode(', ', $package['versions']).']'; + } + + return implode(', ', $prepared); + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php b/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php new file mode 100644 index 0000000..6bf47db --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php @@ -0,0 +1,113 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\PackageInterface; +use Composer\Package\Link; + +/** + * @author Nils Adermann + */ +class Rule2Literals extends Rule +{ + protected $literal1; + protected $literal2; + + /** + * @param int $literal1 + * @param int $literal2 + * @param int $reason A RULE_* constant describing the reason for generating this rule + * @param Link|PackageInterface $reasonData + * @param array $job The job this rule was created from + */ + public function __construct($literal1, $literal2, $reason, $reasonData, $job = null) + { + parent::__construct($reason, $reasonData, $job); + + if ($literal1 < $literal2) { + $this->literal1 = $literal1; + $this->literal2 = $literal2; + } else { + $this->literal1 = $literal2; + $this->literal2 = $literal1; + } + } + + public function getLiterals() + { + return array($this->literal1, $this->literal2); + } + + public function getHash() + { + return $this->literal1.','.$this->literal2; + } + + /** + * Checks if this rule is equal to another one + * + * Ignores whether either of the rules is disabled. + * + * @param Rule $rule The rule to check against + * @return bool Whether the rules are equal + */ + public function equals(Rule $rule) + { + // specialized fast-case + if ($rule instanceof self) { + if ($this->literal1 !== $rule->literal1) { + return false; + } + + if ($this->literal2 !== $rule->literal2) { + return false; + } + + return true; + } + + $literals = $rule->getLiterals(); + if (2 != count($literals)) { + return false; + } + + if ($this->literal1 !== $literals[0]) { + return false; + } + + if ($this->literal2 !== $literals[1]) { + return false; + } + + return true; + } + + public function isAssertion() + { + return false; + } + + /** + * Formats a rule as a string of the format (Literal1|Literal2|...) + * + * @return string + */ + public function __toString() + { + $result = $this->isDisabled() ? 'disabled(' : '('; + + $result .= $this->literal1 . '|' . $this->literal2 . ')'; + + return $result; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php new file mode 100644 index 0000000..bf4de0d --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php @@ -0,0 +1,176 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +/** + * @author Nils Adermann + */ +class RuleSet implements \IteratorAggregate, \Countable +{ + // highest priority => lowest number + const TYPE_PACKAGE = 0; + const TYPE_JOB = 1; + const TYPE_LEARNED = 4; + + /** + * READ-ONLY: Lookup table for rule id to rule object + * + * @var Rule[] + */ + public $ruleById; + + protected static $types = array( + 255 => 'UNKNOWN', + self::TYPE_PACKAGE => 'PACKAGE', + self::TYPE_JOB => 'JOB', + self::TYPE_LEARNED => 'LEARNED', + ); + + protected $rules; + protected $nextRuleId; + + protected $rulesByHash; + + public function __construct() + { + $this->nextRuleId = 0; + + foreach ($this->getTypes() as $type) { + $this->rules[$type] = array(); + } + + $this->rulesByHash = array(); + } + + public function add(Rule $rule, $type) + { + if (!isset(self::$types[$type])) { + throw new \OutOfBoundsException('Unknown rule type: ' . $type); + } + + $hash = $rule->getHash(); + + // Do not add if rule already exists + if (isset($this->rulesByHash[$hash])) { + $potentialDuplicates = $this->rulesByHash[$hash]; + if (is_array($potentialDuplicates)) { + foreach ($potentialDuplicates as $potentialDuplicate) { + if ($rule->equals($potentialDuplicate)) { + return; + } + } + } else { + if ($rule->equals($potentialDuplicates)) { + return; + } + } + } + + if (!isset($this->rules[$type])) { + $this->rules[$type] = array(); + } + + $this->rules[$type][] = $rule; + $this->ruleById[$this->nextRuleId] = $rule; + $rule->setType($type); + + $this->nextRuleId++; + + if (!isset($this->rulesByHash[$hash])) { + $this->rulesByHash[$hash] = $rule; + } elseif (is_array($this->rulesByHash[$hash])) { + $this->rulesByHash[$hash][] = $rule; + } else { + $originalRule = $this->rulesByHash[$hash]; + $this->rulesByHash[$hash] = array($originalRule, $rule); + } + } + + public function count() + { + return $this->nextRuleId; + } + + public function ruleById($id) + { + return $this->ruleById[$id]; + } + + public function getRules() + { + return $this->rules; + } + + public function getIterator() + { + return new RuleSetIterator($this->getRules()); + } + + public function getIteratorFor($types) + { + if (!is_array($types)) { + $types = array($types); + } + + $allRules = $this->getRules(); + $rules = array(); + + foreach ($types as $type) { + $rules[$type] = $allRules[$type]; + } + + return new RuleSetIterator($rules); + } + + public function getIteratorWithout($types) + { + if (!is_array($types)) { + $types = array($types); + } + + $rules = $this->getRules(); + + foreach ($types as $type) { + unset($rules[$type]); + } + + return new RuleSetIterator($rules); + } + + public function getTypes() + { + $types = self::$types; + unset($types[255]); + + return array_keys($types); + } + + public function getPrettyString(Pool $pool = null) + { + $string = "\n"; + foreach ($this->rules as $type => $rules) { + $string .= str_pad(self::$types[$type], 8, ' ') . ": "; + foreach ($rules as $rule) { + $string .= ($pool ? $rule->getPrettyString($pool) : $rule)."\n"; + } + $string .= "\n\n"; + } + + return $string; + } + + public function __toString() + { + return $this->getPrettyString(null); + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php new file mode 100644 index 0000000..e8714a4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php @@ -0,0 +1,376 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\PackageInterface; +use Composer\Package\AliasPackage; +use Composer\Repository\PlatformRepository; + +/** + * @author Nils Adermann + */ +class RuleSetGenerator +{ + protected $policy; + protected $pool; + protected $rules; + protected $jobs; + protected $installedMap; + protected $whitelistedMap; + protected $addedMap; + protected $conflictAddedMap; + protected $addedPackages; + protected $addedPackagesByNames; + + public function __construct(PolicyInterface $policy, Pool $pool) + { + $this->policy = $policy; + $this->pool = $pool; + } + + /** + * Creates a new rule for the requirements of a package + * + * This rule is of the form (-A|B|C), where B and C are the providers of + * one requirement of the package A. + * + * @param PackageInterface $package The package with a requirement + * @param array $providers The providers of the requirement + * @param int $reason A RULE_* constant describing the + * reason for generating this rule + * @param mixed $reasonData Any data, e.g. the requirement name, + * that goes with the reason + * @return Rule|null The generated rule or null if tautological + */ + protected function createRequireRule(PackageInterface $package, array $providers, $reason, $reasonData = null) + { + $literals = array(-$package->id); + + foreach ($providers as $provider) { + // self fulfilling rule? + if ($provider === $package) { + return null; + } + $literals[] = $provider->id; + } + + return new GenericRule($literals, $reason, $reasonData); + } + + /** + * Creates a rule to install at least one of a set of packages + * + * The rule is (A|B|C) with A, B and C different packages. If the given + * set of packages is empty an impossible rule is generated. + * + * @param array $packages The set of packages to choose from + * @param int $reason A RULE_* constant describing the reason for + * generating this rule + * @param array $job The job this rule was created from + * @return Rule The generated rule + */ + protected function createInstallOneOfRule(array $packages, $reason, $job) + { + $literals = array(); + foreach ($packages as $package) { + $literals[] = $package->id; + } + + return new GenericRule($literals, $reason, $job['packageName'], $job); + } + + /** + * Creates a rule to remove a package + * + * The rule for a package A is (-A). + * + * @param PackageInterface $package The package to be removed + * @param int $reason A RULE_* constant describing the + * reason for generating this rule + * @param array $job The job this rule was created from + * @return Rule The generated rule + */ + protected function createRemoveRule(PackageInterface $package, $reason, $job) + { + return new GenericRule(array(-$package->id), $reason, $job['packageName'], $job); + } + + /** + * Creates a rule for two conflicting packages + * + * The rule for conflicting packages A and B is (-A|-B). A is called the issuer + * and B the provider. + * + * @param PackageInterface $issuer The package declaring the conflict + * @param PackageInterface $provider The package causing the conflict + * @param int $reason A RULE_* constant describing the + * reason for generating this rule + * @param mixed $reasonData Any data, e.g. the package name, that + * goes with the reason + * @return Rule|null The generated rule + */ + protected function createRule2Literals(PackageInterface $issuer, PackageInterface $provider, $reason, $reasonData = null) + { + // ignore self conflict + if ($issuer === $provider) { + return null; + } + + return new Rule2Literals(-$issuer->id, -$provider->id, $reason, $reasonData); + } + + /** + * Adds a rule unless it duplicates an existing one of any type + * + * To be able to directly pass in the result of one of the rule creation + * methods null is allowed which will not insert a rule. + * + * @param int $type A TYPE_* constant defining the rule type + * @param Rule $newRule The rule about to be added + */ + private function addRule($type, Rule $newRule = null) + { + if (!$newRule) { + return; + } + + $this->rules->add($newRule, $type); + } + + protected function whitelistFromPackage(PackageInterface $package) + { + $workQueue = new \SplQueue; + $workQueue->enqueue($package); + + while (!$workQueue->isEmpty()) { + $package = $workQueue->dequeue(); + if (isset($this->whitelistedMap[$package->id])) { + continue; + } + + $this->whitelistedMap[$package->id] = true; + + foreach ($package->getRequires() as $link) { + $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint(), true); + + foreach ($possibleRequires as $require) { + $workQueue->enqueue($require); + } + } + + $obsoleteProviders = $this->pool->whatProvides($package->getName(), null, true); + + foreach ($obsoleteProviders as $provider) { + if ($provider === $package) { + continue; + } + + if (($package instanceof AliasPackage) && $package->getAliasOf() === $provider) { + $workQueue->enqueue($provider); + } + } + } + } + + protected function addRulesForPackage(PackageInterface $package, $ignorePlatformReqs) + { + $workQueue = new \SplQueue; + $workQueue->enqueue($package); + + while (!$workQueue->isEmpty()) { + /** @var PackageInterface $package */ + $package = $workQueue->dequeue(); + if (isset($this->addedMap[$package->id])) { + continue; + } + + $this->addedMap[$package->id] = true; + + $this->addedPackages[] = $package; + foreach ($package->getNames() as $name) { + $this->addedPackagesByNames[$name][] = $package; + } + + foreach ($package->getRequires() as $link) { + if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) { + continue; + } + + $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); + + $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, $possibleRequires, Rule::RULE_PACKAGE_REQUIRES, $link)); + + foreach ($possibleRequires as $require) { + $workQueue->enqueue($require); + } + } + + $packageName = $package->getName(); + $obsoleteProviders = $this->pool->whatProvides($packageName, null); + + foreach ($obsoleteProviders as $provider) { + if ($provider === $package) { + continue; + } + + if (($package instanceof AliasPackage) && $package->getAliasOf() === $provider) { + $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, array($provider), Rule::RULE_PACKAGE_ALIAS, $package)); + } elseif (!$this->obsoleteImpossibleForAlias($package, $provider)) { + $reason = ($packageName == $provider->getName()) ? Rule::RULE_PACKAGE_SAME_NAME : Rule::RULE_PACKAGE_IMPLICIT_OBSOLETES; + $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $provider, $reason, $package)); + } + } + } + } + + protected function addConflictRules($ignorePlatformReqs = false) + { + /** @var PackageInterface $package */ + foreach ($this->addedPackages as $package) { + foreach ($package->getConflicts() as $link) { + if (!isset($this->addedPackagesByNames[$link->getTarget()])) { + continue; + } + + if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) { + continue; + } + + /** @var PackageInterface $possibleConflict */ + foreach ($this->addedPackagesByNames[$link->getTarget()] as $possibleConflict) { + $conflictMatch = $this->pool->match($possibleConflict, $link->getTarget(), $link->getConstraint(), true); + + if ($conflictMatch === Pool::MATCH || $conflictMatch === Pool::MATCH_REPLACE) { + $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $possibleConflict, Rule::RULE_PACKAGE_CONFLICT, $link)); + } + + } + } + + // check obsoletes and implicit obsoletes of a package + $isInstalled = isset($this->installedMap[$package->id]); + + foreach ($package->getReplaces() as $link) { + if (!isset($this->addedPackagesByNames[$link->getTarget()])) { + continue; + } + + /** @var PackageInterface $possibleConflict */ + foreach ($this->addedPackagesByNames[$link->getTarget()] as $provider) { + if ($provider === $package) { + continue; + } + + if (!$this->obsoleteImpossibleForAlias($package, $provider)) { + $reason = $isInstalled ? Rule::RULE_INSTALLED_PACKAGE_OBSOLETES : Rule::RULE_PACKAGE_OBSOLETES; + $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $provider, $reason, $link)); + } + } + } + } + } + + protected function obsoleteImpossibleForAlias($package, $provider) + { + $packageIsAlias = $package instanceof AliasPackage; + $providerIsAlias = $provider instanceof AliasPackage; + + $impossible = ( + ($packageIsAlias && $package->getAliasOf() === $provider) || + ($providerIsAlias && $provider->getAliasOf() === $package) || + ($packageIsAlias && $providerIsAlias && $provider->getAliasOf() === $package->getAliasOf()) + ); + + return $impossible; + } + + protected function whitelistFromJobs() + { + foreach ($this->jobs as $job) { + switch ($job['cmd']) { + case 'install': + $packages = $this->pool->whatProvides($job['packageName'], $job['constraint'], true); + foreach ($packages as $package) { + $this->whitelistFromPackage($package); + } + break; + } + } + } + + protected function addRulesForJobs($ignorePlatformReqs) + { + foreach ($this->jobs as $job) { + switch ($job['cmd']) { + case 'install': + if (!$job['fixed'] && $ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $job['packageName'])) { + break; + } + + $packages = $this->pool->whatProvides($job['packageName'], $job['constraint']); + if ($packages) { + foreach ($packages as $package) { + if (!isset($this->installedMap[$package->id])) { + $this->addRulesForPackage($package, $ignorePlatformReqs); + } + } + + $rule = $this->createInstallOneOfRule($packages, Rule::RULE_JOB_INSTALL, $job); + $this->addRule(RuleSet::TYPE_JOB, $rule); + } + break; + case 'remove': + // remove all packages with this name including uninstalled + // ones to make sure none of them are picked as replacements + $packages = $this->pool->whatProvides($job['packageName'], $job['constraint']); + foreach ($packages as $package) { + $rule = $this->createRemoveRule($package, Rule::RULE_JOB_REMOVE, $job); + $this->addRule(RuleSet::TYPE_JOB, $rule); + } + break; + } + } + } + + public function getRulesFor($jobs, $installedMap, $ignorePlatformReqs = false) + { + $this->jobs = $jobs; + $this->rules = new RuleSet; + $this->installedMap = $installedMap; + + $this->whitelistedMap = array(); + foreach ($this->installedMap as $package) { + $this->whitelistFromPackage($package); + } + $this->whitelistFromJobs(); + + $this->pool->setWhitelist($this->whitelistedMap); + + $this->addedMap = array(); + $this->conflictAddedMap = array(); + $this->addedPackages = array(); + $this->addedPackagesByNames = array(); + foreach ($this->installedMap as $package) { + $this->addRulesForPackage($package, $ignorePlatformReqs); + } + + $this->addRulesForJobs($ignorePlatformReqs); + + $this->addConflictRules($ignorePlatformReqs); + + // Remove references to packages + $this->addedPackages = $this->addedPackagesByNames = null; + + return $this->rules; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php new file mode 100644 index 0000000..8c04862 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php @@ -0,0 +1,94 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +/** + * @author Nils Adermann + */ +class RuleSetIterator implements \Iterator +{ + protected $rules; + protected $types; + + protected $currentOffset; + protected $currentType; + protected $currentTypeOffset; + + public function __construct(array $rules) + { + $this->rules = $rules; + $this->types = array_keys($rules); + sort($this->types); + + $this->rewind(); + } + + public function current() + { + return $this->rules[$this->currentType][$this->currentOffset]; + } + + public function key() + { + return $this->currentType; + } + + public function next() + { + $this->currentOffset++; + + if (!isset($this->rules[$this->currentType])) { + return; + } + + if ($this->currentOffset >= count($this->rules[$this->currentType])) { + $this->currentOffset = 0; + + do { + $this->currentTypeOffset++; + + if (!isset($this->types[$this->currentTypeOffset])) { + $this->currentType = -1; + break; + } + + $this->currentType = $this->types[$this->currentTypeOffset]; + } while (isset($this->types[$this->currentTypeOffset]) && !count($this->rules[$this->currentType])); + } + } + + public function rewind() + { + $this->currentOffset = 0; + + $this->currentTypeOffset = -1; + $this->currentType = -1; + + do { + $this->currentTypeOffset++; + + if (!isset($this->types[$this->currentTypeOffset])) { + $this->currentType = -1; + break; + } + + $this->currentType = $this->types[$this->currentTypeOffset]; + } while (isset($this->types[$this->currentTypeOffset]) && !count($this->rules[$this->currentType])); + } + + public function valid() + { + return isset($this->rules[$this->currentType]) + && isset($this->rules[$this->currentType][$this->currentOffset]); + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php new file mode 100644 index 0000000..2fea0d6 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php @@ -0,0 +1,52 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +/** + * An extension of SplDoublyLinkedList with seek and removal of current element + * + * SplDoublyLinkedList only allows deleting a particular offset and has no + * method to set the internal iterator to a particular offset. + * + * @author Nils Adermann + */ +class RuleWatchChain extends \SplDoublyLinkedList +{ + protected $offset = 0; + + /** + * Moves the internal iterator to the specified offset + * + * @param int $offset The offset to seek to. + */ + public function seek($offset) + { + $this->rewind(); + for ($i = 0; $i < $offset; $i++, $this->next()); + } + + /** + * Removes the current element from the list + * + * As SplDoublyLinkedList only allows deleting a particular offset and + * incorrectly sets the internal iterator if you delete the current value + * this method sets the internal iterator back to the following element + * using the seek method. + */ + public function remove() + { + $offset = $this->key(); + $this->offsetUnset($offset); + $this->seek($offset); + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php new file mode 100644 index 0000000..31a2241 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php @@ -0,0 +1,144 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +/** + * The RuleWatchGraph efficiently propagates decisions to other rules + * + * All rules generated for solving a SAT problem should be inserted into the + * graph. When a decision on a literal is made, the graph can be used to + * propagate the decision to all other rules involving the literal, leading to + * other trivial decisions resulting from unit clauses. + * + * @author Nils Adermann + */ +class RuleWatchGraph +{ + protected $watchChains = array(); + + /** + * Inserts a rule node into the appropriate chains within the graph + * + * The node is prepended to the watch chains for each of the two literals it + * watches. + * + * Assertions are skipped because they only depend on a single package and + * have no alternative literal that could be true, so there is no need to + * watch changes in any literals. + * + * @param RuleWatchNode $node The rule node to be inserted into the graph + */ + public function insert(RuleWatchNode $node) + { + if ($node->getRule()->isAssertion()) { + return; + } + + foreach (array($node->watch1, $node->watch2) as $literal) { + if (!isset($this->watchChains[$literal])) { + $this->watchChains[$literal] = new RuleWatchChain; + } + + $this->watchChains[$literal]->unshift($node); + } + } + + /** + * Propagates a decision on a literal to all rules watching the literal + * + * If a decision, e.g. +A has been made, then all rules containing -A, e.g. + * (-A|+B|+C) now need to satisfy at least one of the other literals, so + * that the rule as a whole becomes true, since with +A applied the rule + * is now (false|+B|+C) so essentially (+B|+C). + * + * This means that all rules watching the literal -A need to be updated to + * watch 2 other literals which can still be satisfied instead. So literals + * that conflict with previously made decisions are not an option. + * + * Alternatively it can occur that a unit clause results: e.g. if in the + * above example the rule was (-A|+B), then A turning true means that + * B must now be decided true as well. + * + * @param int $decidedLiteral The literal which was decided (A in our example) + * @param int $level The level at which the decision took place and at which + * all resulting decisions should be made. + * @param Decisions $decisions Used to check previous decisions and to + * register decisions resulting from propagation + * @return Rule|null If a conflict is found the conflicting rule is returned + */ + public function propagateLiteral($decidedLiteral, $level, $decisions) + { + // we invert the decided literal here, example: + // A was decided => (-A|B) now requires B to be true, so we look for + // rules which are fulfilled by -A, rather than A. + $literal = -$decidedLiteral; + + if (!isset($this->watchChains[$literal])) { + return null; + } + + $chain = $this->watchChains[$literal]; + + $chain->rewind(); + while ($chain->valid()) { + $node = $chain->current(); + $otherWatch = $node->getOtherWatch($literal); + + if (!$node->getRule()->isDisabled() && !$decisions->satisfy($otherWatch)) { + $ruleLiterals = $node->getRule()->getLiterals(); + + $alternativeLiterals = array_filter($ruleLiterals, function ($ruleLiteral) use ($literal, $otherWatch, $decisions) { + return $literal !== $ruleLiteral && + $otherWatch !== $ruleLiteral && + !$decisions->conflict($ruleLiteral); + }); + + if ($alternativeLiterals) { + reset($alternativeLiterals); + $this->moveWatch($literal, current($alternativeLiterals), $node); + continue; + } + + if ($decisions->conflict($otherWatch)) { + return $node->getRule(); + } + + $decisions->decide($otherWatch, $level, $node->getRule()); + } + + $chain->next(); + } + + return null; + } + + /** + * Moves a rule node from one watch chain to another + * + * The rule node's watched literals are updated accordingly. + * + * @param int $fromLiteral A literal the node used to watch + * @param int $toLiteral A literal the node should watch now + * @param RuleWatchNode $node The rule node to be moved + */ + protected function moveWatch($fromLiteral, $toLiteral, $node) + { + if (!isset($this->watchChains[$toLiteral])) { + $this->watchChains[$toLiteral] = new RuleWatchChain; + } + + $node->moveWatch($fromLiteral, $toLiteral); + $this->watchChains[$fromLiteral]->remove(); + $this->watchChains[$toLiteral]->unshift($node); + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php new file mode 100644 index 0000000..eeaa541 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php @@ -0,0 +1,113 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +/** + * Wrapper around a Rule which keeps track of the two literals it watches + * + * Used by RuleWatchGraph to store rules in two RuleWatchChains. + * + * @author Nils Adermann + */ +class RuleWatchNode +{ + public $watch1; + public $watch2; + + protected $rule; + + /** + * Creates a new node watching the first and second literals of the rule. + * + * @param Rule $rule The rule to wrap + */ + public function __construct($rule) + { + $this->rule = $rule; + + $literals = $rule->getLiterals(); + + $literalCount = count($literals); + $this->watch1 = $literalCount > 0 ? $literals[0] : 0; + $this->watch2 = $literalCount > 1 ? $literals[1] : 0; + } + + /** + * Places the second watch on the rule's literal, decided at the highest level + * + * Useful for learned rules where the literal for the highest rule is most + * likely to quickly lead to further decisions. + * + * @param Decisions $decisions The decisions made so far by the solver + */ + public function watch2OnHighest(Decisions $decisions) + { + $literals = $this->rule->getLiterals(); + + // if there are only 2 elements, both are being watched anyway + if (count($literals) < 3) { + return; + } + + $watchLevel = 0; + + foreach ($literals as $literal) { + $level = $decisions->decisionLevel($literal); + + if ($level > $watchLevel) { + $this->watch2 = $literal; + $watchLevel = $level; + } + } + } + + /** + * Returns the rule this node wraps + * + * @return Rule + */ + public function getRule() + { + return $this->rule; + } + + /** + * Given one watched literal, this method returns the other watched literal + * + * @param int $literal The watched literal that should not be returned + * @return int A literal + */ + public function getOtherWatch($literal) + { + if ($this->watch1 == $literal) { + return $this->watch2; + } + + return $this->watch1; + } + + /** + * Moves a watch from one literal to another + * + * @param int $from The previously watched literal + * @param int $to The literal to be watched now + */ + public function moveWatch($from, $to) + { + if ($this->watch1 == $from) { + $this->watch1 = $to; + } else { + $this->watch2 = $to; + } + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php b/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php new file mode 100644 index 0000000..dbfafd2 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php @@ -0,0 +1,874 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\IO\IOInterface; +use Composer\Repository\RepositoryInterface; +use Composer\Repository\PlatformRepository; + +/** + * @author Nils Adermann + */ +class Solver +{ + const BRANCH_LITERALS = 0; + const BRANCH_LEVEL = 1; + + /** @var PolicyInterface */ + protected $policy; + /** @var Pool */ + protected $pool; + /** @var RepositoryInterface */ + protected $installed; + /** @var RuleSet */ + protected $rules; + /** @var RuleSetGenerator */ + protected $ruleSetGenerator; + /** @var array */ + protected $jobs; + + /** @var int[] */ + protected $updateMap = array(); + /** @var RuleWatchGraph */ + protected $watchGraph; + /** @var Decisions */ + protected $decisions; + /** @var int[] */ + protected $installedMap; + + /** @var int */ + protected $propagateIndex; + /** @var array[] */ + protected $branches = array(); + /** @var Problem[] */ + protected $problems = array(); + /** @var array */ + protected $learnedPool = array(); + /** @var array */ + protected $learnedWhy = array(); + + /** @var bool */ + public $testFlagLearnedPositiveLiteral = false; + + /** @var IOInterface */ + protected $io; + + /** + * @param PolicyInterface $policy + * @param Pool $pool + * @param RepositoryInterface $installed + * @param IOInterface $io + */ + public function __construct(PolicyInterface $policy, Pool $pool, RepositoryInterface $installed, IOInterface $io) + { + $this->io = $io; + $this->policy = $policy; + $this->pool = $pool; + $this->installed = $installed; + $this->ruleSetGenerator = new RuleSetGenerator($policy, $pool); + } + + /** + * @return int + */ + public function getRuleSetSize() + { + return count($this->rules); + } + + // aka solver_makeruledecisions + + private function makeAssertionRuleDecisions() + { + $decisionStart = count($this->decisions) - 1; + + $rulesCount = count($this->rules); + for ($ruleIndex = 0; $ruleIndex < $rulesCount; $ruleIndex++) { + $rule = $this->rules->ruleById[$ruleIndex]; + + if (!$rule->isAssertion() || $rule->isDisabled()) { + continue; + } + + $literals = $rule->getLiterals(); + $literal = $literals[0]; + + if (!$this->decisions->decided($literal)) { + $this->decisions->decide($literal, 1, $rule); + continue; + } + + if ($this->decisions->satisfy($literal)) { + continue; + } + + // found a conflict + if (RuleSet::TYPE_LEARNED === $rule->getType()) { + $rule->disable(); + continue; + } + + $conflict = $this->decisions->decisionRule($literal); + + if ($conflict && RuleSet::TYPE_PACKAGE === $conflict->getType()) { + $problem = new Problem($this->pool); + + $problem->addRule($rule); + $problem->addRule($conflict); + $this->disableProblem($rule); + $this->problems[] = $problem; + continue; + } + + // conflict with another job + $problem = new Problem($this->pool); + $problem->addRule($rule); + $problem->addRule($conflict); + + // push all of our rules (can only be job rules) + // asserting this literal on the problem stack + foreach ($this->rules->getIteratorFor(RuleSet::TYPE_JOB) as $assertRule) { + if ($assertRule->isDisabled() || !$assertRule->isAssertion()) { + continue; + } + + $assertRuleLiterals = $assertRule->getLiterals(); + $assertRuleLiteral = $assertRuleLiterals[0]; + + if (abs($literal) !== abs($assertRuleLiteral)) { + continue; + } + + $problem->addRule($assertRule); + $this->disableProblem($assertRule); + } + $this->problems[] = $problem; + + $this->decisions->resetToOffset($decisionStart); + $ruleIndex = -1; + } + } + + protected function setupInstalledMap() + { + $this->installedMap = array(); + foreach ($this->installed->getPackages() as $package) { + $this->installedMap[$package->id] = $package; + } + } + + /** + * @param bool $ignorePlatformReqs + */ + protected function checkForRootRequireProblems($ignorePlatformReqs) + { + foreach ($this->jobs as $job) { + switch ($job['cmd']) { + case 'update': + $packages = $this->pool->whatProvides($job['packageName'], $job['constraint']); + foreach ($packages as $package) { + if (isset($this->installedMap[$package->id])) { + $this->updateMap[$package->id] = true; + } + } + break; + + case 'update-all': + foreach ($this->installedMap as $package) { + $this->updateMap[$package->id] = true; + } + break; + + case 'install': + if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $job['packageName'])) { + break; + } + + if (!$this->pool->whatProvides($job['packageName'], $job['constraint'])) { + $problem = new Problem($this->pool); + $problem->addRule(new GenericRule(array(), null, null, $job)); + $this->problems[] = $problem; + } + break; + } + } + } + + /** + * @param Request $request + * @param bool $ignorePlatformReqs + * @return array + */ + public function solve(Request $request, $ignorePlatformReqs = false) + { + $this->jobs = $request->getJobs(); + + $this->setupInstalledMap(); + $this->rules = $this->ruleSetGenerator->getRulesFor($this->jobs, $this->installedMap, $ignorePlatformReqs); + $this->checkForRootRequireProblems($ignorePlatformReqs); + $this->decisions = new Decisions($this->pool); + $this->watchGraph = new RuleWatchGraph; + + foreach ($this->rules as $rule) { + $this->watchGraph->insert(new RuleWatchNode($rule)); + } + + /* make decisions based on job/update assertions */ + $this->makeAssertionRuleDecisions(); + + $this->io->writeError('Resolving dependencies through SAT', true, IOInterface::DEBUG); + $before = microtime(true); + $this->runSat(true); + $this->io->writeError('', true, IOInterface::DEBUG); + $this->io->writeError(sprintf('Dependency resolution completed in %.3f seconds', microtime(true) - $before), true, IOInterface::VERBOSE); + + // decide to remove everything that's installed and undecided + foreach ($this->installedMap as $packageId => $void) { + if ($this->decisions->undecided($packageId)) { + $this->decisions->decide(-$packageId, 1, null); + } + } + + if ($this->problems) { + throw new SolverProblemsException($this->problems, $this->installedMap); + } + + $transaction = new Transaction($this->policy, $this->pool, $this->installedMap, $this->decisions); + + return $transaction->getOperations(); + } + + /** + * Makes a decision and propagates it to all rules. + * + * Evaluates each term affected by the decision (linked through watches) + * If we find unit rules we make new decisions based on them + * + * @param int $level + * @return Rule|null A rule on conflict, otherwise null. + */ + protected function propagate($level) + { + while ($this->decisions->validOffset($this->propagateIndex)) { + $decision = $this->decisions->atOffset($this->propagateIndex); + + $conflict = $this->watchGraph->propagateLiteral( + $decision[Decisions::DECISION_LITERAL], + $level, + $this->decisions + ); + + $this->propagateIndex++; + + if ($conflict) { + return $conflict; + } + } + + return null; + } + + /** + * Reverts a decision at the given level. + * + * @param int $level + */ + private function revert($level) + { + while (!$this->decisions->isEmpty()) { + $literal = $this->decisions->lastLiteral(); + + if ($this->decisions->undecided($literal)) { + break; + } + + $decisionLevel = $this->decisions->decisionLevel($literal); + + if ($decisionLevel <= $level) { + break; + } + + $this->decisions->revertLast(); + $this->propagateIndex = count($this->decisions); + } + + while (!empty($this->branches) && $this->branches[count($this->branches) - 1][self::BRANCH_LEVEL] >= $level) { + array_pop($this->branches); + } + } + + /** + * setpropagatelearn + * + * add free decision (a positive literal) to decision queue + * increase level and propagate decision + * return if no conflict. + * + * in conflict case, analyze conflict rule, add resulting + * rule to learnt rule set, make decision from learnt + * rule (always unit) and re-propagate. + * + * returns the new solver level or 0 if unsolvable + * + * @param int $level + * @param string|int $literal + * @param bool $disableRules + * @param Rule $rule + * @return int + */ + private function setPropagateLearn($level, $literal, $disableRules, Rule $rule) + { + $level++; + + $this->decisions->decide($literal, $level, $rule); + + while (true) { + $rule = $this->propagate($level); + + if (!$rule) { + break; + } + + if ($level == 1) { + return $this->analyzeUnsolvable($rule, $disableRules); + } + + // conflict + list($learnLiteral, $newLevel, $newRule, $why) = $this->analyze($level, $rule); + + if ($newLevel <= 0 || $newLevel >= $level) { + throw new SolverBugException( + "Trying to revert to invalid level ".(int) $newLevel." from level ".(int) $level."." + ); + } elseif (!$newRule) { + throw new SolverBugException( + "No rule was learned from analyzing $rule at level $level." + ); + } + + $level = $newLevel; + + $this->revert($level); + + $this->rules->add($newRule, RuleSet::TYPE_LEARNED); + + $this->learnedWhy[spl_object_hash($newRule)] = $why; + + $ruleNode = new RuleWatchNode($newRule); + $ruleNode->watch2OnHighest($this->decisions); + $this->watchGraph->insert($ruleNode); + + $this->decisions->decide($learnLiteral, $level, $newRule); + } + + return $level; + } + + /** + * @param int $level + * @param array $decisionQueue + * @param bool $disableRules + * @param Rule $rule + * @return int + */ + private function selectAndInstall($level, array $decisionQueue, $disableRules, Rule $rule) + { + // choose best package to install from decisionQueue + $literals = $this->policy->selectPreferredPackages($this->pool, $this->installedMap, $decisionQueue, $rule->getRequiredPackage()); + + $selectedLiteral = array_shift($literals); + + // if there are multiple candidates, then branch + if (count($literals)) { + $this->branches[] = array($literals, $level); + } + + return $this->setPropagateLearn($level, $selectedLiteral, $disableRules, $rule); + } + + /** + * @param int $level + * @param Rule $rule + * @return array + */ + protected function analyze($level, Rule $rule) + { + $analyzedRule = $rule; + $ruleLevel = 1; + $num = 0; + $l1num = 0; + $seen = array(); + $learnedLiterals = array(null); + + $decisionId = count($this->decisions); + + $this->learnedPool[] = array(); + + while (true) { + $this->learnedPool[count($this->learnedPool) - 1][] = $rule; + + foreach ($rule->getLiterals() as $literal) { + // skip the one true literal + if ($this->decisions->satisfy($literal)) { + continue; + } + + if (isset($seen[abs($literal)])) { + continue; + } + $seen[abs($literal)] = true; + + $l = $this->decisions->decisionLevel($literal); + + if (1 === $l) { + $l1num++; + } elseif ($level === $l) { + $num++; + } else { + // not level1 or conflict level, add to new rule + $learnedLiterals[] = $literal; + + if ($l > $ruleLevel) { + $ruleLevel = $l; + } + } + } + + $l1retry = true; + while ($l1retry) { + $l1retry = false; + + if (!$num && !--$l1num) { + // all level 1 literals done + break 2; + } + + while (true) { + if ($decisionId <= 0) { + throw new SolverBugException( + "Reached invalid decision id $decisionId while looking through $rule for a literal present in the analyzed rule $analyzedRule." + ); + } + + $decisionId--; + + $decision = $this->decisions->atOffset($decisionId); + $literal = $decision[Decisions::DECISION_LITERAL]; + + if (isset($seen[abs($literal)])) { + break; + } + } + + unset($seen[abs($literal)]); + + if ($num && 0 === --$num) { + if ($literal < 0) { + $this->testFlagLearnedPositiveLiteral = true; + } + $learnedLiterals[0] = -$literal; + + if (!$l1num) { + break 2; + } + + foreach ($learnedLiterals as $i => $learnedLiteral) { + if ($i !== 0) { + unset($seen[abs($learnedLiteral)]); + } + } + // only level 1 marks left + $l1num++; + $l1retry = true; + } + } + + $decision = $this->decisions->atOffset($decisionId); + $rule = $decision[Decisions::DECISION_REASON]; + } + + $why = count($this->learnedPool) - 1; + + if (!$learnedLiterals[0]) { + throw new SolverBugException( + "Did not find a learnable literal in analyzed rule $analyzedRule." + ); + } + + $newRule = new GenericRule($learnedLiterals, Rule::RULE_LEARNED, $why); + + return array($learnedLiterals[0], $ruleLevel, $newRule, $why); + } + + /** + * @param Problem $problem + * @param Rule $conflictRule + */ + private function analyzeUnsolvableRule(Problem $problem, Rule $conflictRule) + { + if ($conflictRule->getType() == RuleSet::TYPE_LEARNED) { + $why = spl_object_hash($conflictRule); + $learnedWhy = $this->learnedWhy[$why]; + $problemRules = $this->learnedPool[$learnedWhy]; + + foreach ($problemRules as $problemRule) { + $this->analyzeUnsolvableRule($problem, $problemRule); + } + + return; + } + + if ($conflictRule->getType() == RuleSet::TYPE_PACKAGE) { + // package rules cannot be part of a problem + return; + } + + $problem->nextSection(); + $problem->addRule($conflictRule); + } + + /** + * @param Rule $conflictRule + * @param bool $disableRules + * @return int + */ + private function analyzeUnsolvable(Rule $conflictRule, $disableRules) + { + $problem = new Problem($this->pool); + $problem->addRule($conflictRule); + + $this->analyzeUnsolvableRule($problem, $conflictRule); + + $this->problems[] = $problem; + + $seen = array(); + $literals = $conflictRule->getLiterals(); + + foreach ($literals as $literal) { + // skip the one true literal + if ($this->decisions->satisfy($literal)) { + continue; + } + $seen[abs($literal)] = true; + } + + foreach ($this->decisions as $decision) { + $literal = $decision[Decisions::DECISION_LITERAL]; + + // skip literals that are not in this rule + if (!isset($seen[abs($literal)])) { + continue; + } + + $why = $decision[Decisions::DECISION_REASON]; + + $problem->addRule($why); + $this->analyzeUnsolvableRule($problem, $why); + + $literals = $why->getLiterals(); + + foreach ($literals as $literal) { + // skip the one true literal + if ($this->decisions->satisfy($literal)) { + continue; + } + $seen[abs($literal)] = true; + } + } + + if ($disableRules) { + foreach ($this->problems[count($this->problems) - 1] as $reason) { + $this->disableProblem($reason['rule']); + } + + $this->resetSolver(); + + return 1; + } + + return 0; + } + + /** + * @param Rule $why + */ + private function disableProblem(Rule $why) + { + $job = $why->getJob(); + + if (!$job) { + $why->disable(); + + return; + } + + // disable all rules of this job + foreach ($this->rules as $rule) { + /** @var Rule $rule */ + if ($job === $rule->getJob()) { + $rule->disable(); + } + } + } + + private function resetSolver() + { + $this->decisions->reset(); + + $this->propagateIndex = 0; + $this->branches = array(); + + $this->enableDisableLearnedRules(); + $this->makeAssertionRuleDecisions(); + } + + /** + * enable/disable learnt rules + * + * we have enabled or disabled some of our rules. We now re-enable all + * of our learnt rules except the ones that were learnt from rules that + * are now disabled. + */ + private function enableDisableLearnedRules() + { + foreach ($this->rules->getIteratorFor(RuleSet::TYPE_LEARNED) as $rule) { + $why = $this->learnedWhy[spl_object_hash($rule)]; + $problemRules = $this->learnedPool[$why]; + + $foundDisabled = false; + foreach ($problemRules as $problemRule) { + if ($problemRule->isDisabled()) { + $foundDisabled = true; + break; + } + } + + if ($foundDisabled && $rule->isEnabled()) { + $rule->disable(); + } elseif (!$foundDisabled && $rule->isDisabled()) { + $rule->enable(); + } + } + } + + /** + * @param bool $disableRules + */ + private function runSat($disableRules = true) + { + $this->propagateIndex = 0; + + /* + * here's the main loop: + * 1) propagate new decisions (only needed once) + * 2) fulfill jobs + * 3) fulfill all unresolved rules + * 4) minimalize solution if we had choices + * if we encounter a problem, we rewind to a safe level and restart + * with step 1 + */ + + $decisionQueue = array(); + $decisionSupplementQueue = array(); + /** + * @todo this makes $disableRules always false; determine the rationale and possibly remove dead code? + */ + $disableRules = array(); + + $level = 1; + $systemLevel = $level + 1; + $installedPos = 0; + + while (true) { + if (1 === $level) { + $conflictRule = $this->propagate($level); + if (null !== $conflictRule) { + if ($this->analyzeUnsolvable($conflictRule, $disableRules)) { + continue; + } + + return; + } + } + + // handle job rules + if ($level < $systemLevel) { + $iterator = $this->rules->getIteratorFor(RuleSet::TYPE_JOB); + foreach ($iterator as $rule) { + if ($rule->isEnabled()) { + $decisionQueue = array(); + $noneSatisfied = true; + + foreach ($rule->getLiterals() as $literal) { + if ($this->decisions->satisfy($literal)) { + $noneSatisfied = false; + break; + } + if ($literal > 0 && $this->decisions->undecided($literal)) { + $decisionQueue[] = $literal; + } + } + + if ($noneSatisfied && count($decisionQueue)) { + // prune all update packages until installed version + // except for requested updates + if (count($this->installed) != count($this->updateMap)) { + $prunedQueue = array(); + foreach ($decisionQueue as $literal) { + if (isset($this->installedMap[abs($literal)])) { + $prunedQueue[] = $literal; + if (isset($this->updateMap[abs($literal)])) { + $prunedQueue = $decisionQueue; + break; + } + } + } + $decisionQueue = $prunedQueue; + } + } + + if ($noneSatisfied && count($decisionQueue)) { + $oLevel = $level; + $level = $this->selectAndInstall($level, $decisionQueue, $disableRules, $rule); + + if (0 === $level) { + return; + } + if ($level <= $oLevel) { + break; + } + } + } + } + + $systemLevel = $level + 1; + + // jobs left + $iterator->next(); + if ($iterator->valid()) { + continue; + } + } + + if ($level < $systemLevel) { + $systemLevel = $level; + } + + $rulesCount = count($this->rules); + $pass = 1; + + $this->io->writeError('Looking at all rules.', true, IOInterface::DEBUG); + for ($i = 0, $n = 0; $n < $rulesCount; $i++, $n++) { + if ($i == $rulesCount) { + if (1 === $pass) { + $this->io->writeError("Something's changed, looking at all rules again (pass #$pass)", false, IOInterface::DEBUG); + } else { + $this->io->overwriteError("Something's changed, looking at all rules again (pass #$pass)", false, null, IOInterface::DEBUG); + } + + $i = 0; + $pass++; + } + + $rule = $this->rules->ruleById[$i]; + $literals = $rule->getLiterals(); + + if ($rule->isDisabled()) { + continue; + } + + $decisionQueue = array(); + + // make sure that + // * all negative literals are installed + // * no positive literal is installed + // i.e. the rule is not fulfilled and we + // just need to decide on the positive literals + // + foreach ($literals as $literal) { + if ($literal <= 0) { + if (!$this->decisions->decidedInstall($literal)) { + continue 2; // next rule + } + } else { + if ($this->decisions->decidedInstall($literal)) { + continue 2; // next rule + } + if ($this->decisions->undecided($literal)) { + $decisionQueue[] = $literal; + } + } + } + + // need to have at least 2 item to pick from + if (count($decisionQueue) < 2) { + continue; + } + + $level = $this->selectAndInstall($level, $decisionQueue, $disableRules, $rule); + + if (0 === $level) { + return; + } + + // something changed, so look at all rules again + $rulesCount = count($this->rules); + $n = -1; + } + + if ($level < $systemLevel) { + continue; + } + + // minimization step + if (count($this->branches)) { + $lastLiteral = null; + $lastLevel = null; + $lastBranchIndex = 0; + $lastBranchOffset = 0; + + for ($i = count($this->branches) - 1; $i >= 0; $i--) { + list($literals, $l) = $this->branches[$i]; + + foreach ($literals as $offset => $literal) { + if ($literal && $literal > 0 && $this->decisions->decisionLevel($literal) > $l + 1) { + $lastLiteral = $literal; + $lastBranchIndex = $i; + $lastBranchOffset = $offset; + $lastLevel = $l; + } + } + } + + if ($lastLiteral) { + unset($this->branches[$lastBranchIndex][self::BRANCH_LITERALS][$lastBranchOffset]); + + $level = $lastLevel; + $this->revert($level); + + $why = $this->decisions->lastReason(); + + $level = $this->setPropagateLearn($level, $lastLiteral, $disableRules, $why); + + if ($level == 0) { + return; + } + + continue; + } + } + + break; + } + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php b/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php new file mode 100644 index 0000000..6920411 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php @@ -0,0 +1,27 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +/** + * @author Nils Adermann + */ +class SolverBugException extends \RuntimeException +{ + public function __construct($message) + { + parent::__construct( + $message."\nThis exception was most likely caused by a bug in Composer.\n". + "Please report the command you ran, the exact error you received, and your composer.json on https://github.com/composer/composer/issues - thank you!\n" + ); + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php b/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php new file mode 100644 index 0000000..1428956 --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php @@ -0,0 +1,88 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Util\IniHelper; + +/** + * @author Nils Adermann + */ +class SolverProblemsException extends \RuntimeException +{ + protected $problems; + protected $installedMap; + + public function __construct(array $problems, array $installedMap) + { + $this->problems = $problems; + $this->installedMap = $installedMap; + + parent::__construct($this->createMessage(), 2); + } + + protected function createMessage() + { + $text = "\n"; + $hasExtensionProblems = false; + foreach ($this->problems as $i => $problem) { + $text .= " Problem ".($i + 1).$problem->getPrettyString($this->installedMap)."\n"; + + if (!$hasExtensionProblems && $this->hasExtensionProblems($problem->getReasons())) { + $hasExtensionProblems = true; + } + } + + if (strpos($text, 'could not be found') || strpos($text, 'no matching package found')) { + $text .= "\nPotential causes:\n - A typo in the package name\n - The package is not available in a stable-enough version according to your minimum-stability setting\n see for more details.\n - It's a private package and you forgot to add a custom repository to find it\n\nRead for further common problems."; + } + + if ($hasExtensionProblems) { + $text .= $this->createExtensionHint(); + } + + return $text; + } + + public function getProblems() + { + return $this->problems; + } + + private function createExtensionHint() + { + $paths = IniHelper::getAll(); + + if (count($paths) === 1 && empty($paths[0])) { + return ''; + } + + $text = "\n To enable extensions, verify that they are enabled in your .ini files:\n - "; + $text .= implode("\n - ", $paths); + $text .= "\n You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode."; + + return $text; + } + + private function hasExtensionProblems(array $reasonSets) + { + foreach ($reasonSets as $reasonSet) { + foreach ($reasonSet as $reason) { + if (isset($reason["rule"]) && 0 === strpos($reason["rule"]->getRequiredPackage(), 'ext-')) { + return true; + } + } + } + + return false; + } +} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php b/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php new file mode 100644 index 0000000..c8d3bbe --- /dev/null +++ b/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php @@ -0,0 +1,244 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\DependencyResolver; + +use Composer\Package\AliasPackage; + +/** + * @author Nils Adermann + */ +class Transaction +{ + protected $policy; + protected $pool; + protected $installedMap; + protected $decisions; + protected $transaction; + + public function __construct($policy, $pool, $installedMap, $decisions) + { + $this->policy = $policy; + $this->pool = $pool; + $this->installedMap = $installedMap; + $this->decisions = $decisions; + $this->transaction = array(); + } + + public function getOperations() + { + $installMeansUpdateMap = $this->findUpdates(); + + $updateMap = array(); + $installMap = array(); + $uninstallMap = array(); + + foreach ($this->decisions as $i => $decision) { + $literal = $decision[Decisions::DECISION_LITERAL]; + $reason = $decision[Decisions::DECISION_REASON]; + + $package = $this->pool->literalToPackage($literal); + + // wanted & installed || !wanted & !installed + if (($literal > 0) == isset($this->installedMap[$package->id])) { + continue; + } + + if ($literal > 0) { + if (isset($installMeansUpdateMap[abs($literal)]) && !$package instanceof AliasPackage) { + $source = $installMeansUpdateMap[abs($literal)]; + + $updateMap[$package->id] = array( + 'package' => $package, + 'source' => $source, + 'reason' => $reason, + ); + + // avoid updates to one package from multiple origins + unset($installMeansUpdateMap[abs($literal)]); + $ignoreRemove[$source->id] = true; + } else { + $installMap[$package->id] = array( + 'package' => $package, + 'reason' => $reason, + ); + } + } + } + + foreach ($this->decisions as $i => $decision) { + $literal = $decision[Decisions::DECISION_LITERAL]; + $reason = $decision[Decisions::DECISION_REASON]; + $package = $this->pool->literalToPackage($literal); + + if ($literal <= 0 && + isset($this->installedMap[$package->id]) && + !isset($ignoreRemove[$package->id])) { + $uninstallMap[$package->id] = array( + 'package' => $package, + 'reason' => $reason, + ); + } + } + + $this->transactionFromMaps($installMap, $updateMap, $uninstallMap); + + return $this->transaction; + } + + protected function transactionFromMaps($installMap, $updateMap, $uninstallMap) + { + $queue = array_map( + function ($operation) { + return $operation['package']; + }, + $this->findRootPackages($installMap, $updateMap) + ); + + $visited = array(); + + while (!empty($queue)) { + $package = array_pop($queue); + $packageId = $package->id; + + if (!isset($visited[$packageId])) { + $queue[] = $package; + + if ($package instanceof AliasPackage) { + $queue[] = $package->getAliasOf(); + } else { + foreach ($package->getRequires() as $link) { + $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); + + foreach ($possibleRequires as $require) { + $queue[] = $require; + } + } + } + + $visited[$package->id] = true; + } else { + if (isset($installMap[$packageId])) { + $this->install( + $installMap[$packageId]['package'], + $installMap[$packageId]['reason'] + ); + unset($installMap[$packageId]); + } + if (isset($updateMap[$packageId])) { + $this->update( + $updateMap[$packageId]['source'], + $updateMap[$packageId]['package'], + $updateMap[$packageId]['reason'] + ); + unset($updateMap[$packageId]); + } + } + } + + foreach ($uninstallMap as $uninstall) { + $this->uninstall($uninstall['package'], $uninstall['reason']); + } + } + + protected function findRootPackages($installMap, $updateMap) + { + $packages = $installMap + $updateMap; + $roots = $packages; + + foreach ($packages as $packageId => $operation) { + $package = $operation['package']; + + if (!isset($roots[$packageId])) { + continue; + } + + foreach ($package->getRequires() as $link) { + $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); + + foreach ($possibleRequires as $require) { + if ($require !== $package) { + unset($roots[$require->id]); + } + } + } + } + + return $roots; + } + + protected function findUpdates() + { + $installMeansUpdateMap = array(); + + foreach ($this->decisions as $i => $decision) { + $literal = $decision[Decisions::DECISION_LITERAL]; + $package = $this->pool->literalToPackage($literal); + + if ($package instanceof AliasPackage) { + continue; + } + + // !wanted & installed + if ($literal <= 0 && isset($this->installedMap[$package->id])) { + $updates = $this->policy->findUpdatePackages($this->pool, $this->installedMap, $package); + + $literals = array($package->id); + + foreach ($updates as $update) { + $literals[] = $update->id; + } + + foreach ($literals as $updateLiteral) { + if ($updateLiteral !== $literal) { + $installMeansUpdateMap[abs($updateLiteral)] = $package; + } + } + } + } + + return $installMeansUpdateMap; + } + + protected function install($package, $reason) + { + if ($package instanceof AliasPackage) { + return $this->markAliasInstalled($package, $reason); + } + + $this->transaction[] = new Operation\InstallOperation($package, $reason); + } + + protected function update($from, $to, $reason) + { + $this->transaction[] = new Operation\UpdateOperation($from, $to, $reason); + } + + protected function uninstall($package, $reason) + { + if ($package instanceof AliasPackage) { + return $this->markAliasUninstalled($package, $reason); + } + + $this->transaction[] = new Operation\UninstallOperation($package, $reason); + } + + protected function markAliasInstalled($package, $reason) + { + $this->transaction[] = new Operation\MarkAliasInstalledOperation($package, $reason); + } + + protected function markAliasUninstalled($package, $reason) + { + $this->transaction[] = new Operation\MarkAliasUninstalledOperation($package, $reason); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php b/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php new file mode 100644 index 0000000..d041a7f --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php @@ -0,0 +1,135 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; +use Symfony\Component\Finder\Finder; +use Composer\IO\IOInterface; + +/** + * Base downloader for archives + * + * @author Kirill chEbba Chebunin + * @author Jordi Boggiano + * @author François Pluchino + */ +abstract class ArchiveDownloader extends FileDownloader +{ + /** + * {@inheritDoc} + * @throws \RuntimeException + * @throws \UnexpectedValueException + */ + public function download(PackageInterface $package, $path, $output = true) + { + $temporaryDir = $this->config->get('vendor-dir').'/composer/'.substr(md5(uniqid('', true)), 0, 8); + $retries = 3; + while ($retries--) { + $fileName = parent::download($package, $path, $output); + + if ($output) { + $this->io->writeError(' Extracting archive', false, IOInterface::VERBOSE); + } + + try { + $this->filesystem->ensureDirectoryExists($temporaryDir); + try { + $this->extract($fileName, $temporaryDir); + } catch (\Exception $e) { + // remove cache if the file was corrupted + parent::clearLastCacheWrite($package); + throw $e; + } + + $this->filesystem->unlink($fileName); + + $contentDir = $this->getFolderContent($temporaryDir); + + // only one dir in the archive, extract its contents out of it + if (1 === count($contentDir) && is_dir(reset($contentDir))) { + $contentDir = $this->getFolderContent((string) reset($contentDir)); + } + + // move files back out of the temp dir + foreach ($contentDir as $file) { + $file = (string) $file; + $this->filesystem->rename($file, $path . '/' . basename($file)); + } + + $this->filesystem->removeDirectory($temporaryDir); + if ($this->filesystem->isDirEmpty($this->config->get('vendor-dir').'/composer/')) { + $this->filesystem->removeDirectory($this->config->get('vendor-dir').'/composer/'); + } + if ($this->filesystem->isDirEmpty($this->config->get('vendor-dir'))) { + $this->filesystem->removeDirectory($this->config->get('vendor-dir')); + } + } catch (\Exception $e) { + // clean up + $this->filesystem->removeDirectory($path); + $this->filesystem->removeDirectory($temporaryDir); + + // retry downloading if we have an invalid zip file + if ($retries && $e instanceof \UnexpectedValueException && class_exists('ZipArchive') && $e->getCode() === \ZipArchive::ER_NOZIP) { + $this->io->writeError(''); + if ($this->io->isDebug()) { + $this->io->writeError(' Invalid zip file ('.$e->getMessage().'), retrying...'); + } else { + $this->io->writeError(' Invalid zip file, retrying...'); + } + usleep(500000); + continue; + } + + throw $e; + } + + break; + } + } + + /** + * {@inheritdoc} + */ + protected function getFileName(PackageInterface $package, $path) + { + return rtrim($path.'/'.md5($path.spl_object_hash($package)).'.'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_EXTENSION), '.'); + } + + /** + * Extract file to directory + * + * @param string $file Extracted file + * @param string $path Directory + * + * @throws \UnexpectedValueException If can not extract downloaded file to path + */ + abstract protected function extract($file, $path); + + /** + * Returns the folder content, excluding dotfiles + * + * @param string $dir Directory + * @return \SplFileInfo[] + */ + private function getFolderContent($dir) + { + $finder = Finder::create() + ->ignoreVCS(false) + ->ignoreDotFiles(false) + ->notName('.DS_Store') + ->depth(0) + ->in($dir); + + return iterator_to_array($finder); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php b/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php new file mode 100644 index 0000000..3fb1dc5 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php @@ -0,0 +1,32 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; + +/** + * ChangeReport interface. + * + * @author Sascha Egerer + */ +interface ChangeReportInterface +{ + /** + * Checks for changes to the local copy + * + * @param PackageInterface $package package instance + * @param string $path package directory + * @return string|null changes or null + */ + public function getLocalChanges(PackageInterface $package, $path); +} diff --git a/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php b/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php new file mode 100644 index 0000000..15c00a6 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php @@ -0,0 +1,325 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; +use Composer\IO\IOInterface; +use Composer\Util\Filesystem; + +/** + * Downloaders manager. + * + * @author Konstantin Kudryashov + */ +class DownloadManager +{ + private $io; + private $preferDist = false; + private $preferSource = false; + private $packagePreferences = array(); + private $filesystem; + private $downloaders = array(); + + /** + * Initializes download manager. + * + * @param IOInterface $io The Input Output Interface + * @param bool $preferSource prefer downloading from source + * @param Filesystem|null $filesystem custom Filesystem object + */ + public function __construct(IOInterface $io, $preferSource = false, Filesystem $filesystem = null) + { + $this->io = $io; + $this->preferSource = $preferSource; + $this->filesystem = $filesystem ?: new Filesystem(); + } + + /** + * Makes downloader prefer source installation over the dist. + * + * @param bool $preferSource prefer downloading from source + * @return DownloadManager + */ + public function setPreferSource($preferSource) + { + $this->preferSource = $preferSource; + + return $this; + } + + /** + * Makes downloader prefer dist installation over the source. + * + * @param bool $preferDist prefer downloading from dist + * @return DownloadManager + */ + public function setPreferDist($preferDist) + { + $this->preferDist = $preferDist; + + return $this; + } + + /** + * Sets fine tuned preference settings for package level source/dist selection. + * + * @param array $preferences array of preferences by package patterns + * @return DownloadManager + */ + public function setPreferences(array $preferences) + { + $this->packagePreferences = $preferences; + + return $this; + } + + /** + * Sets whether to output download progress information for all registered + * downloaders + * + * @param bool $outputProgress + * @return DownloadManager + */ + public function setOutputProgress($outputProgress) + { + foreach ($this->downloaders as $downloader) { + $downloader->setOutputProgress($outputProgress); + } + + return $this; + } + + /** + * Sets installer downloader for a specific installation type. + * + * @param string $type installation type + * @param DownloaderInterface $downloader downloader instance + * @return DownloadManager + */ + public function setDownloader($type, DownloaderInterface $downloader) + { + $type = strtolower($type); + $this->downloaders[$type] = $downloader; + + return $this; + } + + /** + * Returns downloader for a specific installation type. + * + * @param string $type installation type + * @throws \InvalidArgumentException if downloader for provided type is not registered + * @return DownloaderInterface + */ + public function getDownloader($type) + { + $type = strtolower($type); + if (!isset($this->downloaders[$type])) { + throw new \InvalidArgumentException(sprintf('Unknown downloader type: %s. Available types: %s.', $type, implode(', ', array_keys($this->downloaders)))); + } + + return $this->downloaders[$type]; + } + + /** + * Returns downloader for already installed package. + * + * @param PackageInterface $package package instance + * @throws \InvalidArgumentException if package has no installation source specified + * @throws \LogicException if specific downloader used to load package with + * wrong type + * @return DownloaderInterface|null + */ + public function getDownloaderForInstalledPackage(PackageInterface $package) + { + $installationSource = $package->getInstallationSource(); + + if ('metapackage' === $package->getType()) { + return; + } + + if ('dist' === $installationSource) { + $downloader = $this->getDownloader($package->getDistType()); + } elseif ('source' === $installationSource) { + $downloader = $this->getDownloader($package->getSourceType()); + } else { + throw new \InvalidArgumentException( + 'Package '.$package.' seems not been installed properly' + ); + } + + if ($installationSource !== $downloader->getInstallationSource()) { + throw new \LogicException(sprintf( + 'Downloader "%s" is a %s type downloader and can not be used to download %s for package %s', + get_class($downloader), + $downloader->getInstallationSource(), + $installationSource, + $package + )); + } + + return $downloader; + } + + /** + * Downloads package into target dir. + * + * @param PackageInterface $package package instance + * @param string $targetDir target dir + * @param bool $preferSource prefer installation from source + * + * @throws \InvalidArgumentException if package have no urls to download from + * @throws \RuntimeException + */ + public function download(PackageInterface $package, $targetDir, $preferSource = null) + { + $preferSource = null !== $preferSource ? $preferSource : $this->preferSource; + $sourceType = $package->getSourceType(); + $distType = $package->getDistType(); + + $sources = array(); + if ($sourceType) { + $sources[] = 'source'; + } + if ($distType) { + $sources[] = 'dist'; + } + + if (empty($sources)) { + throw new \InvalidArgumentException('Package '.$package.' must have a source or dist specified'); + } + + if (!$preferSource && ($this->preferDist || 'dist' === $this->resolvePackageInstallPreference($package))) { + $sources = array_reverse($sources); + } + + $this->filesystem->ensureDirectoryExists($targetDir); + + foreach ($sources as $i => $source) { + if (isset($e)) { + $this->io->writeError(' Now trying to download from ' . $source . ''); + } + $package->setInstallationSource($source); + try { + $downloader = $this->getDownloaderForInstalledPackage($package); + if ($downloader) { + $downloader->download($package, $targetDir); + } + break; + } catch (\RuntimeException $e) { + if ($i === count($sources) - 1) { + throw $e; + } + + $this->io->writeError( + ' Failed to download '. + $package->getPrettyName(). + ' from ' . $source . ': '. + $e->getMessage().'' + ); + } + } + } + + /** + * Updates package from initial to target version. + * + * @param PackageInterface $initial initial package version + * @param PackageInterface $target target package version + * @param string $targetDir target dir + * + * @throws \InvalidArgumentException if initial package is not installed + */ + public function update(PackageInterface $initial, PackageInterface $target, $targetDir) + { + $downloader = $this->getDownloaderForInstalledPackage($initial); + if (!$downloader) { + return; + } + + $installationSource = $initial->getInstallationSource(); + + if ('dist' === $installationSource) { + $initialType = $initial->getDistType(); + $targetType = $target->getDistType(); + } else { + $initialType = $initial->getSourceType(); + $targetType = $target->getSourceType(); + } + + // upgrading from a dist stable package to a dev package, force source reinstall + if ($target->isDev() && 'dist' === $installationSource) { + $downloader->remove($initial, $targetDir); + $this->download($target, $targetDir); + + return; + } + + if ($initialType === $targetType) { + $target->setInstallationSource($installationSource); + try { + $downloader->update($initial, $target, $targetDir); + + return; + } catch (\RuntimeException $e) { + if (!$this->io->isInteractive()) { + throw $e; + } + $this->io->writeError(' Update failed ('.$e->getMessage().')'); + if (!$this->io->askConfirmation(' Would you like to try reinstalling the package instead [yes]? ', true)) { + throw $e; + } + } + } + + $downloader->remove($initial, $targetDir); + $this->download($target, $targetDir, 'source' === $installationSource); + } + + /** + * Removes package from target dir. + * + * @param PackageInterface $package package instance + * @param string $targetDir target dir + */ + public function remove(PackageInterface $package, $targetDir) + { + $downloader = $this->getDownloaderForInstalledPackage($package); + if ($downloader) { + $downloader->remove($package, $targetDir); + } + } + + /** + * Determines the install preference of a package + * + * @param PackageInterface $package package instance + * + * @return string + */ + protected function resolvePackageInstallPreference(PackageInterface $package) + { + foreach ($this->packagePreferences as $pattern => $preference) { + $pattern = '{^'.str_replace('\\*', '.*', preg_quote($pattern)).'$}i'; + if (preg_match($pattern, $package->getName())) { + if ('dist' === $preference || (!$package->isDev() && 'auto' === $preference)) { + return 'dist'; + } + + return 'source'; + } + } + + return $package->isDev() ? 'source' : 'dist'; + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php b/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php new file mode 100644 index 0000000..713bf36 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php @@ -0,0 +1,64 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; + +/** + * Downloader interface. + * + * @author Konstantin Kudryashov + * @author Jordi Boggiano + */ +interface DownloaderInterface +{ + /** + * Returns installation source (either source or dist). + * + * @return string "source" or "dist" + */ + public function getInstallationSource(); + + /** + * Downloads specific package into specific folder. + * + * @param PackageInterface $package package instance + * @param string $path download path + */ + public function download(PackageInterface $package, $path); + + /** + * Updates specific package in specific folder from initial to target version. + * + * @param PackageInterface $initial initial package + * @param PackageInterface $target updated package + * @param string $path download path + */ + public function update(PackageInterface $initial, PackageInterface $target, $path); + + /** + * Removes specific package from specific folder. + * + * @param PackageInterface $package package instance + * @param string $path download path + */ + public function remove(PackageInterface $package, $path); + + /** + * Sets whether to output download progress information or not + * + * @param bool $outputProgress + * @return DownloaderInterface + */ + public function setOutputProgress($outputProgress); +} diff --git a/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php b/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php new file mode 100644 index 0000000..7fbd4ee --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php @@ -0,0 +1,32 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; + +/** + * DVCS Downloader interface. + * + * @author James Titcumb + */ +interface DvcsDownloaderInterface +{ + /** + * Checks for unpushed changes to a current branch + * + * @param PackageInterface $package package directory + * @param string $path package directory + * @return string|null changes or null + */ + public function getUnpushedChanges(PackageInterface $package, $path); +} diff --git a/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php b/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php new file mode 100644 index 0000000..819fbce --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php @@ -0,0 +1,322 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Config; +use Composer\Cache; +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\IO\NullIO; +use Composer\Package\Comparer\Comparer; +use Composer\Package\PackageInterface; +use Composer\Package\Version\VersionParser; +use Composer\Plugin\PluginEvents; +use Composer\Plugin\PreFileDownloadEvent; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Util\Filesystem; +use Composer\Util\RemoteFilesystem; +use Composer\Util\Url as UrlUtil; + +/** + * Base downloader for files + * + * @author Kirill chEbba Chebunin + * @author Jordi Boggiano + * @author François Pluchino + * @author Nils Adermann + */ +class FileDownloader implements DownloaderInterface, ChangeReportInterface +{ + protected $io; + protected $config; + protected $rfs; + protected $filesystem; + protected $cache; + protected $outputProgress = true; + private $lastCacheWrites = array(); + private $eventDispatcher; + + /** + * Constructor. + * + * @param IOInterface $io The IO instance + * @param Config $config The config + * @param EventDispatcher $eventDispatcher The event dispatcher + * @param Cache $cache Optional cache instance + * @param RemoteFilesystem $rfs The remote filesystem + * @param Filesystem $filesystem The filesystem + */ + public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, RemoteFilesystem $rfs = null, Filesystem $filesystem = null) + { + $this->io = $io; + $this->config = $config; + $this->eventDispatcher = $eventDispatcher; + $this->rfs = $rfs ?: Factory::createRemoteFilesystem($this->io, $config); + $this->filesystem = $filesystem ?: new Filesystem(); + $this->cache = $cache; + + if ($this->cache && $this->cache->gcIsNecessary()) { + $this->cache->gc($config->get('cache-files-ttl'), $config->get('cache-files-maxsize')); + } + } + + /** + * {@inheritDoc} + */ + public function getInstallationSource() + { + return 'dist'; + } + + /** + * {@inheritDoc} + */ + public function download(PackageInterface $package, $path, $output = true) + { + if (!$package->getDistUrl()) { + throw new \InvalidArgumentException('The given package is missing url information'); + } + + if ($output) { + $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . "): ", false); + } + + $urls = $package->getDistUrls(); + while ($url = array_shift($urls)) { + try { + $fileName = $this->doDownload($package, $path, $url); + break; + } catch (\Exception $e) { + if ($this->io->isDebug()) { + $this->io->writeError(''); + $this->io->writeError('Failed: ['.get_class($e).'] '.$e->getCode().': '.$e->getMessage()); + } elseif (count($urls)) { + $this->io->writeError(''); + $this->io->writeError(' Failed, trying the next URL ('.$e->getCode().': '.$e->getMessage().')', false); + } + + if (!count($urls)) { + throw $e; + } + } + } + + if ($output) { + $this->io->writeError(''); + } + + return $fileName; + } + + protected function doDownload(PackageInterface $package, $path, $url) + { + $this->filesystem->emptyDirectory($path); + + $fileName = $this->getFileName($package, $path); + + $processedUrl = $this->processUrl($package, $url); + $origin = RemoteFilesystem::getOrigin($processedUrl); + + $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->rfs, $processedUrl); + if ($this->eventDispatcher) { + $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); + } + $rfs = $preFileDownloadEvent->getRemoteFilesystem(); + + try { + $checksum = $package->getDistSha1Checksum(); + $cacheKey = $this->getCacheKey($package, $processedUrl); + + // use from cache if it is present and has a valid checksum or we have no checksum to check against + if ($this->cache && (!$checksum || $checksum === $this->cache->sha1($cacheKey)) && $this->cache->copyTo($cacheKey, $fileName)) { + $this->io->writeError('Loading from cache', false); + } else { + // download if cache restore failed + if (!$this->outputProgress) { + $this->io->writeError('Downloading', false); + } + + // try to download 3 times then fail hard + $retries = 3; + while ($retries--) { + try { + $rfs->copy($origin, $processedUrl, $fileName, $this->outputProgress, $package->getTransportOptions()); + break; + } catch (TransportException $e) { + // if we got an http response with a proper code, then requesting again will probably not help, abort + if ((0 !== $e->getCode() && !in_array($e->getCode(), array(500, 502, 503, 504))) || !$retries) { + throw $e; + } + $this->io->writeError(''); + $this->io->writeError(' Download failed, retrying...', true, IOInterface::VERBOSE); + usleep(500000); + } + } + + if (!$this->outputProgress) { + $this->io->writeError(' (100%)', false); + } + + if ($this->cache) { + $this->lastCacheWrites[$package->getName()] = $cacheKey; + $this->cache->copyFrom($cacheKey, $fileName); + } + } + + if (!file_exists($fileName)) { + throw new \UnexpectedValueException($url.' could not be saved to '.$fileName.', make sure the' + .' directory is writable and you have internet connectivity'); + } + + if ($checksum && hash_file('sha1', $fileName) !== $checksum) { + throw new \UnexpectedValueException('The checksum verification of the file failed (downloaded from '.$url.')'); + } + } catch (\Exception $e) { + // clean up + $this->filesystem->removeDirectory($path); + $this->clearLastCacheWrite($package); + throw $e; + } + + return $fileName; + } + + /** + * {@inheritDoc} + */ + public function setOutputProgress($outputProgress) + { + $this->outputProgress = $outputProgress; + + return $this; + } + + protected function clearLastCacheWrite(PackageInterface $package) + { + if ($this->cache && isset($this->lastCacheWrites[$package->getName()])) { + $this->cache->remove($this->lastCacheWrites[$package->getName()]); + unset($this->lastCacheWrites[$package->getName()]); + } + } + + /** + * {@inheritDoc} + */ + public function update(PackageInterface $initial, PackageInterface $target, $path) + { + $name = $target->getName(); + $from = $initial->getFullPrettyVersion(); + $to = $target->getFullPrettyVersion(); + + $actionName = VersionParser::isUpgrade($initial->getVersion(), $target->getVersion()) ? 'Updating' : 'Downgrading'; + $this->io->writeError(" - " . $actionName . " " . $name . " (" . $from . " => " . $to . "): ", false); + + $this->remove($initial, $path, false); + $this->download($target, $path, false); + + $this->io->writeError(''); + } + + /** + * {@inheritDoc} + */ + public function remove(PackageInterface $package, $path, $output = true) + { + if ($output) { + $this->io->writeError(" - Removing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); + } + if (!$this->filesystem->removeDirectory($path)) { + throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); + } + } + + /** + * Gets file name for specific package + * + * @param PackageInterface $package package instance + * @param string $path download path + * @return string file name + */ + protected function getFileName(PackageInterface $package, $path) + { + return $path.'/'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_BASENAME); + } + + /** + * Process the download url + * + * @param PackageInterface $package package the url is coming from + * @param string $url download url + * @throws \RuntimeException If any problem with the url + * @return string url + */ + protected function processUrl(PackageInterface $package, $url) + { + if (!extension_loaded('openssl') && 0 === strpos($url, 'https:')) { + throw new \RuntimeException('You must enable the openssl extension to download files via https'); + } + + if ($package->getDistReference()) { + $url = UrlUtil::updateDistReference($this->config, $url, $package->getDistReference()); + } + + return $url; + } + + private function getCacheKey(PackageInterface $package, $processedUrl) + { + // we use the complete download url here to avoid conflicting entries + // from different packages, which would potentially allow a given package + // in a third party repo to pre-populate the cache for the same package in + // packagist for example. + $cacheKey = sha1($processedUrl); + + return $package->getName().'/'.$cacheKey.'.'.$package->getDistType(); + } + + /** + * {@inheritDoc} + * @throws \RuntimeException + */ + public function getLocalChanges(PackageInterface $package, $targetDir) + { + $prevIO = $this->io; + $prevProgress = $this->outputProgress; + + $this->io = new NullIO; + $this->io->loadConfiguration($this->config); + $this->outputProgress = false; + $e = null; + + try { + $this->download($package, $targetDir.'_compare', false); + + $comparer = new Comparer(); + $comparer->setSource($targetDir.'_compare'); + $comparer->setUpdate($targetDir); + $comparer->doCompare(); + $output = $comparer->getChanged(true, true); + $this->filesystem->removeDirectory($targetDir.'_compare'); + } catch (\Exception $e) { + } + + $this->io = $prevIO; + $this->outputProgress = $prevProgress; + + if ($e) { + throw $e; + } + + return trim($output); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php b/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php new file mode 100644 index 0000000..891ab5e --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php @@ -0,0 +1,26 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +/** + * Exception thrown when issues exist on local filesystem + * + * @author Javier Spagnoletti + */ +class FilesystemException extends \Exception +{ + public function __construct($message = '', $code = 0, \Exception $previous = null) + { + parent::__construct("Filesystem exception: \n".$message, $code, $previous); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php b/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php new file mode 100644 index 0000000..135e973 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php @@ -0,0 +1,116 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; +use Composer\Util\ProcessExecutor; + +/** + * @author BohwaZ + */ +class FossilDownloader extends VcsDownloader +{ + /** + * {@inheritDoc} + */ + public function doDownload(PackageInterface $package, $path, $url) + { + // Ensure we are allowed to use this URL by config + $this->config->prohibitUrlByConfig($url, $this->io); + + $url = ProcessExecutor::escape($url); + $ref = ProcessExecutor::escape($package->getSourceReference()); + $repoFile = $path . '.fossil'; + $this->io->writeError("Cloning ".$package->getSourceReference()); + $command = sprintf('fossil clone %s %s', $url, ProcessExecutor::escape($repoFile)); + if (0 !== $this->process->execute($command, $ignoredOutput)) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + $command = sprintf('fossil open %s --nested', ProcessExecutor::escape($repoFile)); + if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + $command = sprintf('fossil update %s', $ref); + if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + } + + /** + * {@inheritDoc} + */ + public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) + { + // Ensure we are allowed to use this URL by config + $this->config->prohibitUrlByConfig($url, $this->io); + + $url = ProcessExecutor::escape($url); + $ref = ProcessExecutor::escape($target->getSourceReference()); + $this->io->writeError(" Updating to ".$target->getSourceReference()); + + if (!$this->hasMetadataRepository($path)) { + throw new \RuntimeException('The .fslckout file is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); + } + + $command = sprintf('fossil pull && fossil up %s', $ref); + if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + } + + /** + * {@inheritDoc} + */ + public function getLocalChanges(PackageInterface $package, $path) + { + if (!$this->hasMetadataRepository($path)) { + return null; + } + + $this->process->execute('fossil changes', $output, realpath($path)); + + return trim($output) ?: null; + } + + /** + * {@inheritDoc} + */ + protected function getCommitLogs($fromReference, $toReference, $path) + { + $command = sprintf('fossil timeline -t ci -W 0 -n 0 before %s', ProcessExecutor::escape($toReference)); + + if (0 !== $this->process->execute($command, $output, realpath($path))) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + + $log = ''; + $match = '/\d\d:\d\d:\d\d\s+\[' . $toReference . '\]/'; + + foreach ($this->process->splitLines($output) as $line) { + if (preg_match($match, $line)) { + break; + } + $log .= $line; + } + + return $log; + } + + /** + * {@inheritDoc} + */ + protected function hasMetadataRepository($path) + { + return is_file($path . '/.fslckout') || is_file($path . '/_FOSSIL_'); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php b/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php new file mode 100644 index 0000000..edeaa76 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php @@ -0,0 +1,528 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Config; +use Composer\IO\IOInterface; +use Composer\Package\PackageInterface; +use Composer\Util\Filesystem; +use Composer\Util\Git as GitUtil; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; +use Composer\Cache; + +/** + * @author Jordi Boggiano + */ +class GitDownloader extends VcsDownloader implements DvcsDownloaderInterface +{ + private $hasStashedChanges = false; + private $hasDiscardedChanges = false; + private $gitUtil; + + public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, Filesystem $fs = null) + { + parent::__construct($io, $config, $process, $fs); + $this->gitUtil = new GitUtil($this->io, $this->config, $this->process, $this->filesystem); + } + + /** + * {@inheritDoc} + */ + public function doDownload(PackageInterface $package, $path, $url) + { + GitUtil::cleanEnv(); + $path = $this->normalizePath($path); + $cachePath = $this->config->get('cache-vcs-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $url).'/'; + $ref = $package->getSourceReference(); + $flag = Platform::isWindows() ? '/D ' : ''; + + // --dissociate option is only available since git 2.3.0-rc0 + $gitVersion = $this->gitUtil->getVersion(); + $msg = "Cloning ".$this->getShortHash($ref); + + $command = 'git clone --no-checkout %url% %path% && cd '.$flag.'%path% && git remote add composer %url% && git fetch composer && git remote set-url origin %sanitizedUrl% && git remote set-url composer %sanitizedUrl%'; + if ($gitVersion && version_compare($gitVersion, '2.3.0-rc0', '>=') && Cache::isUsable($cachePath)) { + $this->io->writeError('', true, IOInterface::DEBUG); + $this->io->writeError(sprintf(' Cloning to cache at %s', ProcessExecutor::escape($cachePath)), true, IOInterface::DEBUG); + try { + if (!$this->gitUtil->fetchRefOrSyncMirror($url, $cachePath, $ref)) { + $this->io->writeError('Failed to update '.$url.' in cache, package installation for '.$package->getPrettyName().' might fail.'); + } + if (is_dir($cachePath)) { + $command = + 'git clone --no-checkout %cachePath% %path% --dissociate --reference %cachePath% ' + . '&& cd '.$flag.'%path% ' + . '&& git remote set-url origin %sanitizedUrl% && git remote add composer %sanitizedUrl%'; + $msg = "Cloning ".$this->getShortHash($ref).' from cache'; + } + } catch (\RuntimeException $e) { + if (0 === strpos(get_class($e), 'PHPUnit')) { + throw $e; + } + } + } + $this->io->writeError($msg); + + $commandCallable = function ($url) use ($path, $command, $cachePath) { + return str_replace( + array('%url%', '%path%', '%cachePath%', '%sanitizedUrl%'), + array( + ProcessExecutor::escape($url), + ProcessExecutor::escape($path), + ProcessExecutor::escape($cachePath), + ProcessExecutor::escape(preg_replace('{://([^@]+?):(.+?)@}', '://', $url)), + ), + $command + ); + }; + + $this->gitUtil->runCommand($commandCallable, $url, $path, true); + if ($url !== $package->getSourceUrl()) { + $this->updateOriginUrl($path, $package->getSourceUrl()); + } else { + $this->setPushUrl($path, $url); + } + + if ($newRef = $this->updateToCommit($path, $ref, $package->getPrettyVersion(), $package->getReleaseDate())) { + if ($package->getDistReference() === $package->getSourceReference()) { + $package->setDistReference($newRef); + } + $package->setSourceReference($newRef); + } + } + + /** + * {@inheritDoc} + */ + public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) + { + GitUtil::cleanEnv(); + if (!$this->hasMetadataRepository($path)) { + throw new \RuntimeException('The .git directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); + } + + $updateOriginUrl = false; + if ( + 0 === $this->process->execute('git remote -v', $output, $path) + && preg_match('{^origin\s+(?P\S+)}m', $output, $originMatch) + && preg_match('{^composer\s+(?P\S+)}m', $output, $composerMatch) + ) { + if ($originMatch['url'] === $composerMatch['url'] && $composerMatch['url'] !== $target->getSourceUrl()) { + $updateOriginUrl = true; + } + } + + $ref = $target->getSourceReference(); + $this->io->writeError(" Checking out ".$this->getShortHash($ref)); + $command = '(git remote set-url composer %s && git rev-parse --quiet --verify %s || (git fetch composer && git fetch --tags composer)) && git remote set-url composer %s'; + + $commandCallable = function ($url) use ($command, $ref) { + return sprintf( + $command, + ProcessExecutor::escape($url), + ProcessExecutor::escape($ref.'^{commit}'), + ProcessExecutor::escape(preg_replace('{://([^@]+?):(.+?)@}', '://', $url)) + ); + }; + + $this->gitUtil->runCommand($commandCallable, $url, $path); + if ($newRef = $this->updateToCommit($path, $ref, $target->getPrettyVersion(), $target->getReleaseDate())) { + if ($target->getDistReference() === $target->getSourceReference()) { + $target->setDistReference($newRef); + } + $target->setSourceReference($newRef); + } + + if ($updateOriginUrl) { + $this->updateOriginUrl($path, $target->getSourceUrl()); + } + } + + /** + * {@inheritDoc} + */ + public function getLocalChanges(PackageInterface $package, $path) + { + GitUtil::cleanEnv(); + if (!$this->hasMetadataRepository($path)) { + return; + } + + $command = 'git status --porcelain --untracked-files=no'; + if (0 !== $this->process->execute($command, $output, $path)) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + + return trim($output) ?: null; + } + + public function getUnpushedChanges(PackageInterface $package, $path) + { + GitUtil::cleanEnv(); + $path = $this->normalizePath($path); + if (!$this->hasMetadataRepository($path)) { + return; + } + + $command = 'git show-ref --head -d'; + if (0 !== $this->process->execute($command, $output, $path)) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + + $refs = trim($output); + if (!preg_match('{^([a-f0-9]+) HEAD$}mi', $refs, $match)) { + // could not match the HEAD for some reason + return; + } + + $headRef = $match[1]; + if (!preg_match_all('{^'.$headRef.' refs/heads/(.+)$}mi', $refs, $matches)) { + // not on a branch, we are either on a not-modified tag or some sort of detached head, so skip this + return; + } + + // use the first match as branch name for now + $branch = $matches[1][0]; + $unpushedChanges = null; + + // do two passes, as if we find anything we want to fetch and then re-try + for ($i = 0; $i <= 1; $i++) { + // try to find the a matching branch name in the composer remote + foreach ($matches[1] as $candidate) { + if (preg_match('{^[a-f0-9]+ refs/remotes/((?:composer|origin)/'.preg_quote($candidate).')$}mi', $refs, $match)) { + $branch = $candidate; + $remoteBranch = $match[1]; + break; + } + } + + // if it doesn't exist, then we assume it is an unpushed branch + // this is bad as we have no reference point to do a diff so we just bail listing + // the branch as being unpushed + if (!isset($remoteBranch)) { + $unpushedChanges = 'Branch ' . $branch . ' could not be found on the origin remote and appears to be unpushed'; + } else { + $command = sprintf('git diff --name-status %s...%s --', $remoteBranch, $branch); + if (0 !== $this->process->execute($command, $output, $path)) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + + $unpushedChanges = trim($output) ?: null; + } + + // first pass and we found unpushed changes, fetch from both remotes to make sure we have up to date + // remotes and then try again as outdated remotes can sometimes cause false-positives + if ($unpushedChanges && $i === 0) { + $this->process->execute('git fetch composer && git fetch origin', $output, $path); + } + + // abort after first pass if we didn't find anything + if (!$unpushedChanges) { + break; + } + } + + return $unpushedChanges; + } + + /** + * {@inheritDoc} + */ + protected function cleanChanges(PackageInterface $package, $path, $update) + { + GitUtil::cleanEnv(); + $path = $this->normalizePath($path); + + $unpushed = $this->getUnpushedChanges($package, $path); + if ($unpushed && ($this->io->isInteractive() || $this->config->get('discard-changes') !== true)) { + throw new \RuntimeException('Source directory ' . $path . ' has unpushed changes on the current branch: '."\n".$unpushed); + } + + if (!$changes = $this->getLocalChanges($package, $path)) { + return; + } + + if (!$this->io->isInteractive()) { + $discardChanges = $this->config->get('discard-changes'); + if (true === $discardChanges) { + return $this->discardChanges($path); + } + if ('stash' === $discardChanges) { + if (!$update) { + return parent::cleanChanges($package, $path, $update); + } + + return $this->stashChanges($path); + } + + return parent::cleanChanges($package, $path, $update); + } + + $changes = array_map(function ($elem) { + return ' '.$elem; + }, preg_split('{\s*\r?\n\s*}', $changes)); + $this->io->writeError(' The package has modified files:'); + $this->io->writeError(array_slice($changes, 0, 10)); + if (count($changes) > 10) { + $this->io->writeError(' ' . (count($changes) - 10) . ' more files modified, choose "v" to view the full list'); + } + + while (true) { + switch ($this->io->ask(' Discard changes [y,n,v,d,'.($update ? 's,' : '').'?]? ', '?')) { + case 'y': + $this->discardChanges($path); + break 2; + + case 's': + if (!$update) { + goto help; + } + + $this->stashChanges($path); + break 2; + + case 'n': + throw new \RuntimeException('Update aborted'); + + case 'v': + $this->io->writeError($changes); + break; + + case 'd': + $this->viewDiff($path); + break; + + case '?': + default: + help: + $this->io->writeError(array( + ' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), + ' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', + ' v - view modified files', + ' d - view local modifications (diff)', + )); + if ($update) { + $this->io->writeError(' s - stash changes and try to reapply them after the update'); + } + $this->io->writeError(' ? - print help'); + break; + } + } + } + + /** + * {@inheritDoc} + */ + protected function reapplyChanges($path) + { + $path = $this->normalizePath($path); + if ($this->hasStashedChanges) { + $this->hasStashedChanges = false; + $this->io->writeError(' Re-applying stashed changes'); + if (0 !== $this->process->execute('git stash pop', $output, $path)) { + throw new \RuntimeException("Failed to apply stashed changes:\n\n".$this->process->getErrorOutput()); + } + } + + $this->hasDiscardedChanges = false; + } + + /** + * Updates the given path to the given commit ref + * + * @param string $path + * @param string $reference + * @param string $branch + * @param \DateTime $date + * @throws \RuntimeException + * @return null|string if a string is returned, it is the commit reference that was checked out if the original could not be found + */ + protected function updateToCommit($path, $reference, $branch, $date) + { + $force = $this->hasDiscardedChanges || $this->hasStashedChanges ? '-f ' : ''; + + // This uses the "--" sequence to separate branch from file parameters. + // + // Otherwise git tries the branch name as well as file name. + // If the non-existent branch is actually the name of a file, the file + // is checked out. + $template = 'git checkout '.$force.'%s -- && git reset --hard %1$s --'; + $branch = preg_replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $branch); + + $branches = null; + if (0 === $this->process->execute('git branch -r', $output, $path)) { + $branches = $output; + } + + // check whether non-commitish are branches or tags, and fetch branches with the remote name + $gitRef = $reference; + if (!preg_match('{^[a-f0-9]{40}$}', $reference) + && $branches + && preg_match('{^\s+composer/'.preg_quote($reference).'$}m', $branches) + ) { + $command = sprintf('git checkout '.$force.'-B %s %s -- && git reset --hard %2$s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$reference)); + if (0 === $this->process->execute($command, $output, $path)) { + return; + } + } + + // try to checkout branch by name and then reset it so it's on the proper branch name + if (preg_match('{^[a-f0-9]{40}$}', $reference)) { + // add 'v' in front of the branch if it was stripped when generating the pretty name + if (!preg_match('{^\s+composer/'.preg_quote($branch).'$}m', $branches) && preg_match('{^\s+composer/v'.preg_quote($branch).'$}m', $branches)) { + $branch = 'v' . $branch; + } + + $command = sprintf('git checkout %s --', ProcessExecutor::escape($branch)); + $fallbackCommand = sprintf('git checkout '.$force.'-B %s %s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$branch)); + if (0 === $this->process->execute($command, $output, $path) + || 0 === $this->process->execute($fallbackCommand, $output, $path) + ) { + $command = sprintf('git reset --hard %s --', ProcessExecutor::escape($reference)); + if (0 === $this->process->execute($command, $output, $path)) { + return; + } + } + } + + $command = sprintf($template, ProcessExecutor::escape($gitRef)); + if (0 === $this->process->execute($command, $output, $path)) { + return; + } + + // reference was not found (prints "fatal: reference is not a tree: $ref") + if (false !== strpos($this->process->getErrorOutput(), $reference)) { + $this->io->writeError(' '.$reference.' is gone (history was rewritten?)'); + } + + throw new \RuntimeException(GitUtil::sanitizeUrl('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput())); + } + + protected function updateOriginUrl($path, $url) + { + $this->process->execute(sprintf('git remote set-url origin %s', ProcessExecutor::escape($url)), $output, $path); + $this->setPushUrl($path, $url); + } + + protected function setPushUrl($path, $url) + { + // set push url for github projects + if (preg_match('{^(?:https?|git)://'.GitUtil::getGitHubDomainsRegex($this->config).'/([^/]+)/([^/]+?)(?:\.git)?$}', $url, $match)) { + $protocols = $this->config->get('github-protocols'); + $pushUrl = 'git@'.$match[1].':'.$match[2].'/'.$match[3].'.git'; + if (!in_array('ssh', $protocols, true)) { + $pushUrl = 'https://' . $match[1] . '/'.$match[2].'/'.$match[3].'.git'; + } + $cmd = sprintf('git remote set-url --push origin %s', ProcessExecutor::escape($pushUrl)); + $this->process->execute($cmd, $ignoredOutput, $path); + } + } + + /** + * {@inheritDoc} + */ + protected function getCommitLogs($fromReference, $toReference, $path) + { + $path = $this->normalizePath($path); + $command = sprintf('git log %s..%s --pretty=format:"%%h - %%an: %%s"', ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); + + if (0 !== $this->process->execute($command, $output, $path)) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + + return $output; + } + + /** + * @param string $path + * @throws \RuntimeException + */ + protected function discardChanges($path) + { + $path = $this->normalizePath($path); + if (0 !== $this->process->execute('git reset --hard', $output, $path)) { + throw new \RuntimeException("Could not reset changes\n\n:".$this->process->getErrorOutput()); + } + + $this->hasDiscardedChanges = true; + } + + /** + * @param string $path + * @throws \RuntimeException + */ + protected function stashChanges($path) + { + $path = $this->normalizePath($path); + if (0 !== $this->process->execute('git stash --include-untracked', $output, $path)) { + throw new \RuntimeException("Could not stash changes\n\n:".$this->process->getErrorOutput()); + } + + $this->hasStashedChanges = true; + } + + /** + * @param string $path + * @throws \RuntimeException + */ + protected function viewDiff($path) + { + $path = $this->normalizePath($path); + if (0 !== $this->process->execute('git diff HEAD', $output, $path)) { + throw new \RuntimeException("Could not view diff\n\n:".$this->process->getErrorOutput()); + } + + $this->io->writeError($output); + } + + protected function normalizePath($path) + { + if (Platform::isWindows() && strlen($path) > 0) { + $basePath = $path; + $removed = array(); + + while (!is_dir($basePath) && $basePath !== '\\') { + array_unshift($removed, basename($basePath)); + $basePath = dirname($basePath); + } + + if ($basePath === '\\') { + return $path; + } + + $path = rtrim(realpath($basePath) . '/' . implode('/', $removed), '/'); + } + + return $path; + } + + /** + * {@inheritDoc} + */ + protected function hasMetadataRepository($path) + { + $path = $this->normalizePath($path); + + return is_dir($path.'/.git'); + } + + protected function getShortHash($reference) + { + if (!$this->io->isVerbose() && preg_match('{^[0-9a-f]{40}$}', $reference)) { + return substr($reference, 0, 10); + } + + return $reference; + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php b/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php new file mode 100644 index 0000000..19e4a45 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php @@ -0,0 +1,84 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Config; +use Composer\Cache; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Package\PackageInterface; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; +use Composer\Util\RemoteFilesystem; +use Composer\IO\IOInterface; + +/** + * GZip archive downloader. + * + * @author Pavel Puchkin + */ +class GzipDownloader extends ArchiveDownloader +{ + protected $process; + + public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, ProcessExecutor $process = null, RemoteFilesystem $rfs = null) + { + $this->process = $process ?: new ProcessExecutor($io); + parent::__construct($io, $config, $eventDispatcher, $cache, $rfs); + } + + protected function extract($file, $path) + { + $targetFilepath = $path . DIRECTORY_SEPARATOR . basename(substr($file, 0, -3)); + + // Try to use gunzip on *nix + if (!Platform::isWindows()) { + $command = 'gzip -cd ' . ProcessExecutor::escape($file) . ' > ' . ProcessExecutor::escape($targetFilepath); + + if (0 === $this->process->execute($command, $ignoredOutput)) { + return; + } + + if (extension_loaded('zlib')) { + // Fallback to using the PHP extension. + $this->extractUsingExt($file, $targetFilepath); + + return; + } + + $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); + throw new \RuntimeException($processError); + } + + // Windows version of PHP has built-in support of gzip functions + $this->extractUsingExt($file, $targetFilepath); + } + + /** + * {@inheritdoc} + */ + protected function getFileName(PackageInterface $package, $path) + { + return $path.'/'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_BASENAME); + } + + private function extractUsingExt($file, $targetFilepath) + { + $archiveFile = gzopen($file, 'rb'); + $targetFile = fopen($targetFilepath, 'wb'); + while ($string = gzread($archiveFile, 4096)) { + fwrite($targetFile, $string, Platform::strlen($string)); + } + gzclose($archiveFile); + fclose($targetFile); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php b/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php new file mode 100644 index 0000000..2921cc4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php @@ -0,0 +1,100 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; +use Composer\Util\ProcessExecutor; +use Composer\Util\Hg as HgUtils; + +/** + * @author Per Bernhardt + */ +class HgDownloader extends VcsDownloader +{ + /** + * {@inheritDoc} + */ + public function doDownload(PackageInterface $package, $path, $url) + { + $hgUtils = new HgUtils($this->io, $this->config, $this->process); + + $cloneCommand = function ($url) use ($path) { + return sprintf('hg clone %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($path)); + }; + + $hgUtils->runCommand($cloneCommand, $url, $path); + + $ref = ProcessExecutor::escape($package->getSourceReference()); + $command = sprintf('hg up %s', $ref); + if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + } + + /** + * {@inheritDoc} + */ + public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) + { + $hgUtils = new HgUtils($this->io, $this->config, $this->process); + + $ref = $target->getSourceReference(); + $this->io->writeError(" Updating to ".$target->getSourceReference()); + + if (!$this->hasMetadataRepository($path)) { + throw new \RuntimeException('The .hg directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); + } + + $command = function ($url) use ($ref) { + return sprintf('hg pull %s && hg up %s', ProcessExecutor::escape($url), ProcessExecutor::escape($ref)); + }; + + $hgUtils->runCommand($command, $url, $path); + } + + /** + * {@inheritDoc} + */ + public function getLocalChanges(PackageInterface $package, $path) + { + if (!is_dir($path.'/.hg')) { + return null; + } + + $this->process->execute('hg st', $output, realpath($path)); + + return trim($output) ?: null; + } + + /** + * {@inheritDoc} + */ + protected function getCommitLogs($fromReference, $toReference, $path) + { + $command = sprintf('hg log -r %s:%s --style compact', ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); + + if (0 !== $this->process->execute($command, $output, realpath($path))) { + throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } + + return $output; + } + + /** + * {@inheritDoc} + */ + protected function hasMetadataRepository($path) + { + return is_dir($path . '/.hg'); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php b/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php new file mode 100644 index 0000000..5c4cbcf --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php @@ -0,0 +1,224 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\Archiver\ArchivableFilesFinder; +use Composer\Package\Dumper\ArrayDumper; +use Composer\Package\PackageInterface; +use Composer\Package\Version\VersionGuesser; +use Composer\Package\Version\VersionParser; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; +use Composer\Util\Filesystem as ComposerFilesystem; +use Symfony\Component\Filesystem\Exception\IOException; +use Symfony\Component\Filesystem\Filesystem; + +/** + * Download a package from a local path. + * + * @author Samuel Roze + * @author Johann Reinke + */ +class PathDownloader extends FileDownloader implements VcsCapableDownloaderInterface +{ + const STRATEGY_SYMLINK = 10; + const STRATEGY_MIRROR = 20; + + /** + * {@inheritdoc} + */ + public function download(PackageInterface $package, $path, $output = true) + { + $url = $package->getDistUrl(); + $realUrl = realpath($url); + if (false === $realUrl || !file_exists($realUrl) || !is_dir($realUrl)) { + throw new \RuntimeException(sprintf( + 'Source path "%s" is not found for package %s', + $url, + $package->getName() + )); + } + + if (realpath($path) === $realUrl) { + if ($output) { + $this->io->writeError(sprintf( + ' - Installing %s (%s): Source already present', + $package->getName(), + $package->getFullPrettyVersion() + )); + } + + return; + } + + if (strpos(realpath($path) . DIRECTORY_SEPARATOR, $realUrl . DIRECTORY_SEPARATOR) === 0) { + // IMPORTANT NOTICE: If you wish to change this, don't. You are wasting your time and ours. + // + // Please see https://github.com/composer/composer/pull/5974 and https://github.com/composer/composer/pull/6174 + // for previous attempts that were shut down because they did not work well enough or introduced too many risks. + throw new \RuntimeException(sprintf( + 'Package %s cannot install to "%s" inside its source at "%s"', + $package->getName(), + realpath($path), + $realUrl + )); + } + + // Get the transport options with default values + $transportOptions = $package->getTransportOptions() + array('symlink' => null); + + // When symlink transport option is null, both symlink and mirror are allowed + $currentStrategy = self::STRATEGY_SYMLINK; + $allowedStrategies = array(self::STRATEGY_SYMLINK, self::STRATEGY_MIRROR); + + $mirrorPathRepos = getenv('COMPOSER_MIRROR_PATH_REPOS'); + if ($mirrorPathRepos) { + $currentStrategy = self::STRATEGY_MIRROR; + } + + if (true === $transportOptions['symlink']) { + $currentStrategy = self::STRATEGY_SYMLINK; + $allowedStrategies = array(self::STRATEGY_SYMLINK); + } elseif (false === $transportOptions['symlink']) { + $currentStrategy = self::STRATEGY_MIRROR; + $allowedStrategies = array(self::STRATEGY_MIRROR); + } + + // Check we can use junctions safely if we are on Windows + if (Platform::isWindows() && self::STRATEGY_SYMLINK === $currentStrategy && !$this->safeJunctions()) { + $currentStrategy = self::STRATEGY_MIRROR; + $allowedStrategies = array(self::STRATEGY_MIRROR); + } + + $fileSystem = new Filesystem(); + $this->filesystem->removeDirectory($path); + + if ($output) { + $this->io->writeError(sprintf( + ' - Installing %s (%s): ', + $package->getName(), + $package->getFullPrettyVersion() + ), false); + } + + $isFallback = false; + if (self::STRATEGY_SYMLINK == $currentStrategy) { + try { + if (Platform::isWindows()) { + // Implement symlinks as NTFS junctions on Windows + $this->io->writeError(sprintf('Junctioning from %s', $url), false); + $this->filesystem->junction($realUrl, $path); + } else { + $absolutePath = $path; + if (!$this->filesystem->isAbsolutePath($absolutePath)) { + $absolutePath = getcwd() . DIRECTORY_SEPARATOR . $path; + } + $shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl); + $path = rtrim($path, "/"); + $this->io->writeError(sprintf('Symlinking from %s', $url), false); + $fileSystem->symlink($shortestPath, $path); + } + } catch (IOException $e) { + if (in_array(self::STRATEGY_MIRROR, $allowedStrategies)) { + $this->io->writeError(''); + $this->io->writeError(' Symlink failed, fallback to use mirroring!'); + $currentStrategy = self::STRATEGY_MIRROR; + $isFallback = true; + } else { + throw new \RuntimeException(sprintf('Symlink from "%s" to "%s" failed!', $realUrl, $path)); + } + } + } + + // Fallback if symlink failed or if symlink is not allowed for the package + if (self::STRATEGY_MIRROR == $currentStrategy) { + $fs = new ComposerFilesystem(); + $realUrl = $fs->normalizePath($realUrl); + + $this->io->writeError(sprintf('%sMirroring from %s', $isFallback ? ' ' : '', $url), false); + $iterator = new ArchivableFilesFinder($realUrl, array()); + $fileSystem->mirror($realUrl, $path, $iterator); + } + + $this->io->writeError(''); + } + + /** + * {@inheritDoc} + */ + public function remove(PackageInterface $package, $path, $output = true) + { + $realUrl = realpath($package->getDistUrl()); + + if (realpath($path) === $realUrl) { + if ($output) { + $this->io->writeError(" - Removing " . $package->getName() . " (" . $package->getFullPrettyVersion() . "), source is still present in $path"); + } + + return; + } + + /** + * For junctions don't blindly rely on Filesystem::removeDirectory as it may be overzealous. If a process + * inadvertently locks the file the removal will fail, but it would fall back to recursive delete which + * is disastrous within a junction. So in that case we have no other real choice but to fail hard. + */ + if (Platform::isWindows() && $this->filesystem->isJunction($path)) { + if ($output) { + $this->io->writeError(" - Removing junction for " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); + } + if (!$this->filesystem->removeJunction($path)) { + $this->io->writeError(" Could not remove junction at " . $path . " - is another process locking it?"); + throw new \RuntimeException('Could not reliably remove junction for package ' . $package->getName()); + } + } else { + parent::remove($package, $path, $output); + } + } + + /** + * {@inheritDoc} + */ + public function getVcsReference(PackageInterface $package, $path) + { + $parser = new VersionParser; + $guesser = new VersionGuesser($this->config, new ProcessExecutor($this->io), $parser); + $dumper = new ArrayDumper; + + $packageConfig = $dumper->dump($package); + if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { + return $packageVersion['commit']; + } + } + + /** + * Returns true if junctions can be created and safely used on Windows + * + * A PHP bug makes junction detection fragile, leading to possible data loss + * when removing a package. See https://bugs.php.net/bug.php?id=77552 + * + * For safety we require a minimum version of Windows 7, so we can call the + * system rmdir which will preserve target content if given a junction. + * + * The PHP bug was fixed in 7.2.16 and 7.3.3 (requires at least Windows 7). + * + * @return bool + */ + private function safeJunctions() + { + // We need to call mklink, and rmdir on Windows 7 (version 6.1) + return function_exists('proc_open') && + (PHP_WINDOWS_VERSION_MAJOR > 6 || + (PHP_WINDOWS_VERSION_MAJOR === 6 && PHP_WINDOWS_VERSION_MINOR >= 1)); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php b/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php new file mode 100644 index 0000000..5eaf3ed --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php @@ -0,0 +1,266 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Util\Filesystem; + +/** + * Extractor for pear packages. + * + * Composer cannot rely on tar files structure when place it inside package target dir. Correct source files + * disposition must be read from package.xml + * This extract pear package source files to target dir. + * + * @author Alexey Prilipko + */ +class PearPackageExtractor +{ + private static $rolesWithoutPackageNamePrefix = array('php', 'script', 'www'); + /** @var Filesystem */ + private $filesystem; + private $file; + + public function __construct($file) + { + if (!is_file($file)) { + throw new \UnexpectedValueException('PEAR package file is not found at '.$file); + } + + $this->filesystem = new Filesystem(); + $this->file = $file; + } + + /** + * Installs PEAR source files according to package.xml definitions and removes extracted files + * + * @param string $target target install location. all source installation would be performed relative to target path. + * @param array $roles types of files to install. default role for PEAR source files are 'php'. + * @param array $vars used for replacement tasks + * @throws \RuntimeException + * @throws \UnexpectedValueException + */ + public function extractTo($target, array $roles = array('php' => '/', 'script' => '/bin'), $vars = array()) + { + $extractionPath = $target.'/tarball'; + + try { + $archive = new \PharData($this->file); + $archive->extractTo($extractionPath, null, true); + + if (!is_file($this->combine($extractionPath, '/package.xml'))) { + throw new \RuntimeException('Invalid PEAR package. It must contain package.xml file.'); + } + + $fileCopyActions = $this->buildCopyActions($extractionPath, $roles, $vars); + $this->copyFiles($fileCopyActions, $extractionPath, $target, $roles, $vars); + $this->filesystem->removeDirectory($extractionPath); + } catch (\Exception $exception) { + throw new \UnexpectedValueException(sprintf('Failed to extract PEAR package %s to %s. Reason: %s', $this->file, $target, $exception->getMessage()), 0, $exception); + } + } + + /** + * Perform copy actions on files + * + * @param array $files array of copy actions ('from', 'to') with relative paths + * @param string $source path to source dir. + * @param string $target path to destination dir + * @param array $roles array [role => roleRoot] relative root for files having that role + * @param array $vars list of values can be used for replacement tasks + */ + private function copyFiles($files, $source, $target, $roles, $vars) + { + foreach ($files as $file) { + $from = $this->combine($source, $file['from']); + $to = $this->combine($target, $roles[$file['role']]); + $to = $this->combine($to, $file['to']); + $tasks = $file['tasks']; + $this->copyFile($from, $to, $tasks, $vars); + } + } + + private function copyFile($from, $to, $tasks, $vars) + { + if (!is_file($from)) { + throw new \RuntimeException('Invalid PEAR package. package.xml defines file that is not located inside tarball.'); + } + + $this->filesystem->ensureDirectoryExists(dirname($to)); + + if (0 == count($tasks)) { + $copied = copy($from, $to); + } else { + $content = file_get_contents($from); + $replacements = array(); + foreach ($tasks as $task) { + $pattern = $task['from']; + $varName = $task['to']; + if (isset($vars[$varName])) { + if ($varName === 'php_bin' && false === strpos($to, '.bat')) { + $replacements[$pattern] = preg_replace('{\.bat$}', '', $vars[$varName]); + } else { + $replacements[$pattern] = $vars[$varName]; + } + } + } + $content = strtr($content, $replacements); + + $copied = file_put_contents($to, $content); + } + + if (false === $copied) { + throw new \RuntimeException(sprintf('Failed to copy %s to %s', $from, $to)); + } + } + + /** + * Builds list of copy and list of remove actions that would transform extracted PEAR tarball into installed package. + * + * @param string $source string path to extracted files + * @param array $roles array [role => roleRoot] relative root for files having that role + * @param array $vars list of values can be used for replacement tasks + * @throws \RuntimeException + * @return array array of 'source' => 'target', where source is location of file in the tarball (relative to source + * path, and target is destination of file (also relative to $source path) + */ + private function buildCopyActions($source, array $roles, $vars) + { + /** @var \SimpleXmlElement $package */ + $package = simplexml_load_string(file_get_contents($this->combine($source, 'package.xml'))); + if (false === $package) { + throw new \RuntimeException('Package definition file is not valid.'); + } + + $packageSchemaVersion = $package['version']; + if ('1.0' == $packageSchemaVersion) { + $children = $package->release->filelist->children(); + $packageName = (string) $package->name; + $packageVersion = (string) $package->release->version; + $sourceDir = $packageName . '-' . $packageVersion; + $result = $this->buildSourceList10($children, $roles, $sourceDir, '', null, $packageName); + } elseif ('2.0' == $packageSchemaVersion || '2.1' == $packageSchemaVersion) { + $children = $package->contents->children(); + $packageName = (string) $package->name; + $packageVersion = (string) $package->version->release; + $sourceDir = $packageName . '-' . $packageVersion; + $result = $this->buildSourceList20($children, $roles, $sourceDir, '', null, $packageName); + + $namespaces = $package->getNamespaces(); + $package->registerXPathNamespace('ns', $namespaces['']); + $releaseNodes = $package->xpath('ns:phprelease'); + $this->applyRelease($result, $releaseNodes, $vars); + } else { + throw new \RuntimeException('Unsupported schema version of package definition file.'); + } + + return $result; + } + + private function applyRelease(&$actions, $releaseNodes, $vars) + { + foreach ($releaseNodes as $releaseNode) { + $requiredOs = $releaseNode->installconditions && $releaseNode->installconditions->os && $releaseNode->installconditions->os->name ? (string) $releaseNode->installconditions->os->name : ''; + if ($requiredOs && $vars['os'] != $requiredOs) { + continue; + } + + if ($releaseNode->filelist) { + foreach ($releaseNode->filelist->children() as $action) { + if ('install' == $action->getName()) { + $name = (string) $action['name']; + $as = (string) $action['as']; + if (isset($actions[$name])) { + $actions[$name]['to'] = $as; + } + } elseif ('ignore' == $action->getName()) { + $name = (string) $action['name']; + unset($actions[$name]); + } else { + // unknown action + } + } + } + break; + } + } + + private function buildSourceList10($children, $targetRoles, $source, $target, $role, $packageName) + { + $result = array(); + + // enumerating files + foreach ($children as $child) { + /** @var $child \SimpleXMLElement */ + if ($child->getName() == 'dir') { + $dirSource = $this->combine($source, (string) $child['name']); + $dirTarget = $child['baseinstalldir'] ?: $target; + $dirRole = $child['role'] ?: $role; + $dirFiles = $this->buildSourceList10($child->children(), $targetRoles, $dirSource, $dirTarget, $dirRole, $packageName); + $result = array_merge($result, $dirFiles); + } elseif ($child->getName() == 'file') { + $fileRole = (string) $child['role'] ?: $role; + if (isset($targetRoles[$fileRole])) { + $fileName = (string) ($child['name'] ?: $child[0]); // $child[0] means text content + $fileSource = $this->combine($source, $fileName); + $fileTarget = $this->combine((string) $child['baseinstalldir'] ?: $target, $fileName); + if (!in_array($fileRole, self::$rolesWithoutPackageNamePrefix)) { + $fileTarget = $packageName . '/' . $fileTarget; + } + $result[(string) $child['name']] = array('from' => $fileSource, 'to' => $fileTarget, 'role' => $fileRole, 'tasks' => array()); + } + } + } + + return $result; + } + + private function buildSourceList20($children, $targetRoles, $source, $target, $role, $packageName) + { + $result = array(); + + // enumerating files + foreach ($children as $child) { + /** @var $child \SimpleXMLElement */ + if ('dir' == $child->getName()) { + $dirSource = $this->combine($source, $child['name']); + $dirTarget = $child['baseinstalldir'] ?: $target; + $dirRole = $child['role'] ?: $role; + $dirFiles = $this->buildSourceList20($child->children(), $targetRoles, $dirSource, $dirTarget, $dirRole, $packageName); + $result = array_merge($result, $dirFiles); + } elseif ('file' == $child->getName()) { + $fileRole = (string) $child['role'] ?: $role; + if (isset($targetRoles[$fileRole])) { + $fileSource = $this->combine($source, (string) $child['name']); + $fileTarget = $this->combine((string) ($child['baseinstalldir'] ?: $target), (string) $child['name']); + $fileTasks = array(); + foreach ($child->children('http://pear.php.net/dtd/tasks-1.0') as $taskNode) { + if ('replace' == $taskNode->getName()) { + $fileTasks[] = array('from' => (string) $taskNode->attributes()->from, 'to' => (string) $taskNode->attributes()->to); + } + } + if (!in_array($fileRole, self::$rolesWithoutPackageNamePrefix)) { + $fileTarget = $packageName . '/' . $fileTarget; + } + $result[(string) $child['name']] = array('from' => $fileSource, 'to' => $fileTarget, 'role' => $fileRole, 'tasks' => $fileTasks); + } + } + } + + return $result; + } + + private function combine($left, $right) + { + return rtrim($left, '/') . '/' . ltrim($right, '/'); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php b/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php new file mode 100644 index 0000000..92091e2 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php @@ -0,0 +1,112 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; +use Composer\Repository\VcsRepository; +use Composer\Util\Perforce; + +/** + * @author Matt Whittom + */ +class PerforceDownloader extends VcsDownloader +{ + /** @var Perforce */ + protected $perforce; + + /** + * {@inheritDoc} + */ + public function doDownload(PackageInterface $package, $path, $url) + { + $ref = $package->getSourceReference(); + $label = $this->getLabelFromSourceReference($ref); + + $this->io->writeError('Cloning ' . $ref); + $this->initPerforce($package, $path, $url); + $this->perforce->setStream($ref); + $this->perforce->p4Login(); + $this->perforce->writeP4ClientSpec(); + $this->perforce->connectClient(); + $this->perforce->syncCodeBase($label); + $this->perforce->cleanupClientSpec(); + } + + private function getLabelFromSourceReference($ref) + { + $pos = strpos($ref, '@'); + if (false !== $pos) { + return substr($ref, $pos + 1); + } + + return null; + } + + public function initPerforce(PackageInterface $package, $path, $url) + { + if (!empty($this->perforce)) { + $this->perforce->initializePath($path); + + return; + } + + $repository = $package->getRepository(); + $repoConfig = null; + if ($repository instanceof VcsRepository) { + $repoConfig = $this->getRepoConfig($repository); + } + $this->perforce = Perforce::create($repoConfig, $url, $path, $this->process, $this->io); + } + + private function getRepoConfig(VcsRepository $repository) + { + return $repository->getRepoConfig(); + } + + /** + * {@inheritDoc} + */ + public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) + { + $this->doDownload($target, $path, $url); + } + + /** + * {@inheritDoc} + */ + public function getLocalChanges(PackageInterface $package, $path) + { + $this->io->writeError('Perforce driver does not check for local changes before overriding', true); + } + + /** + * {@inheritDoc} + */ + protected function getCommitLogs($fromReference, $toReference, $path) + { + return $this->perforce->getCommitLogs($fromReference, $toReference); + } + + public function setPerforce($perforce) + { + $this->perforce = $perforce; + } + + /** + * {@inheritDoc} + */ + protected function hasMetadataRepository($path) + { + return true; + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php b/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php new file mode 100644 index 0000000..13fec24 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php @@ -0,0 +1,36 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +/** + * Downloader for phar files + * + * @author Kirill chEbba Chebunin + */ +class PharDownloader extends ArchiveDownloader +{ + /** + * {@inheritDoc} + */ + protected function extract($file, $path) + { + // Can throw an UnexpectedValueException + $archive = new \Phar($file); + $archive->extractTo($path, null, true); + /* TODO: handle openssl signed phars + * https://github.com/composer/composer/pull/33#issuecomment-2250768 + * https://github.com/koto/phar-util + * http://blog.kotowicz.net/2010/08/hardening-php-how-to-securely-include.html + */ + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php b/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php new file mode 100644 index 0000000..40cd098 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php @@ -0,0 +1,91 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Config; +use Composer\Cache; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Util\IniHelper; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; +use Composer\Util\RemoteFilesystem; +use Composer\IO\IOInterface; +use RarArchive; + +/** + * RAR archive downloader. + * + * Based on previous work by Jordi Boggiano ({@see ZipDownloader}). + * + * @author Derrick Nelson + */ +class RarDownloader extends ArchiveDownloader +{ + protected $process; + + public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, ProcessExecutor $process = null, RemoteFilesystem $rfs = null) + { + $this->process = $process ?: new ProcessExecutor($io); + parent::__construct($io, $config, $eventDispatcher, $cache, $rfs); + } + + protected function extract($file, $path) + { + $processError = null; + + // Try to use unrar on *nix + if (!Platform::isWindows()) { + $command = 'unrar x ' . ProcessExecutor::escape($file) . ' ' . ProcessExecutor::escape($path) . ' >/dev/null && chmod -R u+w ' . ProcessExecutor::escape($path); + + if (0 === $this->process->execute($command, $ignoredOutput)) { + return; + } + + $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); + } + + if (!class_exists('RarArchive')) { + // php.ini path is added to the error message to help users find the correct file + $iniMessage = IniHelper::getMessage(); + + $error = "Could not decompress the archive, enable the PHP rar extension or install unrar.\n" + . $iniMessage . "\n" . $processError; + + if (!Platform::isWindows()) { + $error = "Could not decompress the archive, enable the PHP rar extension.\n" . $iniMessage; + } + + throw new \RuntimeException($error); + } + + $rarArchive = RarArchive::open($file); + + if (false === $rarArchive) { + throw new \UnexpectedValueException('Could not open RAR archive: ' . $file); + } + + $entries = $rarArchive->getEntries(); + + if (false === $entries) { + throw new \RuntimeException('Could not retrieve RAR archive entries'); + } + + foreach ($entries as $entry) { + if (false === $entry->extract($path)) { + throw new \RuntimeException('Could not extract entry'); + } + } + + $rarArchive->close(); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php b/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php new file mode 100644 index 0000000..e239581 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php @@ -0,0 +1,225 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; +use Composer\Util\Svn as SvnUtil; +use Composer\Repository\VcsRepository; +use Composer\Util\ProcessExecutor; + +/** + * @author Ben Bieker + * @author Till Klampaeckel + */ +class SvnDownloader extends VcsDownloader +{ + protected $cacheCredentials = true; + + /** + * {@inheritDoc} + */ + public function doDownload(PackageInterface $package, $path, $url) + { + SvnUtil::cleanEnv(); + $ref = $package->getSourceReference(); + + $repo = $package->getRepository(); + if ($repo instanceof VcsRepository) { + $repoConfig = $repo->getRepoConfig(); + if (array_key_exists('svn-cache-credentials', $repoConfig)) { + $this->cacheCredentials = (bool) $repoConfig['svn-cache-credentials']; + } + } + + $this->io->writeError(" Checking out ".$package->getSourceReference()); + $this->execute($url, "svn co", sprintf("%s/%s", $url, $ref), null, $path); + } + + /** + * {@inheritDoc} + */ + public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) + { + SvnUtil::cleanEnv(); + $ref = $target->getSourceReference(); + + if (!$this->hasMetadataRepository($path)) { + throw new \RuntimeException('The .svn directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); + } + + $util = new SvnUtil($url, $this->io, $this->config); + $flags = ""; + if (version_compare($util->binaryVersion(), '1.7.0', '>=')) { + $flags .= ' --ignore-ancestry'; + } + + $this->io->writeError(" Checking out " . $ref); + $this->execute($url, "svn switch" . $flags, sprintf("%s/%s", $url, $ref), $path); + } + + /** + * {@inheritDoc} + */ + public function getLocalChanges(PackageInterface $package, $path) + { + if (!$this->hasMetadataRepository($path)) { + return null; + } + + $this->process->execute('svn status --ignore-externals', $output, $path); + + return preg_match('{^ *[^X ] +}m', $output) ? $output : null; + } + + /** + * Execute an SVN command and try to fix up the process with credentials + * if necessary. + * + * @param string $baseUrl Base URL of the repository + * @param string $command SVN command to run + * @param string $url SVN url + * @param string $cwd Working directory + * @param string $path Target for a checkout + * @throws \RuntimeException + * @return string + */ + protected function execute($baseUrl, $command, $url, $cwd = null, $path = null) + { + $util = new SvnUtil($baseUrl, $this->io, $this->config); + $util->setCacheCredentials($this->cacheCredentials); + try { + return $util->execute($command, $url, $cwd, $path, $this->io->isVerbose()); + } catch (\RuntimeException $e) { + throw new \RuntimeException( + 'Package could not be downloaded, '.$e->getMessage() + ); + } + } + + /** + * {@inheritDoc} + */ + protected function cleanChanges(PackageInterface $package, $path, $update) + { + if (!$changes = $this->getLocalChanges($package, $path)) { + return; + } + + if (!$this->io->isInteractive()) { + if (true === $this->config->get('discard-changes')) { + return $this->discardChanges($path); + } + + return parent::cleanChanges($package, $path, $update); + } + + $changes = array_map(function ($elem) { + return ' '.$elem; + }, preg_split('{\s*\r?\n\s*}', $changes)); + $countChanges = count($changes); + $this->io->writeError(sprintf(' The package has modified file%s:', $countChanges === 1 ? '' : 's')); + $this->io->writeError(array_slice($changes, 0, 10)); + if ($countChanges > 10) { + $remaingChanges = $countChanges - 10; + $this->io->writeError( + sprintf( + ' '.$remaingChanges.' more file%s modified, choose "v" to view the full list', + $remaingChanges === 1 ? '' : 's' + ) + ); + } + + while (true) { + switch ($this->io->ask(' Discard changes [y,n,v,?]? ', '?')) { + case 'y': + $this->discardChanges($path); + break 2; + + case 'n': + throw new \RuntimeException('Update aborted'); + + case 'v': + $this->io->writeError($changes); + break; + + case '?': + default: + $this->io->writeError(array( + ' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), + ' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', + ' v - view modified files', + ' ? - print help', + )); + break; + } + } + } + + /** + * {@inheritDoc} + */ + protected function getCommitLogs($fromReference, $toReference, $path) + { + if (preg_match('{.*@(\d+)$}', $fromReference) && preg_match('{.*@(\d+)$}', $toReference)) { + // retrieve the svn base url from the checkout folder + $command = sprintf('svn info --non-interactive --xml %s', ProcessExecutor::escape($path)); + if (0 !== $this->process->execute($command, $output, $path)) { + throw new \RuntimeException( + 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput() + ); + } + + $urlPattern = '#(.*)#'; + if (preg_match($urlPattern, $output, $matches)) { + $baseUrl = $matches[1]; + } else { + throw new \RuntimeException( + 'Unable to determine svn url for path '. $path + ); + } + + // strip paths from references and only keep the actual revision + $fromRevision = preg_replace('{.*@(\d+)$}', '$1', $fromReference); + $toRevision = preg_replace('{.*@(\d+)$}', '$1', $toReference); + + $command = sprintf('svn log -r%s:%s --incremental', ProcessExecutor::escape($fromRevision), ProcessExecutor::escape($toRevision)); + + $util = new SvnUtil($baseUrl, $this->io, $this->config); + $util->setCacheCredentials($this->cacheCredentials); + try { + return $util->executeLocal($command, $path, null, $this->io->isVerbose()); + } catch (\RuntimeException $e) { + throw new \RuntimeException( + 'Failed to execute ' . $command . "\n\n".$e->getMessage() + ); + } + } + + return "Could not retrieve changes between $fromReference and $toReference due to missing revision information"; + } + + protected function discardChanges($path) + { + if (0 !== $this->process->execute('svn revert -R .', $output, $path)) { + throw new \RuntimeException("Could not reset changes\n\n:".$this->process->getErrorOutput()); + } + } + + /** + * {@inheritDoc} + */ + protected function hasMetadataRepository($path) + { + return is_dir($path.'/.svn'); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php b/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php new file mode 100644 index 0000000..34c43da --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php @@ -0,0 +1,31 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +/** + * Downloader for tar files: tar, tar.gz or tar.bz2 + * + * @author Kirill chEbba Chebunin + */ +class TarDownloader extends ArchiveDownloader +{ + /** + * {@inheritDoc} + */ + protected function extract($file, $path) + { + // Can throw an UnexpectedValueException + $archive = new \PharData($file); + $archive->extractTo($path, null, true); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/TransportException.php b/vendor/composer/composer/src/Composer/Downloader/TransportException.php new file mode 100644 index 0000000..c682df0 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/TransportException.php @@ -0,0 +1,53 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +/** + * @author Jordi Boggiano + */ +class TransportException extends \RuntimeException +{ + protected $headers; + protected $response; + protected $statusCode; + + public function setHeaders($headers) + { + $this->headers = $headers; + } + + public function getHeaders() + { + return $this->headers; + } + + public function setResponse($response) + { + $this->response = $response; + } + + public function getResponse() + { + return $this->response; + } + + public function setStatusCode($statusCode) + { + $this->statusCode = $statusCode; + } + + public function getStatusCode() + { + return $this->statusCode; + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php b/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php new file mode 100644 index 0000000..39203d5 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php @@ -0,0 +1,32 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; + +/** + * VCS Capable Downloader interface. + * + * @author Steve Buzonas + */ +interface VcsCapableDownloaderInterface +{ + /** + * Gets the VCS Reference for the package at path + * + * @param PackageInterface $package package directory + * @param string $path package directory + * @return string|null reference or null + */ + public function getVcsReference(PackageInterface $package, $path); +} diff --git a/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php b/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php new file mode 100644 index 0000000..aa66605 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php @@ -0,0 +1,293 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Config; +use Composer\Package\Dumper\ArrayDumper; +use Composer\Package\PackageInterface; +use Composer\Package\Version\VersionGuesser; +use Composer\Package\Version\VersionParser; +use Composer\Util\ProcessExecutor; +use Composer\IO\IOInterface; +use Composer\Util\Filesystem; + +/** + * @author Jordi Boggiano + */ +abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterface, VcsCapableDownloaderInterface +{ + /** @var IOInterface */ + protected $io; + /** @var Config */ + protected $config; + /** @var ProcessExecutor */ + protected $process; + /** @var Filesystem */ + protected $filesystem; + + public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, Filesystem $fs = null) + { + $this->io = $io; + $this->config = $config; + $this->process = $process ?: new ProcessExecutor($io); + $this->filesystem = $fs ?: new Filesystem($this->process); + } + + /** + * {@inheritDoc} + */ + public function getInstallationSource() + { + return 'source'; + } + + /** + * {@inheritDoc} + */ + public function download(PackageInterface $package, $path) + { + if (!$package->getSourceReference()) { + throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information'); + } + + $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . "): ", false); + $this->filesystem->emptyDirectory($path); + + $urls = $package->getSourceUrls(); + while ($url = array_shift($urls)) { + try { + if (Filesystem::isLocalPath($url)) { + // realpath() below will not understand + // url that starts with "file://" + $needle = 'file://'; + $isFileProtocol = false; + if (0 === strpos($url, $needle)) { + $url = substr($url, strlen($needle)); + $isFileProtocol = true; + } + + // realpath() below will not understand %20 spaces etc. + if (false !== strpos($url, '%')) { + $url = rawurldecode($url); + } + + $url = realpath($url); + + if ($isFileProtocol) { + $url = $needle . $url; + } + } + $this->doDownload($package, $path, $url); + break; + } catch (\Exception $e) { + // rethrow phpunit exceptions to avoid hard to debug bug failures + if ($e instanceof \PHPUnit_Framework_Exception) { + throw $e; + } + if ($this->io->isDebug()) { + $this->io->writeError('Failed: ['.get_class($e).'] '.$e->getMessage()); + } elseif (count($urls)) { + $this->io->writeError(' Failed, trying the next URL'); + } + if (!count($urls)) { + throw $e; + } + } + } + } + + /** + * {@inheritDoc} + */ + public function update(PackageInterface $initial, PackageInterface $target, $path) + { + if (!$target->getSourceReference()) { + throw new \InvalidArgumentException('Package '.$target->getPrettyName().' is missing reference information'); + } + + $name = $target->getName(); + if ($initial->getPrettyVersion() == $target->getPrettyVersion()) { + if ($target->getSourceType() === 'svn') { + $from = $initial->getSourceReference(); + $to = $target->getSourceReference(); + } else { + $from = substr($initial->getSourceReference(), 0, 7); + $to = substr($target->getSourceReference(), 0, 7); + } + $name .= ' '.$initial->getPrettyVersion(); + } else { + $from = $initial->getFullPrettyVersion(); + $to = $target->getFullPrettyVersion(); + } + + $actionName = VersionParser::isUpgrade($initial->getVersion(), $target->getVersion()) ? 'Updating' : 'Downgrading'; + $this->io->writeError(" - " . $actionName . " " . $name . " (" . $from . " => " . $to . "): ", false); + + $this->cleanChanges($initial, $path, true); + $urls = $target->getSourceUrls(); + + $exception = null; + while ($url = array_shift($urls)) { + try { + if (Filesystem::isLocalPath($url)) { + $url = realpath($url); + } + $this->doUpdate($initial, $target, $path, $url); + + $exception = null; + break; + } catch (\Exception $exception) { + // rethrow phpunit exceptions to avoid hard to debug bug failures + if ($exception instanceof \PHPUnit_Framework_Exception) { + throw $exception; + } + if ($this->io->isDebug()) { + $this->io->writeError('Failed: ['.get_class($exception).'] '.$exception->getMessage()); + } elseif (count($urls)) { + $this->io->writeError(' Failed, trying the next URL'); + } + } + } + + $this->reapplyChanges($path); + + // print the commit logs if in verbose mode and VCS metadata is present + // because in case of missing metadata code would trigger another exception + if (!$exception && $this->io->isVerbose() && $this->hasMetadataRepository($path)) { + $message = 'Pulling in changes:'; + $logs = $this->getCommitLogs($initial->getSourceReference(), $target->getSourceReference(), $path); + + if (!trim($logs)) { + $message = 'Rolling back changes:'; + $logs = $this->getCommitLogs($target->getSourceReference(), $initial->getSourceReference(), $path); + } + + if (trim($logs)) { + $logs = implode("\n", array_map(function ($line) { + return ' ' . $line; + }, explode("\n", $logs))); + + // escape angle brackets for proper output in the console + $logs = str_replace('<', '\<', $logs); + + $this->io->writeError(' '.$message); + $this->io->writeError($logs); + } + } + + if (!$urls && $exception) { + throw $exception; + } + } + + /** + * {@inheritDoc} + */ + public function remove(PackageInterface $package, $path) + { + $this->io->writeError(" - Removing " . $package->getName() . " (" . $package->getPrettyVersion() . ")"); + $this->cleanChanges($package, $path, false); + if (!$this->filesystem->removeDirectory($path)) { + throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); + } + } + + /** + * Download progress information is not available for all VCS downloaders. + * {@inheritDoc} + */ + public function setOutputProgress($outputProgress) + { + return $this; + } + + /** + * {@inheritDoc} + */ + public function getVcsReference(PackageInterface $package, $path) + { + $parser = new VersionParser; + $guesser = new VersionGuesser($this->config, $this->process, $parser); + $dumper = new ArrayDumper; + + $packageConfig = $dumper->dump($package); + if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { + return $packageVersion['commit']; + } + } + + /** + * Prompt the user to check if changes should be stashed/removed or the operation aborted + * + * @param PackageInterface $package + * @param string $path + * @param bool $update if true (update) the changes can be stashed and reapplied after an update, + * if false (remove) the changes should be assumed to be lost if the operation is not aborted + * @throws \RuntimeException in case the operation must be aborted + */ + protected function cleanChanges(PackageInterface $package, $path, $update) + { + // the default implementation just fails if there are any changes, override in child classes to provide stash-ability + if (null !== $this->getLocalChanges($package, $path)) { + throw new \RuntimeException('Source directory ' . $path . ' has uncommitted changes.'); + } + } + + /** + * Guarantee that no changes have been made to the local copy + * + * @param string $path + * @throws \RuntimeException in case the operation must be aborted or the patch does not apply cleanly + */ + protected function reapplyChanges($path) + { + } + + /** + * Downloads specific package into specific folder. + * + * @param PackageInterface $package package instance + * @param string $path download path + * @param string $url package url + */ + abstract protected function doDownload(PackageInterface $package, $path, $url); + + /** + * Updates specific package in specific folder from initial to target version. + * + * @param PackageInterface $initial initial package + * @param PackageInterface $target updated package + * @param string $path download path + * @param string $url package url + */ + abstract protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url); + + /** + * Fetches the commit logs between two commits + * + * @param string $fromReference the source reference + * @param string $toReference the target reference + * @param string $path the package path + * @return string + */ + abstract protected function getCommitLogs($fromReference, $toReference, $path); + + /** + * Checks if VCS metadata repository has been initialized + * repository example: .git|.svn|.hg + * + * @param string $path + * @return bool + */ + abstract protected function hasMetadataRepository($path); +} diff --git a/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php b/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php new file mode 100644 index 0000000..4a9b854 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php @@ -0,0 +1,60 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Config; +use Composer\Cache; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Package\PackageInterface; +use Composer\Util\ProcessExecutor; +use Composer\Util\RemoteFilesystem; +use Composer\IO\IOInterface; + +/** + * Xz archive downloader. + * + * @author Pavel Puchkin + * @author Pierre Rudloff + */ +class XzDownloader extends ArchiveDownloader +{ + protected $process; + + public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, ProcessExecutor $process = null, RemoteFilesystem $rfs = null) + { + $this->process = $process ?: new ProcessExecutor($io); + + parent::__construct($io, $config, $eventDispatcher, $cache, $rfs); + } + + protected function extract($file, $path) + { + $command = 'tar -xJf ' . ProcessExecutor::escape($file) . ' -C ' . ProcessExecutor::escape($path); + + if (0 === $this->process->execute($command, $ignoredOutput)) { + return; + } + + $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); + + throw new \RuntimeException($processError); + } + + /** + * {@inheritdoc} + */ + protected function getFileName(PackageInterface $package, $path) + { + return $path.'/'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_BASENAME); + } +} diff --git a/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php b/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php new file mode 100644 index 0000000..6534db3 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php @@ -0,0 +1,230 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Config; +use Composer\Cache; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Package\PackageInterface; +use Composer\Util\IniHelper; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; +use Composer\Util\RemoteFilesystem; +use Composer\IO\IOInterface; +use Symfony\Component\Process\ExecutableFinder; +use ZipArchive; + +/** + * @author Jordi Boggiano + */ +class ZipDownloader extends ArchiveDownloader +{ + protected static $hasSystemUnzip; + private static $hasZipArchive; + private static $isWindows; + + protected $process; + private $zipArchiveObject; + + public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, ProcessExecutor $process = null, RemoteFilesystem $rfs = null) + { + $this->process = $process ?: new ProcessExecutor($io); + parent::__construct($io, $config, $eventDispatcher, $cache, $rfs); + } + + /** + * {@inheritDoc} + */ + public function download(PackageInterface $package, $path, $output = true) + { + if (null === self::$hasSystemUnzip) { + $finder = new ExecutableFinder; + self::$hasSystemUnzip = (bool) $finder->find('unzip'); + } + + if (null === self::$hasZipArchive) { + self::$hasZipArchive = class_exists('ZipArchive'); + } + + if (!self::$hasZipArchive && !self::$hasSystemUnzip) { + // php.ini path is added to the error message to help users find the correct file + $iniMessage = IniHelper::getMessage(); + $error = "The zip extension and unzip command are both missing, skipping.\n" . $iniMessage; + + throw new \RuntimeException($error); + } + + if (null === self::$isWindows) { + self::$isWindows = Platform::isWindows(); + + if (!self::$isWindows && !self::$hasSystemUnzip) { + $this->io->writeError("As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension."); + $this->io->writeError("This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost."); + $this->io->writeError("Installing 'unzip' may remediate them."); + } + } + + return parent::download($package, $path, $output); + } + + /** + * extract $file to $path with "unzip" command + * + * @param string $file File to extract + * @param string $path Path where to extract file + * @param bool $isLastChance If true it is called as a fallback and should throw an exception + * @return bool Success status + */ + protected function extractWithSystemUnzip($file, $path, $isLastChance) + { + if (!self::$hasZipArchive) { + // Force Exception throwing if the Other alternative is not available + $isLastChance = true; + } + + if (!self::$hasSystemUnzip && !$isLastChance) { + // This was call as the favorite extract way, but is not available + // We switch to the alternative + return $this->extractWithZipArchive($file, $path, true); + } + + $processError = null; + // When called after a ZipArchive failed, perhaps there is some files to overwrite + $overwrite = $isLastChance ? '-o' : ''; + + $command = 'unzip -qq '.$overwrite.' '.ProcessExecutor::escape($file).' -d '.ProcessExecutor::escape($path); + + try { + if (0 === $this->process->execute($command, $ignoredOutput)) { + return true; + } + + $processError = new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); + } catch (\Exception $e) { + $processError = $e; + } + + if ($isLastChance) { + throw $processError; + } + + $this->io->writeError(' '.$processError->getMessage()); + $this->io->writeError(' The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)'); + $this->io->writeError(' Unzip with unzip command failed, falling back to ZipArchive class'); + + return $this->extractWithZipArchive($file, $path, true); + } + + /** + * extract $file to $path with ZipArchive + * + * @param string $file File to extract + * @param string $path Path where to extract file + * @param bool $isLastChance If true it is called as a fallback and should throw an exception + * @return bool Success status + */ + protected function extractWithZipArchive($file, $path, $isLastChance) + { + if (!self::$hasSystemUnzip) { + // Force Exception throwing if the Other alternative is not available + $isLastChance = true; + } + + if (!self::$hasZipArchive && !$isLastChance) { + // This was call as the favorite extract way, but is not available + // We switch to the alternative + return $this->extractWithSystemUnzip($file, $path, true); + } + + $processError = null; + $zipArchive = $this->zipArchiveObject ?: new ZipArchive(); + + try { + if (true === ($retval = $zipArchive->open($file))) { + $extractResult = $zipArchive->extractTo($path); + + if (true === $extractResult) { + $zipArchive->close(); + + return true; + } + + $processError = new \RuntimeException(rtrim("There was an error extracting the ZIP file, it is either corrupted or using an invalid format.\n")); + } else { + $processError = new \UnexpectedValueException(rtrim($this->getErrorMessage($retval, $file)."\n"), $retval); + } + } catch (\ErrorException $e) { + $processError = new \RuntimeException('The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems): '.$e->getMessage(), 0, $e); + } catch (\Exception $e) { + $processError = $e; + } + + if ($isLastChance) { + throw $processError; + } + + $this->io->writeError(' '.$processError->getMessage()); + $this->io->writeError(' Unzip with ZipArchive class failed, falling back to unzip command'); + + return $this->extractWithSystemUnzip($file, $path, true); + } + + /** + * extract $file to $path + * + * @param string $file File to extract + * @param string $path Path where to extract file + */ + public function extract($file, $path) + { + // Each extract calls its alternative if not available or fails + if (self::$isWindows) { + $this->extractWithZipArchive($file, $path, false); + } else { + $this->extractWithSystemUnzip($file, $path, false); + } + } + + /** + * Give a meaningful error message to the user. + * + * @param int $retval + * @param string $file + * @return string + */ + protected function getErrorMessage($retval, $file) + { + switch ($retval) { + case ZipArchive::ER_EXISTS: + return sprintf("File '%s' already exists.", $file); + case ZipArchive::ER_INCONS: + return sprintf("Zip archive '%s' is inconsistent.", $file); + case ZipArchive::ER_INVAL: + return sprintf("Invalid argument (%s)", $file); + case ZipArchive::ER_MEMORY: + return sprintf("Malloc failure (%s)", $file); + case ZipArchive::ER_NOENT: + return sprintf("No such zip file: '%s'", $file); + case ZipArchive::ER_NOZIP: + return sprintf("'%s' is not a zip archive.", $file); + case ZipArchive::ER_OPEN: + return sprintf("Can't open zip file: %s", $file); + case ZipArchive::ER_READ: + return sprintf("Zip read error (%s)", $file); + case ZipArchive::ER_SEEK: + return sprintf("Zip seek error (%s)", $file); + default: + return sprintf("'%s' is not a valid zip archive, got error code: %s", $file, $retval); + } + } +} diff --git a/vendor/composer/composer/src/Composer/EventDispatcher/Event.php b/vendor/composer/composer/src/Composer/EventDispatcher/Event.php new file mode 100644 index 0000000..2091f6b --- /dev/null +++ b/vendor/composer/composer/src/Composer/EventDispatcher/Event.php @@ -0,0 +1,103 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\EventDispatcher; + +/** + * The base event class + * + * @author Nils Adermann + */ +class Event +{ + /** + * @var string This event's name + */ + protected $name; + + /** + * @var array Arguments passed by the user, these will be forwarded to CLI script handlers + */ + protected $args; + + /** + * @var array Flags usable in PHP script handlers + */ + protected $flags; + + /** + * @var bool Whether the event should not be passed to more listeners + */ + private $propagationStopped = false; + + /** + * Constructor. + * + * @param string $name The event name + * @param array $args Arguments passed by the user + * @param array $flags Optional flags to pass data not as argument + */ + public function __construct($name, array $args = array(), array $flags = array()) + { + $this->name = $name; + $this->args = $args; + $this->flags = $flags; + } + + /** + * Returns the event's name. + * + * @return string The event name + */ + public function getName() + { + return $this->name; + } + + /** + * Returns the event's arguments. + * + * @return array The event arguments + */ + public function getArguments() + { + return $this->args; + } + + /** + * Returns the event's flags. + * + * @return array The event flags + */ + public function getFlags() + { + return $this->flags; + } + + /** + * Checks if stopPropagation has been called + * + * @return bool Whether propagation has been stopped + */ + public function isPropagationStopped() + { + return $this->propagationStopped; + } + + /** + * Prevents the event from being passed to further listeners + */ + public function stopPropagation() + { + $this->propagationStopped = true; + } +} diff --git a/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php b/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php new file mode 100644 index 0000000..d5bdb4c --- /dev/null +++ b/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php @@ -0,0 +1,544 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\EventDispatcher; + +use Composer\DependencyResolver\PolicyInterface; +use Composer\DependencyResolver\Pool; +use Composer\DependencyResolver\Request; +use Composer\Installer\InstallerEvent; +use Composer\IO\IOInterface; +use Composer\Composer; +use Composer\DependencyResolver\Operation\OperationInterface; +use Composer\Repository\CompositeRepository; +use Composer\Script; +use Composer\Installer\PackageEvent; +use Composer\Installer\BinaryInstaller; +use Composer\Util\ProcessExecutor; +use Composer\Script\Event as ScriptEvent; +use Symfony\Component\Process\PhpExecutableFinder; + +/** + * The Event Dispatcher. + * + * Example in command: + * $dispatcher = new EventDispatcher($this->getComposer(), $this->getApplication()->getIO()); + * // ... + * $dispatcher->dispatch(ScriptEvents::POST_INSTALL_CMD); + * // ... + * + * @author François Pluchino + * @author Jordi Boggiano + * @author Nils Adermann + */ +class EventDispatcher +{ + protected $composer; + protected $io; + protected $loader; + protected $process; + protected $listeners; + private $eventStack; + + /** + * Constructor. + * + * @param Composer $composer The composer instance + * @param IOInterface $io The IOInterface instance + * @param ProcessExecutor $process + */ + public function __construct(Composer $composer, IOInterface $io, ProcessExecutor $process = null) + { + $this->composer = $composer; + $this->io = $io; + $this->process = $process ?: new ProcessExecutor($io); + $this->eventStack = array(); + } + + /** + * Dispatch an event + * + * @param string $eventName An event name + * @param Event $event + * @return int return code of the executed script if any, for php scripts a false return + * value is changed to 1, anything else to 0 + */ + public function dispatch($eventName, Event $event = null) + { + if (null === $event) { + $event = new Event($eventName); + } + + return $this->doDispatch($event); + } + + /** + * Dispatch a script event. + * + * @param string $eventName The constant in ScriptEvents + * @param bool $devMode + * @param array $additionalArgs Arguments passed by the user + * @param array $flags Optional flags to pass data not as argument + * @return int return code of the executed script if any, for php scripts a false return + * value is changed to 1, anything else to 0 + */ + public function dispatchScript($eventName, $devMode = false, $additionalArgs = array(), $flags = array()) + { + return $this->doDispatch(new Script\Event($eventName, $this->composer, $this->io, $devMode, $additionalArgs, $flags)); + } + + /** + * Dispatch a package event. + * + * @param string $eventName The constant in PackageEvents + * @param bool $devMode Whether or not we are in dev mode + * @param PolicyInterface $policy The policy + * @param Pool $pool The pool + * @param CompositeRepository $installedRepo The installed repository + * @param Request $request The request + * @param array $operations The list of operations + * @param OperationInterface $operation The package being installed/updated/removed + * + * @return int return code of the executed script if any, for php scripts a false return + * value is changed to 1, anything else to 0 + */ + public function dispatchPackageEvent($eventName, $devMode, PolicyInterface $policy, Pool $pool, CompositeRepository $installedRepo, Request $request, array $operations, OperationInterface $operation) + { + return $this->doDispatch(new PackageEvent($eventName, $this->composer, $this->io, $devMode, $policy, $pool, $installedRepo, $request, $operations, $operation)); + } + + /** + * Dispatch a installer event. + * + * @param string $eventName The constant in InstallerEvents + * @param bool $devMode Whether or not we are in dev mode + * @param PolicyInterface $policy The policy + * @param Pool $pool The pool + * @param CompositeRepository $installedRepo The installed repository + * @param Request $request The request + * @param array $operations The list of operations + * + * @return int return code of the executed script if any, for php scripts a false return + * value is changed to 1, anything else to 0 + */ + public function dispatchInstallerEvent($eventName, $devMode, PolicyInterface $policy, Pool $pool, CompositeRepository $installedRepo, Request $request, array $operations = array()) + { + return $this->doDispatch(new InstallerEvent($eventName, $this->composer, $this->io, $devMode, $policy, $pool, $installedRepo, $request, $operations)); + } + + /** + * Triggers the listeners of an event. + * + * @param Event $event The event object to pass to the event handlers/listeners. + * @throws \RuntimeException|\Exception + * @return int return code of the executed script if any, for php scripts a false return + * value is changed to 1, anything else to 0 + */ + protected function doDispatch(Event $event) + { + $pathStr = 'PATH'; + if (!isset($_SERVER[$pathStr]) && isset($_SERVER['Path'])) { + $pathStr = 'Path'; + } + + // add the bin dir to the PATH to make local binaries of deps usable in scripts + $binDir = $this->composer->getConfig()->get('bin-dir'); + if (is_dir($binDir)) { + $binDir = realpath($binDir); + if (isset($_SERVER[$pathStr]) && !preg_match('{(^|'.PATH_SEPARATOR.')'.preg_quote($binDir).'($|'.PATH_SEPARATOR.')}', $_SERVER[$pathStr])) { + $_SERVER[$pathStr] = $binDir.PATH_SEPARATOR.getenv($pathStr); + putenv($pathStr.'='.$_SERVER[$pathStr]); + } + } + + $listeners = $this->getListeners($event); + + $this->pushEvent($event); + + $return = 0; + foreach ($listeners as $callable) { + if (!is_string($callable)) { + if (!is_callable($callable)) { + $className = is_object($callable[0]) ? get_class($callable[0]) : $callable[0]; + + throw new \RuntimeException('Subscriber '.$className.'::'.$callable[1].' for event '.$event->getName().' is not callable, make sure the function is defined and public'); + } + $event = $this->checkListenerExpectedEvent($callable, $event); + $return = false === call_user_func($callable, $event) ? 1 : 0; + } elseif ($this->isComposerScript($callable)) { + $this->io->writeError(sprintf('> %s: %s', $event->getName(), $callable), true, IOInterface::VERBOSE); + + $script = explode(' ', substr($callable, 1)); + $scriptName = $script[0]; + unset($script[0]); + + $args = array_merge($script, $event->getArguments()); + $flags = $event->getFlags(); + if (substr($callable, 0, 10) === '@composer ') { + $exec = $this->getPhpExecCommand() . ' ' . ProcessExecutor::escape(getenv('COMPOSER_BINARY')) . substr($callable, 9); + if (0 !== ($exitCode = $this->process->execute($exec))) { + $this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); + + throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); + } + } else { + if (!$this->getListeners(new Event($scriptName))) { + $this->io->writeError(sprintf('You made a reference to a non-existent script %s', $callable), true, IOInterface::QUIET); + } + + try { + $scriptEvent = new Script\Event($scriptName, $event->getComposer(), $event->getIO(), $event->isDevMode(), $args, $flags); + $scriptEvent->setOriginatingEvent($event); + $return = $this->dispatch($scriptName, $scriptEvent); + } catch (ScriptExecutionException $e) { + $this->io->writeError(sprintf('Script %s was called via %s', $callable, $event->getName()), true, IOInterface::QUIET); + throw $e; + } + } + } elseif ($this->isPhpScript($callable)) { + $className = substr($callable, 0, strpos($callable, '::')); + $methodName = substr($callable, strpos($callable, '::') + 2); + + if (!class_exists($className)) { + $this->io->writeError('Class '.$className.' is not autoloadable, can not call '.$event->getName().' script', true, IOInterface::QUIET); + continue; + } + if (!is_callable($callable)) { + $this->io->writeError('Method '.$callable.' is not callable, can not call '.$event->getName().' script', true, IOInterface::QUIET); + continue; + } + + try { + $return = false === $this->executeEventPhpScript($className, $methodName, $event) ? 1 : 0; + } catch (\Exception $e) { + $message = "Script %s handling the %s event terminated with an exception"; + $this->io->writeError(''.sprintf($message, $callable, $event->getName()).'', true, IOInterface::QUIET); + throw $e; + } + } else { + $args = implode(' ', array_map(array('Composer\Util\ProcessExecutor', 'escape'), $event->getArguments())); + $exec = $callable . ($args === '' ? '' : ' '.$args); + if ($this->io->isVerbose()) { + $this->io->writeError(sprintf('> %s: %s', $event->getName(), $exec)); + } else { + $this->io->writeError(sprintf('> %s', $exec)); + } + + $possibleLocalBinaries = $this->composer->getPackage()->getBinaries(); + if ($possibleLocalBinaries) { + foreach ($possibleLocalBinaries as $localExec) { + if (preg_match('{\b'.preg_quote($callable).'$}', $localExec)) { + $caller = BinaryInstaller::determineBinaryCaller($localExec); + $exec = preg_replace('{^'.preg_quote($callable).'}', $caller . ' ' . $localExec, $exec); + break; + } + } + } + + if (substr($exec, 0, 5) === '@php ') { + $exec = $this->getPhpExecCommand() . ' ' . substr($exec, 5); + } else { + $finder = new PhpExecutableFinder(); + $phpPath = $finder->find(false); + if ($phpPath) { + putenv('PHP_BINARY=' . $phpPath); + } + } + + if (0 !== ($exitCode = $this->process->execute($exec))) { + $this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); + + throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); + } + } + + if ($event->isPropagationStopped()) { + break; + } + } + + $this->popEvent(); + + return $return; + } + + protected function getPhpExecCommand() + { + $finder = new PhpExecutableFinder(); + $phpPath = $finder->find(false); + if (!$phpPath) { + throw new \RuntimeException('Failed to locate PHP binary to execute '.$phpPath); + } + $phpArgs = $finder->findArguments(); + $phpArgs = $phpArgs ? ' ' . implode(' ', $phpArgs) : ''; + $allowUrlFOpenFlag = ' -d allow_url_fopen=' . ProcessExecutor::escape(ini_get('allow_url_fopen')); + $disableFunctionsFlag = ' -d disable_functions=' . ProcessExecutor::escape(ini_get('disable_functions')); + $memoryLimitFlag = ' -d memory_limit=' . ProcessExecutor::escape(ini_get('memory_limit')); + + return ProcessExecutor::escape($phpPath) . $phpArgs . $allowUrlFOpenFlag . $disableFunctionsFlag . $memoryLimitFlag; + } + + /** + * @param string $className + * @param string $methodName + * @param Event $event Event invoking the PHP callable + */ + protected function executeEventPhpScript($className, $methodName, Event $event) + { + $event = $this->checkListenerExpectedEvent(array($className, $methodName), $event); + + if ($this->io->isVerbose()) { + $this->io->writeError(sprintf('> %s: %s::%s', $event->getName(), $className, $methodName)); + } else { + $this->io->writeError(sprintf('> %s::%s', $className, $methodName)); + } + + return $className::$methodName($event); + } + + /** + * @param mixed $target + * @param Event $event + * @return Event + */ + protected function checkListenerExpectedEvent($target, Event $event) + { + if (in_array($event->getName(), array( + 'init', + 'command', + 'pre-file-download', + ), true)) { + return $event; + } + + try { + $reflected = new \ReflectionParameter($target, 0); + } catch (\Exception $e) { + return $event; + } + + $typehint = $reflected->getClass(); + + if (!$typehint instanceof \ReflectionClass) { + return $event; + } + + $expected = $typehint->getName(); + + // BC support + if (!$event instanceof $expected && $expected === 'Composer\Script\CommandEvent') { + trigger_error('The callback '.$this->serializeCallback($target).' declared at '.$reflected->getDeclaringFunction()->getFileName().' accepts a '.$expected.' but '.$event->getName().' events use a '.get_class($event).' instance. Please adjust your type hint accordingly, see https://getcomposer.org/doc/articles/scripts.md#event-classes', E_USER_DEPRECATED); + $event = new \Composer\Script\CommandEvent( + $event->getName(), + $event->getComposer(), + $event->getIO(), + $event->isDevMode(), + $event->getArguments() + ); + } + if (!$event instanceof $expected && $expected === 'Composer\Script\PackageEvent') { + trigger_error('The callback '.$this->serializeCallback($target).' declared at '.$reflected->getDeclaringFunction()->getFileName().' accepts a '.$expected.' but '.$event->getName().' events use a '.get_class($event).' instance. Please adjust your type hint accordingly, see https://getcomposer.org/doc/articles/scripts.md#event-classes', E_USER_DEPRECATED); + $event = new \Composer\Script\PackageEvent( + $event->getName(), + $event->getComposer(), + $event->getIO(), + $event->isDevMode(), + $event->getPolicy(), + $event->getPool(), + $event->getInstalledRepo(), + $event->getRequest(), + $event->getOperations(), + $event->getOperation() + ); + } + if (!$event instanceof $expected && $expected === 'Composer\Script\Event') { + trigger_error('The callback '.$this->serializeCallback($target).' declared at '.$reflected->getDeclaringFunction()->getFileName().' accepts a '.$expected.' but '.$event->getName().' events use a '.get_class($event).' instance. Please adjust your type hint accordingly, see https://getcomposer.org/doc/articles/scripts.md#event-classes', E_USER_DEPRECATED); + $event = new \Composer\Script\Event( + $event->getName(), + $event->getComposer(), + $event->getIO(), + $event->isDevMode(), + $event->getArguments(), + $event->getFlags() + ); + } + + return $event; + } + + private function serializeCallback($cb) + { + if (is_array($cb) && count($cb) === 2) { + if (is_object($cb[0])) { + $cb[0] = get_class($cb[0]); + } + if (is_string($cb[0]) && is_string($cb[1])) { + $cb = implode('::', $cb); + } + } + if (is_string($cb)) { + return $cb; + } + + return var_export($cb, true); + } + + /** + * Add a listener for a particular event + * + * @param string $eventName The event name - typically a constant + * @param callable $listener A callable expecting an event argument + * @param int $priority A higher value represents a higher priority + */ + public function addListener($eventName, $listener, $priority = 0) + { + $this->listeners[$eventName][$priority][] = $listener; + } + + /** + * Adds object methods as listeners for the events in getSubscribedEvents + * + * @see EventSubscriberInterface + * + * @param EventSubscriberInterface $subscriber + */ + public function addSubscriber(EventSubscriberInterface $subscriber) + { + foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { + if (is_string($params)) { + $this->addListener($eventName, array($subscriber, $params)); + } elseif (is_string($params[0])) { + $this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0); + } else { + foreach ($params as $listener) { + $this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0); + } + } + } + } + + /** + * Retrieves all listeners for a given event + * + * @param Event $event + * @return array All listeners: callables and scripts + */ + protected function getListeners(Event $event) + { + $scriptListeners = $this->getScriptListeners($event); + + if (!isset($this->listeners[$event->getName()][0])) { + $this->listeners[$event->getName()][0] = array(); + } + krsort($this->listeners[$event->getName()]); + + $listeners = $this->listeners; + $listeners[$event->getName()][0] = array_merge($listeners[$event->getName()][0], $scriptListeners); + + return call_user_func_array('array_merge', $listeners[$event->getName()]); + } + + /** + * Checks if an event has listeners registered + * + * @param Event $event + * @return bool + */ + public function hasEventListeners(Event $event) + { + $listeners = $this->getListeners($event); + + return count($listeners) > 0; + } + + /** + * Finds all listeners defined as scripts in the package + * + * @param Event $event Event object + * @return array Listeners + */ + protected function getScriptListeners(Event $event) + { + $package = $this->composer->getPackage(); + $scripts = $package->getScripts(); + + if (empty($scripts[$event->getName()])) { + return array(); + } + + if ($this->loader) { + $this->loader->unregister(); + } + + $generator = $this->composer->getAutoloadGenerator(); + if ($event instanceof ScriptEvent) { + $generator->setDevMode($event->isDevMode()); + } + + $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); + $packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $package, $packages); + $map = $generator->parseAutoloads($packageMap, $package); + $this->loader = $generator->createLoader($map); + $this->loader->register(); + + return $scripts[$event->getName()]; + } + + /** + * Checks if string given references a class path and method + * + * @param string $callable + * @return bool + */ + protected function isPhpScript($callable) + { + return false === strpos($callable, ' ') && false !== strpos($callable, '::'); + } + + /** + * Checks if string given references a composer run-script + * + * @param string $callable + * @return bool + */ + protected function isComposerScript($callable) + { + return '@' === substr($callable, 0, 1) && '@php ' !== substr($callable, 0, 5); + } + + /** + * Push an event to the stack of active event + * + * @param Event $event + * @throws \RuntimeException + * @return number + */ + protected function pushEvent(Event $event) + { + $eventName = $event->getName(); + if (in_array($eventName, $this->eventStack)) { + throw new \RuntimeException(sprintf("Circular call to script handler '%s' detected", $eventName)); + } + + return array_push($this->eventStack, $eventName); + } + + /** + * Pops the active event from the stack + * + * @return mixed + */ + protected function popEvent() + { + return array_pop($this->eventStack); + } +} diff --git a/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php b/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php new file mode 100644 index 0000000..6b0c4ca --- /dev/null +++ b/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php @@ -0,0 +1,48 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\EventDispatcher; + +/** + * An EventSubscriber knows which events it is interested in. + * + * If an EventSubscriber is added to an EventDispatcher, the manager invokes + * {@link getSubscribedEvents} and registers the subscriber as a listener for all + * returned events. + * + * @author Guilherme Blanco + * @author Jonathan Wage + * @author Roman Borschel + * @author Bernhard Schussek + */ +interface EventSubscriberInterface +{ + /** + * Returns an array of event names this subscriber wants to listen to. + * + * The array keys are event names and the value can be: + * + * * The method name to call (priority defaults to 0) + * * An array composed of the method name to call and the priority + * * An array of arrays composed of the method names to call and respective + * priorities, or 0 if unset + * + * For instance: + * + * * array('eventName' => 'methodName') + * * array('eventName' => array('methodName', $priority)) + * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) + * + * @return array The event names to listen to + */ + public static function getSubscribedEvents(); +} diff --git a/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php b/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php new file mode 100644 index 0000000..2b12ff6 --- /dev/null +++ b/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php @@ -0,0 +1,20 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\EventDispatcher; + +/** + * @author Jordi Boggiano + */ +class ScriptExecutionException extends \RuntimeException +{ +} diff --git a/vendor/composer/composer/src/Composer/Exception/NoSslException.php b/vendor/composer/composer/src/Composer/Exception/NoSslException.php new file mode 100644 index 0000000..017cac3 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Exception/NoSslException.php @@ -0,0 +1,20 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Exception; + +/** + * @author Jordi Boggiano + */ +class NoSslException extends \RuntimeException +{ +} diff --git a/vendor/composer/composer/src/Composer/Factory.php b/vendor/composer/composer/src/Composer/Factory.php new file mode 100644 index 0000000..8a0ff1e --- /dev/null +++ b/vendor/composer/composer/src/Composer/Factory.php @@ -0,0 +1,653 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Config\JsonConfigSource; +use Composer\Json\JsonFile; +use Composer\IO\IOInterface; +use Composer\Package\Archiver; +use Composer\Package\Version\VersionGuesser; +use Composer\Repository\RepositoryManager; +use Composer\Repository\RepositoryFactory; +use Composer\Repository\WritableRepositoryInterface; +use Composer\Util\Filesystem; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; +use Composer\Util\RemoteFilesystem; +use Composer\Util\Silencer; +use Composer\Plugin\PluginEvents; +use Composer\EventDispatcher\Event; +use Seld\JsonLint\DuplicateKeyException; +use Symfony\Component\Console\Formatter\OutputFormatter; +use Symfony\Component\Console\Formatter\OutputFormatterStyle; +use Symfony\Component\Console\Output\ConsoleOutput; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Autoload\AutoloadGenerator; +use Composer\Package\Version\VersionParser; +use Composer\Downloader\TransportException; +use Seld\JsonLint\JsonParser; + +/** + * Creates a configured instance of composer. + * + * @author Ryan Weaver + * @author Jordi Boggiano + * @author Igor Wiedler + * @author Nils Adermann + */ +class Factory +{ + /** + * @throws \RuntimeException + * @return string + */ + protected static function getHomeDir() + { + $home = getenv('COMPOSER_HOME'); + if ($home) { + return $home; + } + + if (Platform::isWindows()) { + if (!getenv('APPDATA')) { + throw new \RuntimeException('The APPDATA or COMPOSER_HOME environment variable must be set for composer to run correctly'); + } + + return rtrim(strtr(getenv('APPDATA'), '\\', '/'), '/') . '/Composer'; + } + + $userDir = self::getUserDir(); + if (is_dir($userDir . '/.composer')) { + return $userDir . '/.composer'; + } + + if (self::useXdg()) { + // XDG Base Directory Specifications + $xdgConfig = getenv('XDG_CONFIG_HOME') ?: $userDir . '/.config'; + + return $xdgConfig . '/composer'; + } + + return $userDir . '/.composer'; + } + + /** + * @param string $home + * @return string + */ + protected static function getCacheDir($home) + { + $cacheDir = getenv('COMPOSER_CACHE_DIR'); + if ($cacheDir) { + return $cacheDir; + } + + $homeEnv = getenv('COMPOSER_HOME'); + if ($homeEnv) { + return $homeEnv . '/cache'; + } + + if (Platform::isWindows()) { + if ($cacheDir = getenv('LOCALAPPDATA')) { + $cacheDir .= '/Composer'; + } else { + $cacheDir = $home . '/cache'; + } + + return rtrim(strtr($cacheDir, '\\', '/'), '/'); + } + + $userDir = self::getUserDir(); + if ($home === $userDir . '/.composer' && is_dir($home . '/cache')) { + return $home . '/cache'; + } + + if (self::useXdg()) { + $xdgCache = getenv('XDG_CACHE_HOME') ?: $userDir . '/.cache'; + + return $xdgCache . '/composer'; + } + + return $home . '/cache'; + } + + /** + * @param string $home + * @return string + */ + protected static function getDataDir($home) + { + $homeEnv = getenv('COMPOSER_HOME'); + if ($homeEnv) { + return $homeEnv; + } + + if (Platform::isWindows()) { + return strtr($home, '\\', '/'); + } + + $userDir = self::getUserDir(); + if ($home !== $userDir . '/.composer' && self::useXdg()) { + $xdgData = getenv('XDG_DATA_HOME') ?: $userDir . '/.local/share'; + + return $xdgData . '/composer'; + } + + return $home; + } + + /** + * @param IOInterface|null $io + * @return Config + */ + public static function createConfig(IOInterface $io = null, $cwd = null) + { + $cwd = $cwd ?: getcwd(); + + $config = new Config(true, $cwd); + + // determine and add main dirs to the config + $home = self::getHomeDir(); + $config->merge(array('config' => array( + 'home' => $home, + 'cache-dir' => self::getCacheDir($home), + 'data-dir' => self::getDataDir($home), + ))); + + // load global config + $file = new JsonFile($config->get('home').'/config.json'); + if ($file->exists()) { + if ($io && $io->isDebug()) { + $io->writeError('Loading config file ' . $file->getPath()); + } + $config->merge($file->read()); + } + $config->setConfigSource(new JsonConfigSource($file)); + + $htaccessProtect = (bool) $config->get('htaccess-protect'); + if ($htaccessProtect) { + // Protect directory against web access. Since HOME could be + // the www-data's user home and be web-accessible it is a + // potential security risk + $dirs = array($config->get('home'), $config->get('cache-dir'), $config->get('data-dir')); + foreach ($dirs as $dir) { + if (!file_exists($dir . '/.htaccess')) { + if (!is_dir($dir)) { + Silencer::call('mkdir', $dir, 0777, true); + } + Silencer::call('file_put_contents', $dir . '/.htaccess', 'Deny from all'); + } + } + } + + // load global auth file + $file = new JsonFile($config->get('home').'/auth.json'); + if ($file->exists()) { + if ($io && $io->isDebug()) { + $io->writeError('Loading config file ' . $file->getPath()); + } + $config->merge(array('config' => $file->read())); + } + $config->setAuthConfigSource(new JsonConfigSource($file, true)); + + // load COMPOSER_AUTH environment variable if set + if ($composerAuthEnv = getenv('COMPOSER_AUTH')) { + $authData = json_decode($composerAuthEnv, true); + + if (null === $authData) { + throw new \UnexpectedValueException('COMPOSER_AUTH environment variable is malformed, should be a valid JSON object'); + } + + if ($io && $io->isDebug()) { + $io->writeError('Loading auth config from COMPOSER_AUTH'); + } + $config->merge(array('config' => $authData)); + } + + return $config; + } + + public static function getComposerFile() + { + return trim(getenv('COMPOSER')) ?: './composer.json'; + } + + public static function createAdditionalStyles() + { + return array( + 'highlight' => new OutputFormatterStyle('red'), + 'warning' => new OutputFormatterStyle('black', 'yellow'), + ); + } + + /** + * Creates a ConsoleOutput instance + * + * @return ConsoleOutput + */ + public static function createOutput() + { + $styles = self::createAdditionalStyles(); + $formatter = new OutputFormatter(false, $styles); + + return new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, null, $formatter); + } + + /** + * @deprecated Use Composer\Repository\RepositoryFactory::defaultRepos instead + */ + public static function createDefaultRepositories(IOInterface $io = null, Config $config = null, RepositoryManager $rm = null) + { + return RepositoryFactory::defaultRepos($io, $config, $rm); + } + + /** + * Creates a Composer instance + * + * @param IOInterface $io IO instance + * @param array|string|null $localConfig either a configuration array or a filename to read from, if null it will + * read from the default filename + * @param bool $disablePlugins Whether plugins should not be loaded + * @param bool $fullLoad Whether to initialize everything or only main project stuff (used when loading the global composer) + * @throws \InvalidArgumentException + * @throws \UnexpectedValueException + * @return Composer + */ + public function createComposer(IOInterface $io, $localConfig = null, $disablePlugins = false, $cwd = null, $fullLoad = true) + { + $cwd = $cwd ?: getcwd(); + + // load Composer configuration + if (null === $localConfig) { + $localConfig = static::getComposerFile(); + } + + if (is_string($localConfig)) { + $composerFile = $localConfig; + + $file = new JsonFile($localConfig, null, $io); + + if (!$file->exists()) { + if ($localConfig === './composer.json' || $localConfig === 'composer.json') { + $message = 'Composer could not find a composer.json file in '.$cwd; + } else { + $message = 'Composer could not find the config file: '.$localConfig; + } + $instructions = 'To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section'; + throw new \InvalidArgumentException($message.PHP_EOL.$instructions); + } + + $file->validateSchema(JsonFile::LAX_SCHEMA); + $jsonParser = new JsonParser; + try { + $jsonParser->parse(file_get_contents($localConfig), JsonParser::DETECT_KEY_CONFLICTS); + } catch (DuplicateKeyException $e) { + $details = $e->getDetails(); + $io->writeError('Key '.$details['key'].' is a duplicate in '.$localConfig.' at line '.$details['line'].''); + } + + $localConfig = $file->read(); + } + + // Load config and override with local config/auth config + $config = static::createConfig($io, $cwd); + $config->merge($localConfig); + if (isset($composerFile)) { + $io->writeError('Loading config file ' . $composerFile, true, IOInterface::DEBUG); + $config->setConfigSource(new JsonConfigSource(new JsonFile(realpath($composerFile), null, $io))); + + $localAuthFile = new JsonFile(dirname(realpath($composerFile)) . '/auth.json', null, $io); + if ($localAuthFile->exists()) { + $io->writeError('Loading config file ' . $localAuthFile->getPath(), true, IOInterface::DEBUG); + $config->merge(array('config' => $localAuthFile->read())); + $config->setAuthConfigSource(new JsonConfigSource($localAuthFile, true)); + } + } + + $vendorDir = $config->get('vendor-dir'); + + // initialize composer + $composer = new Composer(); + $composer->setConfig($config); + + if ($fullLoad) { + // load auth configs into the IO instance + $io->loadConfiguration($config); + } + + $rfs = self::createRemoteFilesystem($io, $config); + + // initialize event dispatcher + $dispatcher = new EventDispatcher($composer, $io); + $composer->setEventDispatcher($dispatcher); + + // initialize repository manager + $rm = RepositoryFactory::manager($io, $config, $dispatcher, $rfs); + $composer->setRepositoryManager($rm); + + // load local repository + $this->addLocalRepository($io, $rm, $vendorDir); + + // force-set the version of the global package if not defined as + // guessing it adds no value and only takes time + if (!$fullLoad && !isset($localConfig['version'])) { + $localConfig['version'] = '1.0.0'; + } + + // load package + $parser = new VersionParser; + $guesser = new VersionGuesser($config, new ProcessExecutor($io), $parser); + $loader = new Package\Loader\RootPackageLoader($rm, $config, $parser, $guesser, $io); + $package = $loader->load($localConfig, 'Composer\Package\RootPackage', $cwd); + $composer->setPackage($package); + + // initialize installation manager + $im = $this->createInstallationManager(); + $composer->setInstallationManager($im); + + if ($fullLoad) { + // initialize download manager + $dm = $this->createDownloadManager($io, $config, $dispatcher, $rfs); + $composer->setDownloadManager($dm); + + // initialize autoload generator + $generator = new AutoloadGenerator($dispatcher, $io); + $composer->setAutoloadGenerator($generator); + + // initialize archive manager + $am = $this->createArchiveManager($config, $dm); + $composer->setArchiveManager($am); + } + + // add installers to the manager (must happen after download manager is created since they read it out of $composer) + $this->createDefaultInstallers($im, $composer, $io); + + if ($fullLoad) { + $globalComposer = null; + if (realpath($config->get('home')) !== $cwd) { + $globalComposer = $this->createGlobalComposer($io, $config, $disablePlugins); + } + + $pm = $this->createPluginManager($io, $composer, $globalComposer, $disablePlugins); + $composer->setPluginManager($pm); + + $pm->loadInstalledPlugins(); + } + + // init locker if possible + if ($fullLoad && isset($composerFile)) { + $lockFile = "json" === pathinfo($composerFile, PATHINFO_EXTENSION) + ? substr($composerFile, 0, -4).'lock' + : $composerFile . '.lock'; + + $locker = new Package\Locker($io, new JsonFile($lockFile, null, $io), $rm, $im, file_get_contents($composerFile)); + $composer->setLocker($locker); + } + + if ($fullLoad) { + $initEvent = new Event(PluginEvents::INIT); + $composer->getEventDispatcher()->dispatch($initEvent->getName(), $initEvent); + + // once everything is initialized we can + // purge packages from local repos if they have been deleted on the filesystem + if ($rm->getLocalRepository()) { + $this->purgePackages($rm->getLocalRepository(), $im); + } + } + + return $composer; + } + + /** + * @param IOInterface $io IO instance + * @param bool $disablePlugins Whether plugins should not be loaded + * @return Composer + */ + public static function createGlobal(IOInterface $io, $disablePlugins = false) + { + $factory = new static(); + + return $factory->createGlobalComposer($io, static::createConfig($io), $disablePlugins, true); + } + + /** + * @param Repository\RepositoryManager $rm + * @param string $vendorDir + */ + protected function addLocalRepository(IOInterface $io, RepositoryManager $rm, $vendorDir) + { + $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir.'/composer/installed.json', null, $io))); + } + + /** + * @param Config $config + * @return Composer|null + */ + protected function createGlobalComposer(IOInterface $io, Config $config, $disablePlugins, $fullLoad = false) + { + $composer = null; + try { + $composer = $this->createComposer($io, $config->get('home') . '/composer.json', $disablePlugins, $config->get('home'), $fullLoad); + } catch (\Exception $e) { + $io->writeError('Failed to initialize global composer: '.$e->getMessage(), true, IOInterface::DEBUG); + } + + return $composer; + } + + /** + * @param IO\IOInterface $io + * @param Config $config + * @param EventDispatcher $eventDispatcher + * @return Downloader\DownloadManager + */ + public function createDownloadManager(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, RemoteFilesystem $rfs = null) + { + $cache = null; + if ($config->get('cache-files-ttl') > 0) { + $cache = new Cache($io, $config->get('cache-files-dir'), 'a-z0-9_./'); + } + + $dm = new Downloader\DownloadManager($io); + switch ($preferred = $config->get('preferred-install')) { + case 'dist': + $dm->setPreferDist(true); + break; + case 'source': + $dm->setPreferSource(true); + break; + case 'auto': + default: + // noop + break; + } + + if (is_array($preferred)) { + $dm->setPreferences($preferred); + } + + $executor = new ProcessExecutor($io); + $fs = new Filesystem($executor); + + $dm->setDownloader('git', new Downloader\GitDownloader($io, $config, $executor, $fs)); + $dm->setDownloader('svn', new Downloader\SvnDownloader($io, $config, $executor, $fs)); + $dm->setDownloader('fossil', new Downloader\FossilDownloader($io, $config, $executor, $fs)); + $dm->setDownloader('hg', new Downloader\HgDownloader($io, $config, $executor, $fs)); + $dm->setDownloader('perforce', new Downloader\PerforceDownloader($io, $config)); + $dm->setDownloader('zip', new Downloader\ZipDownloader($io, $config, $eventDispatcher, $cache, $executor, $rfs)); + $dm->setDownloader('rar', new Downloader\RarDownloader($io, $config, $eventDispatcher, $cache, $executor, $rfs)); + $dm->setDownloader('tar', new Downloader\TarDownloader($io, $config, $eventDispatcher, $cache, $rfs)); + $dm->setDownloader('gzip', new Downloader\GzipDownloader($io, $config, $eventDispatcher, $cache, $executor, $rfs)); + $dm->setDownloader('xz', new Downloader\XzDownloader($io, $config, $eventDispatcher, $cache, $executor, $rfs)); + $dm->setDownloader('phar', new Downloader\PharDownloader($io, $config, $eventDispatcher, $cache, $rfs)); + $dm->setDownloader('file', new Downloader\FileDownloader($io, $config, $eventDispatcher, $cache, $rfs)); + $dm->setDownloader('path', new Downloader\PathDownloader($io, $config, $eventDispatcher, $cache, $rfs)); + + return $dm; + } + + /** + * @param Config $config The configuration + * @param Downloader\DownloadManager $dm Manager use to download sources + * @return Archiver\ArchiveManager + */ + public function createArchiveManager(Config $config, Downloader\DownloadManager $dm = null) + { + if (null === $dm) { + $io = new IO\NullIO(); + $io->loadConfiguration($config); + $dm = $this->createDownloadManager($io, $config); + } + + $am = new Archiver\ArchiveManager($dm); + $am->addArchiver(new Archiver\ZipArchiver); + $am->addArchiver(new Archiver\PharArchiver); + + return $am; + } + + /** + * @param IOInterface $io + * @param Composer $composer + * @param Composer $globalComposer + * @param bool $disablePlugins + * @return Plugin\PluginManager + */ + protected function createPluginManager(IOInterface $io, Composer $composer, Composer $globalComposer = null, $disablePlugins = false) + { + return new Plugin\PluginManager($io, $composer, $globalComposer, $disablePlugins); + } + + /** + * @return Installer\InstallationManager + */ + protected function createInstallationManager() + { + return new Installer\InstallationManager(); + } + + /** + * @param Installer\InstallationManager $im + * @param Composer $composer + * @param IO\IOInterface $io + */ + protected function createDefaultInstallers(Installer\InstallationManager $im, Composer $composer, IOInterface $io) + { + $im->addInstaller(new Installer\LibraryInstaller($io, $composer, null)); + $im->addInstaller(new Installer\PearInstaller($io, $composer, 'pear-library')); + $im->addInstaller(new Installer\PluginInstaller($io, $composer)); + $im->addInstaller(new Installer\MetapackageInstaller($io)); + } + + /** + * @param WritableRepositoryInterface $repo repository to purge packages from + * @param Installer\InstallationManager $im manager to check whether packages are still installed + */ + protected function purgePackages(WritableRepositoryInterface $repo, Installer\InstallationManager $im) + { + foreach ($repo->getPackages() as $package) { + if (!$im->isPackageInstalled($repo, $package)) { + $repo->removePackage($package); + } + } + } + + /** + * @param IOInterface $io IO instance + * @param mixed $config either a configuration array or a filename to read from, if null it will read from + * the default filename + * @param bool $disablePlugins Whether plugins should not be loaded + * @return Composer + */ + public static function create(IOInterface $io, $config = null, $disablePlugins = false) + { + $factory = new static(); + + return $factory->createComposer($io, $config, $disablePlugins); + } + + /** + * @param IOInterface $io IO instance + * @param Config $config Config instance + * @param array $options Array of options passed directly to RemoteFilesystem constructor + * @return RemoteFilesystem + */ + public static function createRemoteFilesystem(IOInterface $io, Config $config = null, $options = array()) + { + static $warned = false; + $disableTls = false; + if ($config && $config->get('disable-tls') === true) { + if (!$warned) { + $io->writeError('You are running Composer with SSL/TLS protection disabled.'); + } + $warned = true; + $disableTls = true; + } elseif (!extension_loaded('openssl')) { + throw new Exception\NoSslException('The openssl extension is required for SSL/TLS protection but is not available. ' + . 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); + } + $remoteFilesystemOptions = array(); + if ($disableTls === false) { + if ($config && $config->get('cafile')) { + $remoteFilesystemOptions['ssl']['cafile'] = $config->get('cafile'); + } + if ($config && $config->get('capath')) { + $remoteFilesystemOptions['ssl']['capath'] = $config->get('capath'); + } + $remoteFilesystemOptions = array_replace_recursive($remoteFilesystemOptions, $options); + } + try { + $remoteFilesystem = new RemoteFilesystem($io, $config, $remoteFilesystemOptions, $disableTls); + } catch (TransportException $e) { + if (false !== strpos($e->getMessage(), 'cafile')) { + $io->write('Unable to locate a valid CA certificate file. You must set a valid \'cafile\' option.'); + $io->write('A valid CA certificate file is required for SSL/TLS protection.'); + if (PHP_VERSION_ID < 50600) { + $io->write('It is recommended you upgrade to PHP 5.6+ which can detect your system CA file automatically.'); + } + $io->write('You can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); + } + throw $e; + } + + return $remoteFilesystem; + } + + /** + * @return bool + */ + private static function useXdg() + { + foreach (array_keys($_SERVER) as $key) { + if (substr($key, 0, 4) === 'XDG_') { + return true; + } + } + + return false; + } + + /** + * @throws \RuntimeException + * @return string + */ + private static function getUserDir() + { + $home = getenv('HOME'); + if (!$home) { + throw new \RuntimeException('The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly'); + } + + return rtrim(strtr($home, '\\', '/'), '/'); + } +} diff --git a/vendor/composer/composer/src/Composer/IO/BaseIO.php b/vendor/composer/composer/src/Composer/IO/BaseIO.php new file mode 100644 index 0000000..cb2e99d --- /dev/null +++ b/vendor/composer/composer/src/Composer/IO/BaseIO.php @@ -0,0 +1,279 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\IO; + +use Composer\Config; +use Composer\Util\ProcessExecutor; +use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; + +abstract class BaseIO implements IOInterface, LoggerInterface +{ + protected $authentications = array(); + + /** + * {@inheritDoc} + */ + public function getAuthentications() + { + return $this->authentications; + } + + /** + * {@inheritDoc} + */ + public function resetAuthentications() + { + $this->authentications = array(); + } + + /** + * {@inheritDoc} + */ + public function hasAuthentication($repositoryName) + { + return isset($this->authentications[$repositoryName]); + } + + /** + * {@inheritDoc} + */ + public function getAuthentication($repositoryName) + { + if (isset($this->authentications[$repositoryName])) { + return $this->authentications[$repositoryName]; + } + + return array('username' => null, 'password' => null); + } + + /** + * {@inheritDoc} + */ + public function setAuthentication($repositoryName, $username, $password = null) + { + $this->authentications[$repositoryName] = array('username' => $username, 'password' => $password); + } + + /** + * {@inheritDoc} + */ + public function writeRaw($messages, $newline = true, $verbosity = self::NORMAL) + { + $this->write($messages, $newline, $verbosity); + } + + /** + * {@inheritDoc} + */ + public function writeErrorRaw($messages, $newline = true, $verbosity = self::NORMAL) + { + $this->writeError($messages, $newline, $verbosity); + } + + /** + * Check for overwrite and set the authentication information for the repository. + * + * @param string $repositoryName The unique name of repository + * @param string $username The username + * @param string $password The password + */ + protected function checkAndSetAuthentication($repositoryName, $username, $password = null) + { + if ($this->hasAuthentication($repositoryName)) { + $auth = $this->getAuthentication($repositoryName); + if ($auth['username'] === $username && $auth['password'] === $password) { + return; + } + + $this->writeError( + sprintf( + "Warning: You should avoid overwriting already defined auth settings for %s.", + $repositoryName + ) + ); + } + $this->setAuthentication($repositoryName, $username, $password); + } + + /** + * {@inheritDoc} + */ + public function loadConfiguration(Config $config) + { + $bitbucketOauth = $config->get('bitbucket-oauth') ?: array(); + $githubOauth = $config->get('github-oauth') ?: array(); + $gitlabOauth = $config->get('gitlab-oauth') ?: array(); + $gitlabToken = $config->get('gitlab-token') ?: array(); + $httpBasic = $config->get('http-basic') ?: array(); + + // reload oauth tokens from config if available + + foreach ($bitbucketOauth as $domain => $cred) { + $this->checkAndSetAuthentication($domain, $cred['consumer-key'], $cred['consumer-secret']); + } + + foreach ($githubOauth as $domain => $token) { + if (!preg_match('{^[.a-z0-9]+$}', $token)) { + throw new \UnexpectedValueException('Your github oauth token for '.$domain.' contains invalid characters: "'.$token.'"'); + } + $this->checkAndSetAuthentication($domain, $token, 'x-oauth-basic'); + } + + foreach ($gitlabOauth as $domain => $token) { + $this->checkAndSetAuthentication($domain, $token, 'oauth2'); + } + + foreach ($gitlabToken as $domain => $token) { + $this->checkAndSetAuthentication($domain, $token, 'private-token'); + } + + // reload http basic credentials from config if available + foreach ($httpBasic as $domain => $cred) { + $this->checkAndSetAuthentication($domain, $cred['username'], $cred['password']); + } + + // setup process timeout + ProcessExecutor::setTimeout((int) $config->get('process-timeout')); + } + + /** + * System is unusable. + * + * @param string $message + * @param array $context + * @return null + */ + public function emergency($message, array $context = array()) + { + return $this->log(LogLevel::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * @return null + */ + public function alert($message, array $context = array()) + { + return $this->log(LogLevel::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * @return null + */ + public function critical($message, array $context = array()) + { + return $this->log(LogLevel::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * @return null + */ + public function error($message, array $context = array()) + { + return $this->log(LogLevel::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * @return null + */ + public function warning($message, array $context = array()) + { + return $this->log(LogLevel::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * @return null + */ + public function notice($message, array $context = array()) + { + return $this->log(LogLevel::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * @return null + */ + public function info($message, array $context = array()) + { + return $this->log(LogLevel::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * @return null + */ + public function debug($message, array $context = array()) + { + return $this->log(LogLevel::DEBUG, $message, $context); + } + + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * @return null + */ + public function log($level, $message, array $context = array()) + { + if (in_array($level, array(LogLevel::EMERGENCY, LogLevel::ALERT, LogLevel::CRITICAL, LogLevel::ERROR))) { + $this->writeError(''.$message.'', true, self::NORMAL); + } elseif ($level === LogLevel::WARNING) { + $this->writeError(''.$message.'', true, self::NORMAL); + } elseif ($level === LogLevel::NOTICE) { + $this->writeError(''.$message.'', true, self::VERBOSE); + } elseif ($level === LogLevel::INFO) { + $this->writeError(''.$message.'', true, self::VERY_VERBOSE); + } else { + $this->writeError($message, true, self::DEBUG); + } + } +} diff --git a/vendor/composer/composer/src/Composer/IO/BufferIO.php b/vendor/composer/composer/src/Composer/IO/BufferIO.php new file mode 100644 index 0000000..db46713 --- /dev/null +++ b/vendor/composer/composer/src/Composer/IO/BufferIO.php @@ -0,0 +1,86 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\IO; + +use Symfony\Component\Console\Helper\QuestionHelper; +use Symfony\Component\Console\Output\StreamOutput; +use Symfony\Component\Console\Formatter\OutputFormatterInterface; +use Symfony\Component\Console\Input\StreamableInputInterface; +use Symfony\Component\Console\Input\StringInput; +use Symfony\Component\Console\Helper\HelperSet; + +/** + * @author Jordi Boggiano + */ +class BufferIO extends ConsoleIO +{ + /** + * @param string $input + * @param int $verbosity + * @param OutputFormatterInterface|null $formatter + */ + public function __construct($input = '', $verbosity = StreamOutput::VERBOSITY_NORMAL, OutputFormatterInterface $formatter = null) + { + $input = new StringInput($input); + $input->setInteractive(false); + + $output = new StreamOutput(fopen('php://memory', 'rw'), $verbosity, $formatter ? $formatter->isDecorated() : false, $formatter); + + parent::__construct($input, $output, new HelperSet(array( + new QuestionHelper(), + ))); + } + + public function getOutput() + { + fseek($this->output->getStream(), 0); + + $output = stream_get_contents($this->output->getStream()); + + $output = preg_replace_callback("{(?<=^|\n|\x08)(.+?)(\x08+)}", function ($matches) { + $pre = strip_tags($matches[1]); + + if (strlen($pre) === strlen($matches[2])) { + return ''; + } + + // TODO reverse parse the string, skipping span tags and \033\[([0-9;]+)m(.*?)\033\[0m style blobs + return rtrim($matches[1])."\n"; + }, $output); + + return $output; + } + + public function setUserInputs(array $inputs) + { + if (!$this->input instanceof StreamableInputInterface) { + throw new \RuntimeException('Setting the user inputs requires at least the version 3.2 of the symfony/console component.'); + } + + $this->input->setStream($this->createStream($inputs)); + $this->input->setInteractive(true); + } + + private function createStream(array $inputs) + { + $stream = fopen('php://memory', 'r+', false); + + foreach ($inputs as $input) { + fwrite($stream, $input.PHP_EOL); + } + + rewind($stream); + + return $stream; + } +} diff --git a/vendor/composer/composer/src/Composer/IO/ConsoleIO.php b/vendor/composer/composer/src/Composer/IO/ConsoleIO.php new file mode 100644 index 0000000..925a528 --- /dev/null +++ b/vendor/composer/composer/src/Composer/IO/ConsoleIO.php @@ -0,0 +1,346 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\IO; + +use Composer\Question\StrictConfirmationQuestion; +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\ConsoleOutputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Question\ChoiceQuestion; +use Symfony\Component\Console\Question\Question; + +/** + * The Input/Output helper. + * + * @author François Pluchino + * @author Jordi Boggiano + */ +class ConsoleIO extends BaseIO +{ + /** @var InputInterface */ + protected $input; + /** @var OutputInterface */ + protected $output; + /** @var HelperSet */ + protected $helperSet; + /** @var string */ + protected $lastMessage; + /** @var string */ + protected $lastMessageErr; + + /** @var float */ + private $startTime; + /** @var array */ + private $verbosityMap; + + /** + * Constructor. + * + * @param InputInterface $input The input instance + * @param OutputInterface $output The output instance + * @param HelperSet $helperSet The helperSet instance + */ + public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet) + { + $this->input = $input; + $this->output = $output; + $this->helperSet = $helperSet; + $this->verbosityMap = array( + self::QUIET => OutputInterface::VERBOSITY_QUIET, + self::NORMAL => OutputInterface::VERBOSITY_NORMAL, + self::VERBOSE => OutputInterface::VERBOSITY_VERBOSE, + self::VERY_VERBOSE => OutputInterface::VERBOSITY_VERY_VERBOSE, + self::DEBUG => OutputInterface::VERBOSITY_DEBUG, + ); + } + + /** + * @param float $startTime + */ + public function enableDebugging($startTime) + { + $this->startTime = $startTime; + } + + /** + * {@inheritDoc} + */ + public function isInteractive() + { + return $this->input->isInteractive(); + } + + /** + * {@inheritDoc} + */ + public function isDecorated() + { + return $this->output->isDecorated(); + } + + /** + * {@inheritDoc} + */ + public function isVerbose() + { + return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE; + } + + /** + * {@inheritDoc} + */ + public function isVeryVerbose() + { + return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE; + } + + /** + * {@inheritDoc} + */ + public function isDebug() + { + return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_DEBUG; + } + + /** + * {@inheritDoc} + */ + public function write($messages, $newline = true, $verbosity = self::NORMAL) + { + $this->doWrite($messages, $newline, false, $verbosity); + } + + /** + * {@inheritDoc} + */ + public function writeError($messages, $newline = true, $verbosity = self::NORMAL) + { + $this->doWrite($messages, $newline, true, $verbosity); + } + + /** + * {@inheritDoc} + */ + public function writeRaw($messages, $newline = true, $verbosity = self::NORMAL) + { + $this->doWrite($messages, $newline, false, $verbosity, true); + } + + /** + * {@inheritDoc} + */ + public function writeErrorRaw($messages, $newline = true, $verbosity = self::NORMAL) + { + $this->doWrite($messages, $newline, true, $verbosity, true); + } + + /** + * @param array|string $messages + * @param bool $newline + * @param bool $stderr + * @param int $verbosity + */ + private function doWrite($messages, $newline, $stderr, $verbosity, $raw = false) + { + $sfVerbosity = $this->verbosityMap[$verbosity]; + if ($sfVerbosity > $this->output->getVerbosity()) { + return; + } + + // hack to keep our usage BC with symfony<2.8 versions + // this removes the quiet output but there is no way around it + // see https://github.com/composer/composer/pull/4913 + if (OutputInterface::VERBOSITY_QUIET === 0) { + $sfVerbosity = OutputInterface::OUTPUT_NORMAL; + } + + if ($raw) { + if ($sfVerbosity === OutputInterface::OUTPUT_NORMAL) { + $sfVerbosity = OutputInterface::OUTPUT_RAW; + } else { + $sfVerbosity |= OutputInterface::OUTPUT_RAW; + } + } + + if (null !== $this->startTime) { + $memoryUsage = memory_get_usage() / 1024 / 1024; + $timeSpent = microtime(true) - $this->startTime; + $messages = array_map(function ($message) use ($memoryUsage, $timeSpent) { + return sprintf('[%.1fMiB/%.2fs] %s', $memoryUsage, $timeSpent, $message); + }, (array) $messages); + } + + if (true === $stderr && $this->output instanceof ConsoleOutputInterface) { + $this->output->getErrorOutput()->write($messages, $newline, $sfVerbosity); + $this->lastMessageErr = implode($newline ? "\n" : '', (array) $messages); + + return; + } + + $this->output->write($messages, $newline, $sfVerbosity); + $this->lastMessage = implode($newline ? "\n" : '', (array) $messages); + } + + /** + * {@inheritDoc} + */ + public function overwrite($messages, $newline = true, $size = null, $verbosity = self::NORMAL) + { + $this->doOverwrite($messages, $newline, $size, false, $verbosity); + } + + /** + * {@inheritDoc} + */ + public function overwriteError($messages, $newline = true, $size = null, $verbosity = self::NORMAL) + { + $this->doOverwrite($messages, $newline, $size, true, $verbosity); + } + + /** + * @param array|string $messages + * @param bool $newline + * @param int|null $size + * @param bool $stderr + * @param int $verbosity + */ + private function doOverwrite($messages, $newline, $size, $stderr, $verbosity) + { + // messages can be an array, let's convert it to string anyway + $messages = implode($newline ? "\n" : '', (array) $messages); + + // since overwrite is supposed to overwrite last message... + if (!isset($size)) { + // removing possible formatting of lastMessage with strip_tags + $size = strlen(strip_tags($stderr ? $this->lastMessageErr : $this->lastMessage)); + } + // ...let's fill its length with backspaces + $this->doWrite(str_repeat("\x08", $size), false, $stderr, $verbosity); + + // write the new message + $this->doWrite($messages, false, $stderr, $verbosity); + + // In cmd.exe on Win8.1 (possibly 10?), the line can not be cleared, so we need to + // track the length of previous output and fill it with spaces to make sure the line is cleared. + // See https://github.com/composer/composer/pull/5836 for more details + $fill = $size - strlen(strip_tags($messages)); + if ($fill > 0) { + // whitespace whatever has left + $this->doWrite(str_repeat(' ', $fill), false, $stderr, $verbosity); + // move the cursor back + $this->doWrite(str_repeat("\x08", $fill), false, $stderr, $verbosity); + } + + if ($newline) { + $this->doWrite('', true, $stderr, $verbosity); + } + + if ($stderr) { + $this->lastMessageErr = $messages; + } else { + $this->lastMessage = $messages; + } + } + + /** + * {@inheritDoc} + */ + public function ask($question, $default = null) + { + /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ + $helper = $this->helperSet->get('question'); + $question = new Question($question, $default); + + return $helper->ask($this->input, $this->getErrorOutput(), $question); + } + + /** + * {@inheritDoc} + */ + public function askConfirmation($question, $default = true) + { + /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ + $helper = $this->helperSet->get('question'); + $question = new StrictConfirmationQuestion($question, $default); + + return $helper->ask($this->input, $this->getErrorOutput(), $question); + } + + /** + * {@inheritDoc} + */ + public function askAndValidate($question, $validator, $attempts = null, $default = null) + { + /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ + $helper = $this->helperSet->get('question'); + $question = new Question($question, $default); + $question->setValidator($validator); + $question->setMaxAttempts($attempts); + + return $helper->ask($this->input, $this->getErrorOutput(), $question); + } + + /** + * {@inheritDoc} + */ + public function askAndHideAnswer($question) + { + /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ + $helper = $this->helperSet->get('question'); + $question = new Question($question); + $question->setHidden(true); + + return $helper->ask($this->input, $this->getErrorOutput(), $question); + } + + /** + * {@inheritDoc} + */ + public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false) + { + /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ + $helper = $this->helperSet->get('question'); + $question = new ChoiceQuestion($question, $choices, $default); + $question->setMaxAttempts($attempts ?: null); // IOInterface requires false, and Question requires null or int + $question->setErrorMessage($errorMessage); + $question->setMultiselect($multiselect); + + $result = $helper->ask($this->input, $this->getErrorOutput(), $question); + + if (!is_array($result)) { + return (string) array_search($result, $choices, true); + } + + $results = array(); + foreach ($choices as $index => $choice) { + if (in_array($choice, $result, true)) { + $results[] = (string) $index; + } + } + + return $results; + } + + /** + * @return OutputInterface + */ + private function getErrorOutput() + { + if ($this->output instanceof ConsoleOutputInterface) { + return $this->output->getErrorOutput(); + } + + return $this->output; + } +} diff --git a/vendor/composer/composer/src/Composer/IO/IOInterface.php b/vendor/composer/composer/src/Composer/IO/IOInterface.php new file mode 100644 index 0000000..5766ba4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/IO/IOInterface.php @@ -0,0 +1,207 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\IO; + +use Composer\Config; + +/** + * The Input/Output helper interface. + * + * @author François Pluchino + */ +interface IOInterface +{ + const QUIET = 1; + const NORMAL = 2; + const VERBOSE = 4; + const VERY_VERBOSE = 8; + const DEBUG = 16; + + /** + * Is this input means interactive? + * + * @return bool + */ + public function isInteractive(); + + /** + * Is this output verbose? + * + * @return bool + */ + public function isVerbose(); + + /** + * Is the output very verbose? + * + * @return bool + */ + public function isVeryVerbose(); + + /** + * Is the output in debug verbosity? + * + * @return bool + */ + public function isDebug(); + + /** + * Is this output decorated? + * + * @return bool + */ + public function isDecorated(); + + /** + * Writes a message to the output. + * + * @param string|array $messages The message as an array of lines or a single string + * @param bool $newline Whether to add a newline or not + * @param int $verbosity Verbosity level from the VERBOSITY_* constants + */ + public function write($messages, $newline = true, $verbosity = self::NORMAL); + + /** + * Writes a message to the error output. + * + * @param string|array $messages The message as an array of lines or a single string + * @param bool $newline Whether to add a newline or not + * @param int $verbosity Verbosity level from the VERBOSITY_* constants + */ + public function writeError($messages, $newline = true, $verbosity = self::NORMAL); + + /** + * Overwrites a previous message to the output. + * + * @param string|array $messages The message as an array of lines or a single string + * @param bool $newline Whether to add a newline or not + * @param int $size The size of line + * @param int $verbosity Verbosity level from the VERBOSITY_* constants + */ + public function overwrite($messages, $newline = true, $size = null, $verbosity = self::NORMAL); + + /** + * Overwrites a previous message to the error output. + * + * @param string|array $messages The message as an array of lines or a single string + * @param bool $newline Whether to add a newline or not + * @param int $size The size of line + * @param int $verbosity Verbosity level from the VERBOSITY_* constants + */ + public function overwriteError($messages, $newline = true, $size = null, $verbosity = self::NORMAL); + + /** + * Asks a question to the user. + * + * @param string $question The question to ask + * @param string $default The default answer if none is given by the user + * + * @throws \RuntimeException If there is no data to read in the input stream + * @return string The user answer + */ + public function ask($question, $default = null); + + /** + * Asks a confirmation to the user. + * + * The question will be asked until the user answers by nothing, yes, or no. + * + * @param string $question The question to ask + * @param bool $default The default answer if the user enters nothing + * + * @return bool true if the user has confirmed, false otherwise + */ + public function askConfirmation($question, $default = true); + + /** + * Asks for a value and validates the response. + * + * The validator receives the data to validate. It must return the + * validated data when the data is valid and throw an exception + * otherwise. + * + * @param string $question The question to ask + * @param callable $validator A PHP callback + * @param null|int $attempts Max number of times to ask before giving up (default of null means infinite) + * @param mixed $default The default answer if none is given by the user + * + * @throws \Exception When any of the validators return an error + * @return mixed + */ + public function askAndValidate($question, $validator, $attempts = null, $default = null); + + /** + * Asks a question to the user and hide the answer. + * + * @param string $question The question to ask + * + * @return string The answer + */ + public function askAndHideAnswer($question); + + /** + * Asks the user to select a value. + * + * @param string $question The question to ask + * @param array $choices List of choices to pick from + * @param bool|string $default The default answer if the user enters nothing + * @param bool|int $attempts Max number of times to ask before giving up (false by default, which means infinite) + * @param string $errorMessage Message which will be shown if invalid value from choice list would be picked + * @param bool $multiselect Select more than one value separated by comma + * + * @throws \InvalidArgumentException + * @return int|string|array The selected value or values (the key of the choices array) + */ + public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false); + + /** + * Get all authentication information entered. + * + * @return array The map of authentication data + */ + public function getAuthentications(); + + /** + * Verify if the repository has a authentication information. + * + * @param string $repositoryName The unique name of repository + * + * @return bool + */ + public function hasAuthentication($repositoryName); + + /** + * Get the username and password of repository. + * + * @param string $repositoryName The unique name of repository + * + * @return array The 'username' and 'password' + */ + public function getAuthentication($repositoryName); + + /** + * Set the authentication information for the repository. + * + * @param string $repositoryName The unique name of repository + * @param string $username The username + * @param string $password The password + */ + public function setAuthentication($repositoryName, $username, $password = null); + + /** + * Loads authentications from a config instance + * + * @param Config $config + */ + public function loadConfiguration(Config $config); +} diff --git a/vendor/composer/composer/src/Composer/IO/NullIO.php b/vendor/composer/composer/src/Composer/IO/NullIO.php new file mode 100644 index 0000000..cc6d5eb --- /dev/null +++ b/vendor/composer/composer/src/Composer/IO/NullIO.php @@ -0,0 +1,129 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\IO; + +/** + * IOInterface that is not interactive and never writes the output + * + * @author Christophe Coevoet + */ +class NullIO extends BaseIO +{ + /** + * {@inheritDoc} + */ + public function isInteractive() + { + return false; + } + + /** + * {@inheritDoc} + */ + public function isVerbose() + { + return false; + } + + /** + * {@inheritDoc} + */ + public function isVeryVerbose() + { + return false; + } + + /** + * {@inheritDoc} + */ + public function isDebug() + { + return false; + } + + /** + * {@inheritDoc} + */ + public function isDecorated() + { + return false; + } + + /** + * {@inheritDoc} + */ + public function write($messages, $newline = true, $verbosity = self::NORMAL) + { + } + + /** + * {@inheritDoc} + */ + public function writeError($messages, $newline = true, $verbosity = self::NORMAL) + { + } + + /** + * {@inheritDoc} + */ + public function overwrite($messages, $newline = true, $size = 80, $verbosity = self::NORMAL) + { + } + + /** + * {@inheritDoc} + */ + public function overwriteError($messages, $newline = true, $size = 80, $verbosity = self::NORMAL) + { + } + + /** + * {@inheritDoc} + */ + public function ask($question, $default = null) + { + return $default; + } + + /** + * {@inheritDoc} + */ + public function askConfirmation($question, $default = true) + { + return $default; + } + + /** + * {@inheritDoc} + */ + public function askAndValidate($question, $validator, $attempts = false, $default = null) + { + return $default; + } + + /** + * {@inheritDoc} + */ + public function askAndHideAnswer($question) + { + return null; + } + + /** + * {@inheritDoc} + */ + public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false) + { + return $default; + } +} diff --git a/vendor/composer/composer/src/Composer/Installer.php b/vendor/composer/composer/src/Composer/Installer.php new file mode 100644 index 0000000..e00b381 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer.php @@ -0,0 +1,1803 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\AutoloadGenerator; +use Composer\DependencyResolver\DefaultPolicy; +use Composer\DependencyResolver\Operation\UpdateOperation; +use Composer\DependencyResolver\Operation\InstallOperation; +use Composer\DependencyResolver\Operation\UninstallOperation; +use Composer\DependencyResolver\Operation\MarkAliasUninstalledOperation; +use Composer\DependencyResolver\Operation\OperationInterface; +use Composer\DependencyResolver\PolicyInterface; +use Composer\DependencyResolver\Pool; +use Composer\DependencyResolver\Request; +use Composer\DependencyResolver\Rule; +use Composer\DependencyResolver\Solver; +use Composer\DependencyResolver\SolverProblemsException; +use Composer\Downloader\DownloadManager; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Installer\InstallationManager; +use Composer\Installer\InstallerEvents; +use Composer\Installer\NoopInstaller; +use Composer\Installer\SuggestedPackagesReporter; +use Composer\IO\IOInterface; +use Composer\Package\AliasPackage; +use Composer\Package\BasePackage; +use Composer\Package\CompletePackage; +use Composer\Package\Link; +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\Dumper\ArrayDumper; +use Composer\Semver\Constraint\Constraint; +use Composer\Package\Locker; +use Composer\Package\PackageInterface; +use Composer\Package\RootPackageInterface; +use Composer\Repository\CompositeRepository; +use Composer\Repository\InstalledArrayRepository; +use Composer\Repository\PlatformRepository; +use Composer\Repository\RepositoryInterface; +use Composer\Repository\RepositoryManager; +use Composer\Repository\WritableRepositoryInterface; +use Composer\Script\ScriptEvents; + +/** + * @author Jordi Boggiano + * @author Beau Simensen + * @author Konstantin Kudryashov + * @author Nils Adermann + */ +class Installer +{ + /** + * @var IOInterface + */ + protected $io; + + /** + * @var Config + */ + protected $config; + + /** + * @var RootPackageInterface + */ + protected $package; + + /** + * @var DownloadManager + */ + protected $downloadManager; + + /** + * @var RepositoryManager + */ + protected $repositoryManager; + + /** + * @var Locker + */ + protected $locker; + + /** + * @var InstallationManager + */ + protected $installationManager; + + /** + * @var EventDispatcher + */ + protected $eventDispatcher; + + /** + * @var AutoloadGenerator + */ + protected $autoloadGenerator; + + protected $preferSource = false; + protected $preferDist = false; + protected $optimizeAutoloader = false; + protected $classMapAuthoritative = false; + protected $apcuAutoloader = false; + protected $devMode = false; + protected $dryRun = false; + protected $verbose = false; + protected $update = false; + protected $dumpAutoloader = true; + protected $runScripts = true; + protected $ignorePlatformReqs = false; + protected $preferStable = false; + protected $preferLowest = false; + protected $skipSuggest = false; + protected $writeLock = true; + protected $executeOperations = true; + + /** + * Array of package names/globs flagged for update + * + * @var array|null + */ + protected $updateWhitelist = null; + protected $whitelistDependencies = false; // TODO 2.0 rename to whitelistTransitiveDependencies + protected $whitelistAllDependencies = false; + + /** + * @var SuggestedPackagesReporter + */ + protected $suggestedPackagesReporter; + + /** + * @var RepositoryInterface + */ + protected $additionalInstalledRepository; + + /** + * Constructor + * + * @param IOInterface $io + * @param Config $config + * @param RootPackageInterface $package + * @param DownloadManager $downloadManager + * @param RepositoryManager $repositoryManager + * @param Locker $locker + * @param InstallationManager $installationManager + * @param EventDispatcher $eventDispatcher + * @param AutoloadGenerator $autoloadGenerator + */ + public function __construct(IOInterface $io, Config $config, RootPackageInterface $package, DownloadManager $downloadManager, RepositoryManager $repositoryManager, Locker $locker, InstallationManager $installationManager, EventDispatcher $eventDispatcher, AutoloadGenerator $autoloadGenerator) + { + $this->io = $io; + $this->config = $config; + $this->package = $package; + $this->downloadManager = $downloadManager; + $this->repositoryManager = $repositoryManager; + $this->locker = $locker; + $this->installationManager = $installationManager; + $this->eventDispatcher = $eventDispatcher; + $this->autoloadGenerator = $autoloadGenerator; + } + + /** + * Run installation (or update) + * + * @throws \Exception + * @return int 0 on success or a positive error code on failure + */ + public function run() + { + // Disable GC to save CPU cycles, as the dependency solver can create hundreds of thousands + // of PHP objects, the GC can spend quite some time walking the tree of references looking + // for stuff to collect while there is nothing to collect. This slows things down dramatically + // and turning it off results in much better performance. Do not try this at home however. + gc_collect_cycles(); + gc_disable(); + + // Force update if there is no lock file present + if (!$this->update && !$this->locker->isLocked()) { + $this->update = true; + } + + if ($this->dryRun) { + $this->verbose = true; + $this->runScripts = false; + $this->executeOperations = false; + $this->writeLock = false; + $this->dumpAutoloader = false; + $this->installationManager->addInstaller(new NoopInstaller); + $this->mockLocalRepositories($this->repositoryManager); + } + + if ($this->runScripts) { + $devMode = (int) $this->devMode; + putenv("COMPOSER_DEV_MODE=$devMode"); + + // dispatch pre event + $eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD; + $this->eventDispatcher->dispatchScript($eventName, $this->devMode); + } + + $this->downloadManager->setPreferSource($this->preferSource); + $this->downloadManager->setPreferDist($this->preferDist); + + // create installed repo, this contains all local packages + platform packages (php & extensions) + $localRepo = $this->repositoryManager->getLocalRepository(); + if ($this->update) { + $platformOverrides = $this->config->get('platform') ?: array(); + } else { + $platformOverrides = $this->locker->getPlatformOverrides(); + } + $platformRepo = new PlatformRepository(array(), $platformOverrides); + $installedRepo = $this->createInstalledRepo($localRepo, $platformRepo); + + $aliases = $this->getRootAliases(); + $this->aliasPlatformPackages($platformRepo, $aliases); + + if (!$this->suggestedPackagesReporter) { + $this->suggestedPackagesReporter = new SuggestedPackagesReporter($this->io); + } + + try { + list($res, $devPackages) = $this->doInstall($localRepo, $installedRepo, $platformRepo, $aliases); + if ($res !== 0) { + return $res; + } + } catch (\Exception $e) { + if ($this->executeOperations) { + $this->installationManager->notifyInstalls($this->io); + } + + throw $e; + } + if ($this->executeOperations) { + $this->installationManager->notifyInstalls($this->io); + } + + // output suggestions if we're in dev mode + if ($this->devMode && !$this->skipSuggest) { + $this->suggestedPackagesReporter->output($installedRepo); + } + + # Find abandoned packages and warn user + foreach ($localRepo->getPackages() as $package) { + if (!$package instanceof CompletePackage || !$package->isAbandoned()) { + continue; + } + + $replacement = is_string($package->getReplacementPackage()) + ? 'Use ' . $package->getReplacementPackage() . ' instead' + : 'No replacement was suggested'; + + $this->io->writeError( + sprintf( + "Package %s is abandoned, you should avoid using it. %s.", + $package->getPrettyName(), + $replacement + ) + ); + } + + // write lock + if ($this->update && $this->writeLock) { + $localRepo->reload(); + + $platformReqs = $this->extractPlatformRequirements($this->package->getRequires()); + $platformDevReqs = $this->extractPlatformRequirements($this->package->getDevRequires()); + + $updatedLock = $this->locker->setLockData( + array_diff($localRepo->getCanonicalPackages(), $devPackages), + $devPackages, + $platformReqs, + $platformDevReqs, + $aliases, + $this->package->getMinimumStability(), + $this->package->getStabilityFlags(), + $this->preferStable || $this->package->getPreferStable(), + $this->preferLowest, + $this->config->get('platform') ?: array() + ); + if ($updatedLock) { + $this->io->writeError('Writing lock file'); + } + } + + if ($this->dumpAutoloader) { + // write autoloader + if ($this->optimizeAutoloader) { + $this->io->writeError('Generating optimized autoload files'); + } else { + $this->io->writeError('Generating autoload files'); + } + + $this->autoloadGenerator->setDevMode($this->devMode); + $this->autoloadGenerator->setClassMapAuthoritative($this->classMapAuthoritative); + $this->autoloadGenerator->setApcu($this->apcuAutoloader); + $this->autoloadGenerator->setRunScripts($this->runScripts); + $this->autoloadGenerator->dump($this->config, $localRepo, $this->package, $this->installationManager, 'composer', $this->optimizeAutoloader); + } + + if ($this->executeOperations) { + // force binaries re-generation in case they are missing + foreach ($localRepo->getPackages() as $package) { + $this->installationManager->ensureBinariesPresence($package); + } + + $vendorDir = $this->config->get('vendor-dir'); + if (is_dir($vendorDir)) { + // suppress errors as this fails sometimes on OSX for no apparent reason + // see https://github.com/composer/composer/issues/4070#issuecomment-129792748 + @touch($vendorDir); + } + } + + if ($this->runScripts) { + // dispatch post event + $eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD; + $this->eventDispatcher->dispatchScript($eventName, $this->devMode); + } + + // re-enable GC except on HHVM which triggers a warning here + if (!defined('HHVM_VERSION')) { + gc_enable(); + } + + return 0; + } + + /** + * @param RepositoryInterface $localRepo + * @param RepositoryInterface $installedRepo + * @param PlatformRepository $platformRepo + * @param array $aliases + * @return array [int, PackageInterfaces[]|null] with the exit code and an array of dev packages on update, or null on install + */ + protected function doInstall($localRepo, $installedRepo, $platformRepo, $aliases) + { + // init vars + $lockedRepository = null; + $repositories = null; + + // initialize locked repo if we are installing from lock or in a partial update + // and a lock file is present as we need to force install non-whitelisted lock file + // packages in that case + if (!$this->update || (!empty($this->updateWhitelist) && $this->locker->isLocked())) { + try { + $lockedRepository = $this->locker->getLockedRepository($this->devMode); + } catch (\RuntimeException $e) { + // if there are dev requires, then we really can not install + if ($this->package->getDevRequires()) { + throw $e; + } + // no require-dev in composer.json and the lock file was created with no dev info, so skip them + $lockedRepository = $this->locker->getLockedRepository(); + } + } + + $this->whitelistUpdateDependencies( + $lockedRepository ?: $localRepo, + $this->package->getRequires(), + $this->package->getDevRequires() + ); + + $this->io->writeError('Loading composer repositories with package information'); + + // creating repository pool + $policy = $this->createPolicy(); + $pool = $this->createPool($this->update ? null : $lockedRepository); + $pool->addRepository($installedRepo, $aliases); + if ($this->update) { + $repositories = $this->repositoryManager->getRepositories(); + foreach ($repositories as $repository) { + $pool->addRepository($repository, $aliases); + } + } + // Add the locked repository after the others in case we are doing a + // partial update so missing packages can be found there still. + // For installs from lock it's the only one added so it is first + if ($lockedRepository) { + $pool->addRepository($lockedRepository, $aliases); + } + + // creating requirements request + $request = $this->createRequest($this->package, $platformRepo); + + if ($this->update) { + // remove unstable packages from the localRepo if they don't match the current stability settings + $removedUnstablePackages = array(); + foreach ($localRepo->getPackages() as $package) { + if ( + !$pool->isPackageAcceptable($package->getNames(), $package->getStability()) + && $this->installationManager->isPackageInstalled($localRepo, $package) + ) { + $removedUnstablePackages[$package->getName()] = true; + $request->remove($package->getName(), new Constraint('=', $package->getVersion())); + } + } + + $this->io->writeError('Updating dependencies'.($this->devMode ? ' (including require-dev)' : '').''); + + $request->updateAll(); + + $links = array_merge($this->package->getRequires(), $this->package->getDevRequires()); + + foreach ($links as $link) { + $request->install($link->getTarget(), $link->getConstraint()); + } + + // if the updateWhitelist is enabled, packages not in it are also fixed + // to the version specified in the lock, or their currently installed version + if ($this->updateWhitelist) { + $currentPackages = $this->getCurrentPackages($installedRepo); + + // collect packages to fixate from root requirements as well as installed packages + $candidates = array(); + foreach ($links as $link) { + $candidates[$link->getTarget()] = true; + $rootRequires[$link->getTarget()] = $link; + } + foreach ($currentPackages as $package) { + $candidates[$package->getName()] = true; + } + + // fix them to the version in lock (or currently installed) if they are not updateable + foreach ($candidates as $candidate => $dummy) { + foreach ($currentPackages as $curPackage) { + if ($curPackage->getName() === $candidate) { + if (!$this->isUpdateable($curPackage) && !isset($removedUnstablePackages[$curPackage->getName()])) { + $constraint = new Constraint('=', $curPackage->getVersion()); + $description = $this->locker->isLocked() ? '(locked at' : '(installed at'; + $requiredAt = isset($rootRequires[$candidate]) ? ', required as ' . $rootRequires[$candidate]->getPrettyConstraint() : ''; + $constraint->setPrettyString($description . ' ' . $curPackage->getPrettyVersion() . $requiredAt . ')'); + $request->install($curPackage->getName(), $constraint); + } + break; + } + } + } + } + } else { + $this->io->writeError('Installing dependencies'.($this->devMode ? ' (including require-dev)' : '').' from lock file'); + + if (!$this->locker->isFresh()) { + $this->io->writeError('Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update `.', true, IOInterface::QUIET); + } + + foreach ($lockedRepository->getPackages() as $package) { + $version = $package->getVersion(); + if (isset($aliases[$package->getName()][$version])) { + $version = $aliases[$package->getName()][$version]['alias_normalized']; + } + $constraint = new Constraint('=', $version); + $constraint->setPrettyString($package->getPrettyVersion()); + $request->install($package->getName(), $constraint); + } + + foreach ($this->locker->getPlatformRequirements($this->devMode) as $link) { + $request->install($link->getTarget(), $link->getConstraint()); + } + } + + // force dev packages to have the latest links if we update or install from a (potentially new) lock + $this->processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, 'force-links'); + + // solve dependencies + $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_DEPENDENCIES_SOLVING, $this->devMode, $policy, $pool, $installedRepo, $request); + $solver = new Solver($policy, $pool, $installedRepo, $this->io); + try { + $operations = $solver->solve($request, $this->ignorePlatformReqs); + $ruleSetSize = $solver->getRuleSetSize(); + $solver = null; + } catch (SolverProblemsException $e) { + $this->io->writeError('Your requirements could not be resolved to an installable set of packages.', true, IOInterface::QUIET); + $this->io->writeError($e->getMessage()); + if ($this->update && !$this->devMode) { + $this->io->writeError('Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.', true, IOInterface::QUIET); + } + + return array(max(1, $e->getCode()), array()); + } + + // force dev packages to be updated if we update or install from a (potentially new) lock + $operations = $this->processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, 'force-updates', $operations); + + $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::POST_DEPENDENCIES_SOLVING, $this->devMode, $policy, $pool, $installedRepo, $request, $operations); + + $this->io->writeError("Analyzed ".count($pool)." packages to resolve dependencies", true, IOInterface::VERBOSE); + $this->io->writeError("Analyzed ".$ruleSetSize." rules to resolve dependencies", true, IOInterface::VERBOSE); + + // execute operations + if (!$operations) { + $this->io->writeError('Nothing to install or update'); + } + + $operations = $this->movePluginsToFront($operations); + $operations = $this->moveUninstallsToFront($operations); + + // extract dev packages and mark them to be skipped if it's a --no-dev install or update + // we also force them to be uninstalled if they are present in the local repo + if ($this->update) { + $devPackages = $this->extractDevPackages($operations, $localRepo, $platformRepo, $aliases); + if (!$this->devMode) { + $operations = $this->filterDevPackageOperations($devPackages, $operations, $localRepo); + } + } else { + $devPackages = null; + } + + if ($operations) { + $installs = $updates = $uninstalls = array(); + foreach ($operations as $operation) { + if ($operation instanceof InstallOperation) { + $installs[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion(); + } elseif ($operation instanceof UpdateOperation) { + $updates[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion(); + } elseif ($operation instanceof UninstallOperation) { + $uninstalls[] = $operation->getPackage()->getPrettyName(); + } + } + + $this->io->writeError(sprintf( + "Package operations: %d install%s, %d update%s, %d removal%s", + count($installs), + 1 === count($installs) ? '' : 's', + count($updates), + 1 === count($updates) ? '' : 's', + count($uninstalls), + 1 === count($uninstalls) ? '' : 's' + )); + if ($installs) { + $this->io->writeError("Installs: ".implode(', ', $installs), true, IOInterface::VERBOSE); + } + if ($updates) { + $this->io->writeError("Updates: ".implode(', ', $updates), true, IOInterface::VERBOSE); + } + if ($uninstalls) { + $this->io->writeError("Removals: ".implode(', ', $uninstalls), true, IOInterface::VERBOSE); + } + } + + foreach ($operations as $operation) { + // collect suggestions + $jobType = $operation->getJobType(); + if ('install' === $jobType) { + $this->suggestedPackagesReporter->addSuggestionsFromPackage($operation->getPackage()); + } + + // updating, force dev packages' references if they're in root package refs + if ($this->update) { + $package = null; + if ('update' === $jobType) { + $package = $operation->getTargetPackage(); + } elseif ('install' === $jobType) { + $package = $operation->getPackage(); + } + if ($package && $package->isDev()) { + $references = $this->package->getReferences(); + if (isset($references[$package->getName()])) { + $this->updateInstallReferences($package, $references[$package->getName()]); + } + } + if ('update' === $jobType) { + $targetPackage = $operation->getTargetPackage(); + if ($targetPackage->isDev()) { + $initialPackage = $operation->getInitialPackage(); + if ($targetPackage->getVersion() === $initialPackage->getVersion() + && (!$targetPackage->getSourceReference() || $targetPackage->getSourceReference() === $initialPackage->getSourceReference()) + && (!$targetPackage->getDistReference() || $targetPackage->getDistReference() === $initialPackage->getDistReference()) + ) { + $this->io->writeError(' - Skipping update of ' . $targetPackage->getPrettyName() . ' to the same reference-locked version', true, IOInterface::DEBUG); + $this->io->writeError('', true, IOInterface::DEBUG); + + continue; + } + } + } + } + + $event = 'Composer\Installer\PackageEvents::PRE_PACKAGE_'.strtoupper($jobType); + if (defined($event) && $this->runScripts) { + $this->eventDispatcher->dispatchPackageEvent(constant($event), $this->devMode, $policy, $pool, $installedRepo, $request, $operations, $operation); + } + + // output non-alias ops when not executing operations (i.e. dry run), output alias ops in debug verbosity + if (!$this->executeOperations && false === strpos($operation->getJobType(), 'Alias')) { + $this->io->writeError(' - ' . $operation); + } elseif ($this->io->isDebug() && false !== strpos($operation->getJobType(), 'Alias')) { + $this->io->writeError(' - ' . $operation); + } + + $this->installationManager->execute($localRepo, $operation); + + // output reasons why the operation was ran, only for install/update operations + if ($this->verbose && $this->io->isVeryVerbose() && in_array($jobType, array('install', 'update'))) { + $reason = $operation->getReason(); + if ($reason instanceof Rule) { + switch ($reason->getReason()) { + case Rule::RULE_JOB_INSTALL: + $this->io->writeError(' REASON: Required by the root package: '.$reason->getPrettyString($pool)); + $this->io->writeError(''); + break; + case Rule::RULE_PACKAGE_REQUIRES: + $this->io->writeError(' REASON: '.$reason->getPrettyString($pool)); + $this->io->writeError(''); + break; + } + } + } + + if ($this->executeOperations || $this->writeLock) { + $localRepo->write(); + } + + $event = 'Composer\Installer\PackageEvents::POST_PACKAGE_'.strtoupper($jobType); + if (defined($event) && $this->runScripts) { + $this->eventDispatcher->dispatchPackageEvent(constant($event), $this->devMode, $policy, $pool, $installedRepo, $request, $operations, $operation); + } + } + + if ($this->executeOperations) { + // force source/dist urls to be updated for all packages + $this->processPackageUrls($pool, $policy, $localRepo, $repositories); + $localRepo->write(); + } + + return array(0, $devPackages); + } + + /** + * Extracts the dev packages out of the localRepo + * + * This works by faking the operations so we can see what the dev packages + * would be at the end of the operation execution. This lets us then remove + * the dev packages from the list of operations accordingly if we are in a + * --no-dev install or update. + * + * @return array + */ + private function extractDevPackages(array $operations, RepositoryInterface $localRepo, PlatformRepository $platformRepo, array $aliases) + { + if (!$this->package->getDevRequires()) { + return array(); + } + + // fake-apply all operations to this clone of the local repo so we see the complete set of package we would end up with + $tempLocalRepo = clone $localRepo; + foreach ($operations as $operation) { + switch ($operation->getJobType()) { + case 'install': + case 'markAliasInstalled': + if (!$tempLocalRepo->hasPackage($operation->getPackage())) { + $tempLocalRepo->addPackage(clone $operation->getPackage()); + } + break; + + case 'uninstall': + case 'markAliasUninstalled': + $tempLocalRepo->removePackage($operation->getPackage()); + break; + + case 'update': + $tempLocalRepo->removePackage($operation->getInitialPackage()); + if (!$tempLocalRepo->hasPackage($operation->getTargetPackage())) { + $tempLocalRepo->addPackage(clone $operation->getTargetPackage()); + } + break; + + default: + throw new \LogicException('Unknown type: '.$operation->getJobType()); + } + } + + // we have to reload the local repo to handle aliases properly + // but as it is not persisted on disk we use a loader/dumper + // to reload it in memory + $localRepo = new InstalledArrayRepository(array()); + $loader = new ArrayLoader(null, true); + $dumper = new ArrayDumper(); + foreach ($tempLocalRepo->getCanonicalPackages() as $pkg) { + $localRepo->addPackage($loader->load($dumper->dump($pkg))); + } + unset($tempLocalRepo, $loader, $dumper); + + $policy = $this->createPolicy(); + $pool = $this->createPool(); + $installedRepo = $this->createInstalledRepo($localRepo, $platformRepo); + $pool->addRepository($installedRepo, $aliases); + + // creating requirements request without dev requirements + $request = $this->createRequest($this->package, $platformRepo); + $request->updateAll(); + foreach ($this->package->getRequires() as $link) { + $request->install($link->getTarget(), $link->getConstraint()); + } + + // solve deps to see which get removed + $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_DEPENDENCIES_SOLVING, false, $policy, $pool, $installedRepo, $request); + $solver = new Solver($policy, $pool, $installedRepo, $this->io); + $ops = $solver->solve($request, $this->ignorePlatformReqs); + $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::POST_DEPENDENCIES_SOLVING, false, $policy, $pool, $installedRepo, $request, $ops); + + $devPackages = array(); + foreach ($ops as $op) { + if ($op->getJobType() === 'uninstall') { + $devPackages[] = $op->getPackage(); + } + } + + return $devPackages; + } + + /** + * @return OperationInterface[] filtered operations, dev packages are uninstalled and all operations on them ignored + */ + private function filterDevPackageOperations(array $devPackages, array $operations, RepositoryInterface $localRepo) + { + $finalOps = array(); + $packagesToSkip = array(); + foreach ($devPackages as $pkg) { + $packagesToSkip[$pkg->getName()] = true; + if ($installedDevPkg = $localRepo->findPackage($pkg->getName(), '*')) { + if ($installedDevPkg instanceof AliasPackage) { + $finalOps[] = new MarkAliasUninstalledOperation($installedDevPkg, 'non-dev install removing it'); + $installedDevPkg = $installedDevPkg->getAliasOf(); + } + $finalOps[] = new UninstallOperation($installedDevPkg, 'non-dev install removing it'); + } + } + + // skip operations applied on dev packages + foreach ($operations as $op) { + $package = $op->getJobType() === 'update' ? $op->getTargetPackage() : $op->getPackage(); + if (isset($packagesToSkip[$package->getName()])) { + continue; + } + + $finalOps[] = $op; + } + + return $finalOps; + } + + /** + * Workaround: if your packages depend on plugins, we must be sure + * that those are installed / updated first; else it would lead to packages + * being installed multiple times in different folders, when running Composer + * twice. + * + * While this does not fix the root-causes of https://github.com/composer/composer/issues/1147, + * it at least fixes the symptoms and makes usage of composer possible (again) + * in such scenarios. + * + * @param OperationInterface[] $operations + * @return OperationInterface[] reordered operation list + */ + private function movePluginsToFront(array $operations) + { + $pluginsNoDeps = array(); + $pluginsWithDeps = array(); + $pluginRequires = array(); + + foreach (array_reverse($operations, true) as $idx => $op) { + if ($op instanceof InstallOperation) { + $package = $op->getPackage(); + } elseif ($op instanceof UpdateOperation) { + $package = $op->getTargetPackage(); + } else { + continue; + } + + // is this package a plugin? + $isPlugin = $package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer'; + + // is this a plugin or a dependency of a plugin? + if ($isPlugin || count(array_intersect($package->getNames(), $pluginRequires))) { + // get the package's requires, but filter out any platform requirements or 'composer-plugin-api' + $requires = array_filter(array_keys($package->getRequires()), function ($req) { + return $req !== 'composer-plugin-api' && !preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $req); + }); + + // is this a plugin with no meaningful dependencies? + if ($isPlugin && !count($requires)) { + // plugins with no dependencies go to the very front + array_unshift($pluginsNoDeps, $op); + } else { + // capture the requirements for this package so those packages will be moved up as well + $pluginRequires = array_merge($pluginRequires, $requires); + // move the operation to the front + array_unshift($pluginsWithDeps, $op); + } + + unset($operations[$idx]); + } + } + + return array_merge($pluginsNoDeps, $pluginsWithDeps, $operations); + } + + /** + * Removals of packages should be executed before installations in + * case two packages resolve to the same path (due to custom installers) + * + * @param OperationInterface[] $operations + * @return OperationInterface[] reordered operation list + */ + private function moveUninstallsToFront(array $operations) + { + $uninstOps = array(); + foreach ($operations as $idx => $op) { + if ($op instanceof UninstallOperation) { + $uninstOps[] = $op; + unset($operations[$idx]); + } + } + + return array_merge($uninstOps, $operations); + } + + /** + * @return RepositoryInterface + */ + private function createInstalledRepo(RepositoryInterface $localRepo, PlatformRepository $platformRepo) + { + // clone root package to have one in the installed repo that does not require anything + // we don't want it to be uninstallable, but its requirements should not conflict + // with the lock file for example + $installedRootPackage = clone $this->package; + $installedRootPackage->setRequires(array()); + $installedRootPackage->setDevRequires(array()); + + $repos = array( + $localRepo, + new InstalledArrayRepository(array($installedRootPackage)), + $platformRepo, + ); + $installedRepo = new CompositeRepository($repos); + if ($this->additionalInstalledRepository) { + $installedRepo->addRepository($this->additionalInstalledRepository); + } + + return $installedRepo; + } + + /** + * @param RepositoryInterface|null $lockedRepository + * @return Pool + */ + private function createPool(RepositoryInterface $lockedRepository = null) + { + if ($this->update) { + $minimumStability = $this->package->getMinimumStability(); + $stabilityFlags = $this->package->getStabilityFlags(); + + $requires = array_merge($this->package->getRequires(), $this->package->getDevRequires()); + } else { + $minimumStability = $this->locker->getMinimumStability(); + $stabilityFlags = $this->locker->getStabilityFlags(); + + $requires = array(); + foreach ($lockedRepository->getPackages() as $package) { + $constraint = new Constraint('=', $package->getVersion()); + $constraint->setPrettyString($package->getPrettyVersion()); + $requires[$package->getName()] = $constraint; + } + } + + $rootConstraints = array(); + foreach ($requires as $req => $constraint) { + // skip platform requirements from the root package to avoid filtering out existing platform packages + if ($this->ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $req)) { + continue; + } + if ($constraint instanceof Link) { + $rootConstraints[$req] = $constraint->getConstraint(); + } else { + $rootConstraints[$req] = $constraint; + } + } + + return new Pool($minimumStability, $stabilityFlags, $rootConstraints); + } + + /** + * @return DefaultPolicy + */ + private function createPolicy() + { + $preferStable = null; + $preferLowest = null; + if (!$this->update) { + $preferStable = $this->locker->getPreferStable(); + $preferLowest = $this->locker->getPreferLowest(); + } + // old lock file without prefer stable/lowest will return null + // so in this case we use the composer.json info + if (null === $preferStable) { + $preferStable = $this->preferStable || $this->package->getPreferStable(); + } + if (null === $preferLowest) { + $preferLowest = $this->preferLowest; + } + + return new DefaultPolicy($preferStable, $preferLowest); + } + + /** + * @param RootPackageInterface $rootPackage + * @param PlatformRepository $platformRepo + * @return Request + */ + private function createRequest(RootPackageInterface $rootPackage, PlatformRepository $platformRepo) + { + $request = new Request(); + + $constraint = new Constraint('=', $rootPackage->getVersion()); + $constraint->setPrettyString($rootPackage->getPrettyVersion()); + $request->install($rootPackage->getName(), $constraint); + + $fixedPackages = $platformRepo->getPackages(); + if ($this->additionalInstalledRepository) { + $additionalFixedPackages = $this->additionalInstalledRepository->getPackages(); + $fixedPackages = array_merge($fixedPackages, $additionalFixedPackages); + } + + // fix the version of all platform packages + additionally installed packages + // to prevent the solver trying to remove or update those + $provided = $rootPackage->getProvides(); + foreach ($fixedPackages as $package) { + $constraint = new Constraint('=', $package->getVersion()); + $constraint->setPrettyString($package->getPrettyVersion()); + + // skip platform packages that are provided by the root package + if ($package->getRepository() !== $platformRepo + || !isset($provided[$package->getName()]) + || !$provided[$package->getName()]->getConstraint()->matches($constraint) + ) { + $request->fix($package->getName(), $constraint); + } + } + + return $request; + } + + /** + * @param WritableRepositoryInterface $localRepo + * @param Pool $pool + * @param PolicyInterface $policy + * @param array $repositories + * @param RepositoryInterface $installedRepo + * @param RepositoryInterface $lockedRepository + * @param string $task + * @param array|null $operations + * @return array + */ + private function processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, $task, array $operations = null) + { + if ($task === 'force-updates' && null === $operations) { + throw new \InvalidArgumentException('Missing operations argument'); + } + if ($task === 'force-links') { + $operations = array(); + } + + if ($this->update && $this->updateWhitelist) { + $currentPackages = $this->getCurrentPackages($installedRepo); + } + + foreach ($localRepo->getCanonicalPackages() as $package) { + // skip non-dev packages + if (!$package->isDev()) { + continue; + } + + // skip packages that will be updated/uninstalled + foreach ($operations as $operation) { + if (('update' === $operation->getJobType() && $operation->getInitialPackage()->equals($package)) + || ('uninstall' === $operation->getJobType() && $operation->getPackage()->equals($package)) + ) { + continue 2; + } + } + + if ($this->update) { + // skip package if the whitelist is enabled and it is not in it + if ($this->updateWhitelist && !$this->isUpdateable($package)) { + // check if non-updateable packages are out of date compared to the lock file to ensure we don't corrupt it + foreach ($currentPackages as $curPackage) { + if ($curPackage->isDev() && $curPackage->getName() === $package->getName() && $curPackage->getVersion() === $package->getVersion()) { + if ($task === 'force-links') { + $package->setRequires($curPackage->getRequires()); + $package->setConflicts($curPackage->getConflicts()); + $package->setProvides($curPackage->getProvides()); + $package->setReplaces($curPackage->getReplaces()); + } elseif ($task === 'force-updates') { + if (($curPackage->getSourceReference() && $curPackage->getSourceReference() !== $package->getSourceReference()) + || ($curPackage->getDistReference() && $curPackage->getDistReference() !== $package->getDistReference()) + ) { + $operations[] = new UpdateOperation($package, $curPackage); + } + } + + break; + } + } + + continue; + } + + // find similar packages (name/version) in all repositories + $matches = $pool->whatProvides($package->getName(), new Constraint('=', $package->getVersion())); + foreach ($matches as $index => $match) { + // skip local packages + if (!in_array($match->getRepository(), $repositories, true)) { + unset($matches[$index]); + continue; + } + + // skip providers/replacers + if ($match->getName() !== $package->getName()) { + unset($matches[$index]); + continue; + } + + $matches[$index] = $match->getId(); + } + + // select preferred package according to policy rules + if ($matches && $matches = $policy->selectPreferredPackages($pool, array(), $matches)) { + $newPackage = $pool->literalToPackage($matches[0]); + + if ($task === 'force-links' && $newPackage) { + $package->setRequires($newPackage->getRequires()); + $package->setConflicts($newPackage->getConflicts()); + $package->setProvides($newPackage->getProvides()); + $package->setReplaces($newPackage->getReplaces()); + } + + if ( + $task === 'force-updates' + && $newPackage + && ( + ($newPackage->getSourceReference() && $newPackage->getSourceReference() !== $package->getSourceReference()) + || ($newPackage->getDistReference() && $newPackage->getDistReference() !== $package->getDistReference()) + ) + ) { + $operations[] = new UpdateOperation($package, $newPackage); + + continue; + } + } + + if ($task === 'force-updates') { + // force installed package to update to referenced version in root package if it does not match the installed version + $references = $this->package->getReferences(); + + if (isset($references[$package->getName()]) && $references[$package->getName()] !== $package->getSourceReference()) { + // changing the source ref to update to will be handled in the operations loop + $operations[] = new UpdateOperation($package, clone $package); + } + } + } else { + // force update to locked version if it does not match the installed version + foreach ($lockedRepository->findPackages($package->getName()) as $lockedPackage) { + if ($lockedPackage->isDev() && $lockedPackage->getVersion() === $package->getVersion()) { + if ($task === 'force-links') { + $package->setRequires($lockedPackage->getRequires()); + $package->setConflicts($lockedPackage->getConflicts()); + $package->setProvides($lockedPackage->getProvides()); + $package->setReplaces($lockedPackage->getReplaces()); + } elseif ($task === 'force-updates') { + if (($lockedPackage->getSourceReference() && $lockedPackage->getSourceReference() !== $package->getSourceReference()) + || ($lockedPackage->getDistReference() && $lockedPackage->getDistReference() !== $package->getDistReference()) + ) { + $operations[] = new UpdateOperation($package, $lockedPackage); + } + } + + break; + } + } + } + } + + return $operations; + } + + /** + * Loads the most "current" list of packages that are installed meaning from lock ideally or from installed repo as fallback + * @param RepositoryInterface $installedRepo + * @return array + */ + private function getCurrentPackages($installedRepo) + { + if ($this->locker->isLocked()) { + try { + return $this->locker->getLockedRepository(true)->getPackages(); + } catch (\RuntimeException $e) { + // fetch only non-dev packages from lock if doing a dev update fails due to a previously incomplete lock file + return $this->locker->getLockedRepository()->getPackages(); + } + } + + return $installedRepo->getPackages(); + } + + /** + * @return array + */ + private function getRootAliases() + { + if ($this->update) { + $aliases = $this->package->getAliases(); + } else { + $aliases = $this->locker->getAliases(); + } + + $normalizedAliases = array(); + + foreach ($aliases as $alias) { + $normalizedAliases[$alias['package']][$alias['version']] = array( + 'alias' => $alias['alias'], + 'alias_normalized' => $alias['alias_normalized'], + ); + } + + return $normalizedAliases; + } + + /** + * @param Pool $pool + * @param PolicyInterface $policy + * @param WritableRepositoryInterface $localRepo + * @param array $repositories + */ + private function processPackageUrls($pool, $policy, $localRepo, $repositories) + { + if (!$this->update) { + return; + } + + $rootRefs = $this->package->getReferences(); + + foreach ($localRepo->getCanonicalPackages() as $package) { + // find similar packages (name/version) in all repositories + $matches = $pool->whatProvides($package->getName(), new Constraint('=', $package->getVersion())); + foreach ($matches as $index => $match) { + // skip local packages + if (!in_array($match->getRepository(), $repositories, true)) { + unset($matches[$index]); + continue; + } + + // skip providers/replacers + if ($match->getName() !== $package->getName()) { + unset($matches[$index]); + continue; + } + + $matches[$index] = $match->getId(); + } + + // select preferred package according to policy rules + if ($matches && $matches = $policy->selectPreferredPackages($pool, array(), $matches)) { + $newPackage = $pool->literalToPackage($matches[0]); + + // update the dist and source URLs + $sourceUrl = $package->getSourceUrl(); + $newSourceUrl = $newPackage->getSourceUrl(); + $newReference = $newPackage->getSourceReference(); + + if ($package->isDev() && isset($rootRefs[$package->getName()]) && $package->getSourceReference() === $rootRefs[$package->getName()]) { + $newReference = $rootRefs[$package->getName()]; + } + + $this->updatePackageUrl($package, $newSourceUrl, $newPackage->getSourceType(), $newReference, $newPackage->getDistUrl(), $newPackage->getDistType(), $newPackage->getDistSha1Checksum()); + + if ($package instanceof CompletePackage && $newPackage instanceof CompletePackage) { + $package->setAbandoned($newPackage->getReplacementPackage() ?: $newPackage->isAbandoned()); + } + + $package->setDistMirrors($newPackage->getDistMirrors()); + $package->setSourceMirrors($newPackage->getSourceMirrors()); + $package->setTransportOptions($newPackage->getTransportOptions()); + } + } + } + + private function updatePackageUrl(PackageInterface $package, $sourceUrl, $sourceType, $sourceReference, $distUrl, $distType, $distShaSum) + { + $oldSourceRef = $package->getSourceReference(); + + if ($package->getSourceUrl() !== $sourceUrl) { + $package->setSourceType($sourceType); + $package->setSourceUrl($sourceUrl); + $package->setSourceReference($sourceReference); + } + + // only update dist url for github/bitbucket/gitlab dists as they use a combination of dist url + dist reference to install + // but for other urls this is ambiguous and could result in bad outcomes + if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $distUrl)) { + $package->setDistUrl($distUrl); + $package->setDistType($distType); + $package->setDistSha1Checksum($distShaSum); + $this->updateInstallReferences($package, $sourceReference); + } + + if ($this->updateWhitelist && !$this->isUpdateable($package)) { + $this->updateInstallReferences($package, $oldSourceRef); + } + } + + private function updateInstallReferences(PackageInterface $package, $reference) + { + if (!$reference) { + return; + } + + $package->setSourceReference($reference); + + if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $package->getDistUrl())) { + $package->setDistReference($reference); + $package->setDistUrl(preg_replace('{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i', $reference, $package->getDistUrl())); + } elseif ($package->getDistReference()) { // update the dist reference if there was one, but if none was provided ignore it + $package->setDistReference($reference); + } + } + + /** + * @param PlatformRepository $platformRepo + * @param array $aliases + */ + private function aliasPlatformPackages(PlatformRepository $platformRepo, $aliases) + { + foreach ($aliases as $package => $versions) { + foreach ($versions as $version => $alias) { + $packages = $platformRepo->findPackages($package, $version); + foreach ($packages as $package) { + $aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']); + $aliasPackage->setRootPackageAlias(true); + $platformRepo->addPackage($aliasPackage); + } + } + } + } + + /** + * @param PackageInterface $package + * @return bool + */ + private function isUpdateable(PackageInterface $package) + { + if (!$this->updateWhitelist) { + throw new \LogicException('isUpdateable should only be called when a whitelist is present'); + } + + foreach ($this->updateWhitelist as $whiteListedPattern => $void) { + $patternRegexp = BasePackage::packageNameToRegexp($whiteListedPattern); + if (preg_match($patternRegexp, $package->getName())) { + return true; + } + } + + return false; + } + + /** + * @param array $links + * @return array + */ + private function extractPlatformRequirements($links) + { + $platformReqs = array(); + foreach ($links as $link) { + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) { + $platformReqs[$link->getTarget()] = $link->getPrettyConstraint(); + } + } + + return $platformReqs; + } + + /** + * Adds all dependencies of the update whitelist to the whitelist, too. + * + * Packages which are listed as requirements in the root package will be + * skipped including their dependencies, unless they are listed in the + * update whitelist themselves or $whitelistAllDependencies is true. + * + * @param RepositoryInterface $localOrLockRepo Use the locked repo if available, otherwise installed repo will do + * As we want the most accurate package list to work with, and installed + * repo might be empty but locked repo will always be current. + * @param array $rootRequires An array of links to packages in require of the root package + * @param array $rootDevRequires An array of links to packages in require-dev of the root package + */ + private function whitelistUpdateDependencies($localOrLockRepo, array $rootRequires, array $rootDevRequires) + { + if (!$this->updateWhitelist) { + return; + } + + $rootRequires = array_merge($rootRequires, $rootDevRequires); + + $skipPackages = array(); + if (!$this->whitelistAllDependencies) { + foreach ($rootRequires as $require) { + $skipPackages[$require->getTarget()] = true; + } + } + + $pool = new Pool('dev'); + $pool->addRepository($localOrLockRepo); + + $seen = array(); + + $rootRequiredPackageNames = array_keys($rootRequires); + + foreach ($this->updateWhitelist as $packageName => $void) { + $packageQueue = new \SplQueue; + $nameMatchesRequiredPackage = false; + + $depPackages = $pool->whatProvides($packageName); + $matchesByPattern = array(); + // check if the name is a glob pattern that did not match directly + if (empty($depPackages)) { + // add any installed package matching the whitelisted name/pattern + $whitelistPatternSearchRegexp = BasePackage::packageNameToRegexp($packageName, '^%s$'); + foreach ($localOrLockRepo->search($whitelistPatternSearchRegexp) as $installedPackage) { + $matchesByPattern[] = $pool->whatProvides($installedPackage['name']); + } + + // add root requirements which match the whitelisted name/pattern + $whitelistPatternRegexp = BasePackage::packageNameToRegexp($packageName); + foreach ($rootRequiredPackageNames as $rootRequiredPackageName) { + if (preg_match($whitelistPatternRegexp, $rootRequiredPackageName)) { + $nameMatchesRequiredPackage = true; + break; + } + } + } + + if (!empty($matchesByPattern)) { + $depPackages = array_merge($depPackages, call_user_func_array('array_merge', $matchesByPattern)); + } + + if (count($depPackages) == 0 && !$nameMatchesRequiredPackage && !in_array($packageName, array('nothing', 'lock', 'mirrors'))) { + $this->io->writeError('Package "' . $packageName . '" listed for update is not installed. Ignoring.'); + } + + foreach ($depPackages as $depPackage) { + $packageQueue->enqueue($depPackage); + } + + while (!$packageQueue->isEmpty()) { + $package = $packageQueue->dequeue(); + if (isset($seen[$package->getId()])) { + continue; + } + + $seen[$package->getId()] = true; + $this->updateWhitelist[$package->getName()] = true; + + if (!$this->whitelistDependencies && !$this->whitelistAllDependencies) { + continue; + } + + $requires = $package->getRequires(); + + foreach ($requires as $require) { + $requirePackages = $pool->whatProvides($require->getTarget()); + + foreach ($requirePackages as $requirePackage) { + if (isset($this->updateWhitelist[$requirePackage->getName()])) { + continue; + } + + if (isset($skipPackages[$requirePackage->getName()]) && !preg_match(BasePackage::packageNameToRegexp($packageName), $requirePackage->getName())) { + $this->io->writeError('Dependency "' . $requirePackage->getName() . '" is also a root requirement, but is not explicitly whitelisted. Ignoring.'); + continue; + } + + $packageQueue->enqueue($requirePackage); + } + } + } + } + } + + /** + * Replace local repositories with InstalledArrayRepository instances + * + * This is to prevent any accidental modification of the existing repos on disk + * + * @param RepositoryManager $rm + */ + private function mockLocalRepositories(RepositoryManager $rm) + { + $packages = array(); + foreach ($rm->getLocalRepository()->getPackages() as $package) { + $packages[(string) $package] = clone $package; + } + foreach ($packages as $key => $package) { + if ($package instanceof AliasPackage) { + $alias = (string) $package->getAliasOf(); + $packages[$key] = new AliasPackage($packages[$alias], $package->getVersion(), $package->getPrettyVersion()); + } + } + $rm->setLocalRepository( + new InstalledArrayRepository($packages) + ); + } + + /** + * Create Installer + * + * @param IOInterface $io + * @param Composer $composer + * @return Installer + */ + public static function create(IOInterface $io, Composer $composer) + { + return new static( + $io, + $composer->getConfig(), + $composer->getPackage(), + $composer->getDownloadManager(), + $composer->getRepositoryManager(), + $composer->getLocker(), + $composer->getInstallationManager(), + $composer->getEventDispatcher(), + $composer->getAutoloadGenerator() + ); + } + + /** + * @param RepositoryInterface $additionalInstalledRepository + * @return $this + */ + public function setAdditionalInstalledRepository(RepositoryInterface $additionalInstalledRepository) + { + $this->additionalInstalledRepository = $additionalInstalledRepository; + + return $this; + } + + /** + * Whether to run in drymode or not + * + * @param bool $dryRun + * @return Installer + */ + public function setDryRun($dryRun = true) + { + $this->dryRun = (bool) $dryRun; + + return $this; + } + + /** + * Checks, if this is a dry run (simulation mode). + * + * @return bool + */ + public function isDryRun() + { + return $this->dryRun; + } + + /** + * prefer source installation + * + * @param bool $preferSource + * @return Installer + */ + public function setPreferSource($preferSource = true) + { + $this->preferSource = (bool) $preferSource; + + return $this; + } + + /** + * prefer dist installation + * + * @param bool $preferDist + * @return Installer + */ + public function setPreferDist($preferDist = true) + { + $this->preferDist = (bool) $preferDist; + + return $this; + } + + /** + * Whether or not generated autoloader are optimized + * + * @param bool $optimizeAutoloader + * @return Installer + */ + public function setOptimizeAutoloader($optimizeAutoloader = false) + { + $this->optimizeAutoloader = (bool) $optimizeAutoloader; + if (!$this->optimizeAutoloader) { + // Force classMapAuthoritative off when not optimizing the + // autoloader + $this->setClassMapAuthoritative(false); + } + + return $this; + } + + /** + * Whether or not generated autoloader considers the class map + * authoritative. + * + * @param bool $classMapAuthoritative + * @return Installer + */ + public function setClassMapAuthoritative($classMapAuthoritative = false) + { + $this->classMapAuthoritative = (bool) $classMapAuthoritative; + if ($this->classMapAuthoritative) { + // Force optimizeAutoloader when classmap is authoritative + $this->setOptimizeAutoloader(true); + } + + return $this; + } + + /** + * Whether or not generated autoloader considers APCu caching. + * + * @param bool $apcuAutoloader + * @return Installer + */ + public function setApcuAutoloader($apcuAutoloader = false) + { + $this->apcuAutoloader = (bool) $apcuAutoloader; + + return $this; + } + + /** + * update packages + * + * @param bool $update + * @return Installer + */ + public function setUpdate($update = true) + { + $this->update = (bool) $update; + + return $this; + } + + /** + * enables dev packages + * + * @param bool $devMode + * @return Installer + */ + public function setDevMode($devMode = true) + { + $this->devMode = (bool) $devMode; + + return $this; + } + + /** + * set whether to run autoloader or not + * + * This is disabled implicitly when enabling dryRun + * + * @param bool $dumpAutoloader + * @return Installer + */ + public function setDumpAutoloader($dumpAutoloader = true) + { + $this->dumpAutoloader = (bool) $dumpAutoloader; + + return $this; + } + + /** + * set whether to run scripts or not + * + * This is disabled implicitly when enabling dryRun + * + * @param bool $runScripts + * @return Installer + */ + public function setRunScripts($runScripts = true) + { + $this->runScripts = (bool) $runScripts; + + return $this; + } + + /** + * set the config instance + * + * @param Config $config + * @return Installer + */ + public function setConfig(Config $config) + { + $this->config = $config; + + return $this; + } + + /** + * run in verbose mode + * + * @param bool $verbose + * @return Installer + */ + public function setVerbose($verbose = true) + { + $this->verbose = (bool) $verbose; + + return $this; + } + + /** + * Checks, if running in verbose mode. + * + * @return bool + */ + public function isVerbose() + { + return $this->verbose; + } + + /** + * set ignore Platform Package requirements + * + * @param bool $ignorePlatformReqs + * @return Installer + */ + public function setIgnorePlatformRequirements($ignorePlatformReqs = false) + { + $this->ignorePlatformReqs = (bool) $ignorePlatformReqs; + + return $this; + } + + /** + * restrict the update operation to a few packages, all other packages + * that are already installed will be kept at their current version + * + * @param array $packages + * @return Installer + */ + public function setUpdateWhitelist(array $packages) + { + $this->updateWhitelist = array_flip(array_map('strtolower', $packages)); + + return $this; + } + + /** + * @deprecated use setWhitelistTransitiveDependencies instead + */ + public function setWhitelistDependencies($updateDependencies = true) + { + return $this->setWhitelistTransitiveDependencies($updateDependencies); + } + + /** + * Should dependencies of whitelisted packages (but not direct dependencies) be updated? + * + * This will NOT whitelist any dependencies that are also directly defined + * in the root package. + * + * @param bool $updateTransitiveDependencies + * @return Installer + */ + public function setWhitelistTransitiveDependencies($updateTransitiveDependencies = true) + { + $this->whitelistDependencies = (bool) $updateTransitiveDependencies; + + return $this; + } + + /** + * Should all dependencies of whitelisted packages be updated recursively? + * + * This will whitelist any dependencies of the whitelisted packages, including + * those defined in the root package. + * + * @param bool $updateAllDependencies + * @return Installer + */ + public function setWhitelistAllDependencies($updateAllDependencies = true) + { + $this->whitelistAllDependencies = (bool) $updateAllDependencies; + + return $this; + } + + /** + * Should packages be preferred in a stable version when updating? + * + * @param bool $preferStable + * @return Installer + */ + public function setPreferStable($preferStable = true) + { + $this->preferStable = (bool) $preferStable; + + return $this; + } + + /** + * Should packages be preferred in a lowest version when updating? + * + * @param bool $preferLowest + * @return Installer + */ + public function setPreferLowest($preferLowest = true) + { + $this->preferLowest = (bool) $preferLowest; + + return $this; + } + + /** + * Should the lock file be updated when updating? + * + * This is disabled implicitly when enabling dryRun + * + * @param bool $writeLock + * @return Installer + */ + public function setWriteLock($writeLock = true) + { + $this->writeLock = (bool) $writeLock; + + return $this; + } + + /** + * Should the operations (package install, update and removal) be executed on disk? + * + * This is disabled implicitly when enabling dryRun + * + * @param bool $executeOperations + * @return Installer + */ + public function setExecuteOperations($executeOperations = true) + { + $this->executeOperations = (bool) $executeOperations; + + return $this; + } + + /** + * Should suggestions be skipped? + * + * @param bool $skipSuggest + * @return Installer + */ + public function setSkipSuggest($skipSuggest = true) + { + $this->skipSuggest = (bool) $skipSuggest; + + return $this; + } + + /** + * Disables plugins. + * + * Call this if you want to ensure that third-party code never gets + * executed. The default is to automatically install, and execute + * custom third-party installers. + * + * @return Installer + */ + public function disablePlugins() + { + $this->installationManager->disablePlugins(); + + return $this; + } + + /** + * @param SuggestedPackagesReporter $suggestedPackagesReporter + * @return Installer + */ + public function setSuggestedPackagesReporter(SuggestedPackagesReporter $suggestedPackagesReporter) + { + $this->suggestedPackagesReporter = $suggestedPackagesReporter; + + return $this; + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php b/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php new file mode 100644 index 0000000..0a7b971 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php @@ -0,0 +1,214 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\IO\IOInterface; +use Composer\Package\PackageInterface; +use Composer\Util\Filesystem; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; +use Composer\Util\Silencer; + +/** + * Utility to handle installation of package "bin"/binaries + * + * @author Jordi Boggiano + * @author Konstantin Kudryashov + * @author Helmut Hummel + */ +class BinaryInstaller +{ + protected $binDir; + protected $binCompat; + protected $io; + protected $filesystem; + + /** + * @param IOInterface $io + * @param string $binDir + * @param string $binCompat + * @param Filesystem $filesystem + */ + public function __construct(IOInterface $io, $binDir, $binCompat, Filesystem $filesystem = null) + { + $this->binDir = $binDir; + $this->binCompat = $binCompat; + $this->io = $io; + $this->filesystem = $filesystem ?: new Filesystem(); + } + + public function installBinaries(PackageInterface $package, $installPath, $warnOnOverwrite = true) + { + $binaries = $this->getBinaries($package); + if (!$binaries) { + return; + } + foreach ($binaries as $bin) { + $binPath = $installPath.'/'.$bin; + if (!file_exists($binPath)) { + $this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': file not found in package'); + continue; + } + + // in case a custom installer returned a relative path for the + // $package, we can now safely turn it into a absolute path (as we + // already checked the binary's existence). The following helpers + // will require absolute paths to work properly. + $binPath = realpath($binPath); + + $this->initializeBinDir(); + $link = $this->binDir.'/'.basename($bin); + if (file_exists($link)) { + if (is_link($link)) { + // likely leftover from a previous install, make sure + // that the target is still executable in case this + // is a fresh install of the vendor. + Silencer::call('chmod', $link, 0777 & ~umask()); + } + if ($warnOnOverwrite) { + $this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': name conflicts with an existing file'); + } + continue; + } + + if ($this->binCompat === "auto") { + if (Platform::isWindows()) { + $this->installFullBinaries($binPath, $link, $bin, $package); + } else { + $this->installSymlinkBinaries($binPath, $link); + } + } elseif ($this->binCompat === "full") { + $this->installFullBinaries($binPath, $link, $bin, $package); + } + Silencer::call('chmod', $link, 0777 & ~umask()); + } + } + + public function removeBinaries(PackageInterface $package) + { + $this->initializeBinDir(); + + $binaries = $this->getBinaries($package); + if (!$binaries) { + return; + } + foreach ($binaries as $bin) { + $link = $this->binDir.'/'.basename($bin); + if (is_link($link) || file_exists($link)) { + $this->filesystem->unlink($link); + } + if (file_exists($link.'.bat')) { + $this->filesystem->unlink($link.'.bat'); + } + } + + // attempt removing the bin dir in case it is left empty + if (is_dir($this->binDir) && $this->filesystem->isDirEmpty($this->binDir)) { + Silencer::call('rmdir', $this->binDir); + } + } + + public static function determineBinaryCaller($bin) + { + if ('.bat' === substr($bin, -4) || '.exe' === substr($bin, -4)) { + return 'call'; + } + + $handle = fopen($bin, 'r'); + $line = fgets($handle); + fclose($handle); + if (preg_match('{^#!/(?:usr/bin/env )?(?:[^/]+/)*(.+)$}m', $line, $match)) { + return trim($match[1]); + } + + return 'php'; + } + + protected function getBinaries(PackageInterface $package) + { + return $package->getBinaries(); + } + + protected function installFullBinaries($binPath, $link, $bin, PackageInterface $package) + { + // add unixy support for cygwin and similar environments + if ('.bat' !== substr($binPath, -4)) { + $this->installUnixyProxyBinaries($binPath, $link); + @chmod($link, 0777 & ~umask()); + $link .= '.bat'; + if (file_exists($link)) { + $this->io->writeError(' Skipped installation of bin '.$bin.'.bat proxy for package '.$package->getName().': a .bat proxy was already installed'); + } + } + if (!file_exists($link)) { + file_put_contents($link, $this->generateWindowsProxyCode($binPath, $link)); + } + } + + protected function installSymlinkBinaries($binPath, $link) + { + if (!$this->filesystem->relativeSymlink($binPath, $link)) { + $this->installUnixyProxyBinaries($binPath, $link); + } + } + + protected function installUnixyProxyBinaries($binPath, $link) + { + file_put_contents($link, $this->generateUnixyProxyCode($binPath, $link)); + } + + protected function initializeBinDir() + { + $this->filesystem->ensureDirectoryExists($this->binDir); + $this->binDir = realpath($this->binDir); + } + + protected function generateWindowsProxyCode($bin, $link) + { + $binPath = $this->filesystem->findShortestPath($link, $bin); + $caller = self::determineBinaryCaller($bin); + + return "@ECHO OFF\r\n". + "setlocal DISABLEDELAYEDEXPANSION\r\n". + "SET BIN_TARGET=%~dp0/".trim(ProcessExecutor::escape($binPath), '"\'')."\r\n". + "{$caller} \"%BIN_TARGET%\" %*\r\n"; + } + + protected function generateUnixyProxyCode($bin, $link) + { + $binPath = $this->filesystem->findShortestPath($link, $bin); + + $binDir = ProcessExecutor::escape(dirname($binPath)); + $binFile = basename($binPath); + + $proxyCode = << /dev/null; cd $binDir && pwd) + +if [ -d /proc/cygdrive ]; then + case \$(which php) in + \$(readlink -n /proc/cygdrive)/*) + # We are in Cygwin using Windows php, so the path must be translated + dir=\$(cygpath -m "\$dir"); + ;; + esac +fi + +"\${dir}/$binFile" "\$@" + +PROXY; + + return $proxyCode; + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php b/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php new file mode 100644 index 0000000..2749ffa --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php @@ -0,0 +1,30 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Package\PackageInterface; + +/** + * Interface for the package installation manager that handle binary installation. + * + * @author Jordi Boggiano + */ +interface BinaryPresenceInterface +{ + /** + * Make sure binaries are installed for a given package. + * + * @param PackageInterface $package package instance + */ + public function ensureBinariesPresence(PackageInterface $package); +} diff --git a/vendor/composer/composer/src/Composer/Installer/InstallationManager.php b/vendor/composer/composer/src/Composer/Installer/InstallationManager.php new file mode 100644 index 0000000..9f50b59 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/InstallationManager.php @@ -0,0 +1,326 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\IO\IOInterface; +use Composer\Package\PackageInterface; +use Composer\Package\AliasPackage; +use Composer\Repository\RepositoryInterface; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\DependencyResolver\Operation\OperationInterface; +use Composer\DependencyResolver\Operation\InstallOperation; +use Composer\DependencyResolver\Operation\UpdateOperation; +use Composer\DependencyResolver\Operation\UninstallOperation; +use Composer\DependencyResolver\Operation\MarkAliasInstalledOperation; +use Composer\DependencyResolver\Operation\MarkAliasUninstalledOperation; +use Composer\Util\StreamContextFactory; + +/** + * Package operation manager. + * + * @author Konstantin Kudryashov + * @author Jordi Boggiano + * @author Nils Adermann + */ +class InstallationManager +{ + private $installers = array(); + private $cache = array(); + private $notifiablePackages = array(); + + public function reset() + { + $this->notifiablePackages = array(); + } + + /** + * Adds installer + * + * @param InstallerInterface $installer installer instance + */ + public function addInstaller(InstallerInterface $installer) + { + array_unshift($this->installers, $installer); + $this->cache = array(); + } + + /** + * Removes installer + * + * @param InstallerInterface $installer installer instance + */ + public function removeInstaller(InstallerInterface $installer) + { + if (false !== ($key = array_search($installer, $this->installers, true))) { + array_splice($this->installers, $key, 1); + $this->cache = array(); + } + } + + /** + * Disables plugins. + * + * We prevent any plugins from being instantiated by simply + * deactivating the installer for them. This ensure that no third-party + * code is ever executed. + */ + public function disablePlugins() + { + foreach ($this->installers as $i => $installer) { + if (!$installer instanceof PluginInstaller) { + continue; + } + + unset($this->installers[$i]); + } + } + + /** + * Returns installer for a specific package type. + * + * @param string $type package type + * + * @throws \InvalidArgumentException if installer for provided type is not registered + * @return InstallerInterface + */ + public function getInstaller($type) + { + $type = strtolower($type); + + if (isset($this->cache[$type])) { + return $this->cache[$type]; + } + + foreach ($this->installers as $installer) { + if ($installer->supports($type)) { + return $this->cache[$type] = $installer; + } + } + + throw new \InvalidArgumentException('Unknown installer type: '.$type); + } + + /** + * Checks whether provided package is installed in one of the registered installers. + * + * @param InstalledRepositoryInterface $repo repository in which to check + * @param PackageInterface $package package instance + * + * @return bool + */ + public function isPackageInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) + { + if ($package instanceof AliasPackage) { + return $repo->hasPackage($package) && $this->isPackageInstalled($repo, $package->getAliasOf()); + } + + return $this->getInstaller($package->getType())->isInstalled($repo, $package); + } + + /** + * Install binary for the given package. + * If the installer associated to this package doesn't handle that function, it'll do nothing. + * + * @param PackageInterface $package Package instance + */ + public function ensureBinariesPresence(PackageInterface $package) + { + try { + $installer = $this->getInstaller($package->getType()); + } catch (\InvalidArgumentException $e) { + // no installer found for the current package type (@see `getInstaller()`) + return; + } + + // if the given installer support installing binaries + if ($installer instanceof BinaryPresenceInterface) { + $installer->ensureBinariesPresence($package); + } + } + + /** + * Executes solver operation. + * + * @param RepositoryInterface $repo repository in which to check + * @param OperationInterface $operation operation instance + */ + public function execute(RepositoryInterface $repo, OperationInterface $operation) + { + $method = $operation->getJobType(); + $this->$method($repo, $operation); + } + + /** + * Executes install operation. + * + * @param RepositoryInterface $repo repository in which to check + * @param InstallOperation $operation operation instance + */ + public function install(RepositoryInterface $repo, InstallOperation $operation) + { + $package = $operation->getPackage(); + $installer = $this->getInstaller($package->getType()); + $installer->install($repo, $package); + $this->markForNotification($package); + } + + /** + * Executes update operation. + * + * @param RepositoryInterface $repo repository in which to check + * @param UpdateOperation $operation operation instance + */ + public function update(RepositoryInterface $repo, UpdateOperation $operation) + { + $initial = $operation->getInitialPackage(); + $target = $operation->getTargetPackage(); + + $initialType = $initial->getType(); + $targetType = $target->getType(); + + if ($initialType === $targetType) { + $installer = $this->getInstaller($initialType); + $installer->update($repo, $initial, $target); + $this->markForNotification($target); + } else { + $this->getInstaller($initialType)->uninstall($repo, $initial); + $this->getInstaller($targetType)->install($repo, $target); + } + } + + /** + * Uninstalls package. + * + * @param RepositoryInterface $repo repository in which to check + * @param UninstallOperation $operation operation instance + */ + public function uninstall(RepositoryInterface $repo, UninstallOperation $operation) + { + $package = $operation->getPackage(); + $installer = $this->getInstaller($package->getType()); + $installer->uninstall($repo, $package); + } + + /** + * Executes markAliasInstalled operation. + * + * @param RepositoryInterface $repo repository in which to check + * @param MarkAliasInstalledOperation $operation operation instance + */ + public function markAliasInstalled(RepositoryInterface $repo, MarkAliasInstalledOperation $operation) + { + $package = $operation->getPackage(); + + if (!$repo->hasPackage($package)) { + $repo->addPackage(clone $package); + } + } + + /** + * Executes markAlias operation. + * + * @param RepositoryInterface $repo repository in which to check + * @param MarkAliasUninstalledOperation $operation operation instance + */ + public function markAliasUninstalled(RepositoryInterface $repo, MarkAliasUninstalledOperation $operation) + { + $package = $operation->getPackage(); + + $repo->removePackage($package); + } + + /** + * Returns the installation path of a package + * + * @param PackageInterface $package + * @return string path + */ + public function getInstallPath(PackageInterface $package) + { + $installer = $this->getInstaller($package->getType()); + + return $installer->getInstallPath($package); + } + + public function notifyInstalls(IOInterface $io) + { + foreach ($this->notifiablePackages as $repoUrl => $packages) { + $repositoryName = parse_url($repoUrl, PHP_URL_HOST); + if ($io->hasAuthentication($repositoryName)) { + $auth = $io->getAuthentication($repositoryName); + $authStr = base64_encode($auth['username'] . ':' . $auth['password']); + $authHeader = 'Authorization: Basic '.$authStr; + } + + // non-batch API, deprecated + if (strpos($repoUrl, '%package%')) { + foreach ($packages as $package) { + $url = str_replace('%package%', $package->getPrettyName(), $repoUrl); + + $params = array( + 'version' => $package->getPrettyVersion(), + 'version_normalized' => $package->getVersion(), + ); + $opts = array('http' => + array( + 'method' => 'POST', + 'header' => array('Content-type: application/x-www-form-urlencoded'), + 'content' => http_build_query($params, '', '&'), + 'timeout' => 3, + ), + ); + if (isset($authHeader)) { + $opts['http']['header'][] = $authHeader; + } + + $context = StreamContextFactory::getContext($url, $opts); + @file_get_contents($url, false, $context); + } + + continue; + } + + $postData = array('downloads' => array()); + foreach ($packages as $package) { + $postData['downloads'][] = array( + 'name' => $package->getPrettyName(), + 'version' => $package->getVersion(), + ); + } + + $opts = array('http' => + array( + 'method' => 'POST', + 'header' => array('Content-Type: application/json'), + 'content' => json_encode($postData), + 'timeout' => 6, + ), + ); + if (isset($authHeader)) { + $opts['http']['header'][] = $authHeader; + } + + $context = StreamContextFactory::getContext($repoUrl, $opts); + @file_get_contents($repoUrl, false, $context); + } + + $this->reset(); + } + + private function markForNotification(PackageInterface $package) + { + if ($package->getNotificationUrl()) { + $this->notifiablePackages[$package->getNotificationUrl()][$package->getName()] = $package; + } + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php b/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php new file mode 100644 index 0000000..87153bd --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php @@ -0,0 +1,161 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Composer; +use Composer\DependencyResolver\PolicyInterface; +use Composer\DependencyResolver\Operation\OperationInterface; +use Composer\DependencyResolver\Pool; +use Composer\DependencyResolver\Request; +use Composer\EventDispatcher\Event; +use Composer\IO\IOInterface; +use Composer\Repository\CompositeRepository; + +/** + * An event for all installer. + * + * @author François Pluchino + */ +class InstallerEvent extends Event +{ + /** + * @var Composer + */ + private $composer; + + /** + * @var IOInterface + */ + private $io; + + /** + * @var bool + */ + private $devMode; + + /** + * @var PolicyInterface + */ + private $policy; + + /** + * @var Pool + */ + private $pool; + + /** + * @var CompositeRepository + */ + private $installedRepo; + + /** + * @var Request + */ + private $request; + + /** + * @var OperationInterface[] + */ + private $operations; + + /** + * Constructor. + * + * @param string $eventName + * @param Composer $composer + * @param IOInterface $io + * @param bool $devMode + * @param PolicyInterface $policy + * @param Pool $pool + * @param CompositeRepository $installedRepo + * @param Request $request + * @param OperationInterface[] $operations + */ + public function __construct($eventName, Composer $composer, IOInterface $io, $devMode, PolicyInterface $policy, Pool $pool, CompositeRepository $installedRepo, Request $request, array $operations = array()) + { + parent::__construct($eventName); + + $this->composer = $composer; + $this->io = $io; + $this->devMode = $devMode; + $this->policy = $policy; + $this->pool = $pool; + $this->installedRepo = $installedRepo; + $this->request = $request; + $this->operations = $operations; + } + + /** + * @return Composer + */ + public function getComposer() + { + return $this->composer; + } + + /** + * @return IOInterface + */ + public function getIO() + { + return $this->io; + } + + /** + * @return bool + */ + public function isDevMode() + { + return $this->devMode; + } + + /** + * @return PolicyInterface + */ + public function getPolicy() + { + return $this->policy; + } + + /** + * @return Pool + */ + public function getPool() + { + return $this->pool; + } + + /** + * @return CompositeRepository + */ + public function getInstalledRepo() + { + return $this->installedRepo; + } + + /** + * @return Request + */ + public function getRequest() + { + return $this->request; + } + + /** + * @return OperationInterface[] + */ + public function getOperations() + { + return $this->operations; + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php b/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php new file mode 100644 index 0000000..e05c925 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php @@ -0,0 +1,43 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +/** + * The Installer Events. + * + * @author François Pluchino + */ +class InstallerEvents +{ + /** + * The PRE_DEPENDENCIES_SOLVING event occurs as a installer begins + * resolve operations. + * + * The event listener method receives a + * Composer\Installer\InstallerEvent instance. + * + * @var string + */ + const PRE_DEPENDENCIES_SOLVING = 'pre-dependencies-solving'; + + /** + * The POST_DEPENDENCIES_SOLVING event occurs as a installer after + * resolve operations. + * + * The event listener method receives a + * Composer\Installer\InstallerEvent instance. + * + * @var string + */ + const POST_DEPENDENCIES_SOLVING = 'post-dependencies-solving'; +} diff --git a/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php b/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php new file mode 100644 index 0000000..e64dfad --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php @@ -0,0 +1,79 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Package\PackageInterface; +use Composer\Repository\InstalledRepositoryInterface; +use InvalidArgumentException; + +/** + * Interface for the package installation manager. + * + * @author Konstantin Kudryashov + * @author Jordi Boggiano + */ +interface InstallerInterface +{ + /** + * Decides if the installer supports the given type + * + * @param string $packageType + * @return bool + */ + public function supports($packageType); + + /** + * Checks that provided package is installed. + * + * @param InstalledRepositoryInterface $repo repository in which to check + * @param PackageInterface $package package instance + * + * @return bool + */ + public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package); + + /** + * Installs specific package. + * + * @param InstalledRepositoryInterface $repo repository in which to check + * @param PackageInterface $package package instance + */ + public function install(InstalledRepositoryInterface $repo, PackageInterface $package); + + /** + * Updates specific package. + * + * @param InstalledRepositoryInterface $repo repository in which to check + * @param PackageInterface $initial already installed package version + * @param PackageInterface $target updated version + * + * @throws InvalidArgumentException if $initial package is not installed + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target); + + /** + * Uninstalls specific package. + * + * @param InstalledRepositoryInterface $repo repository in which to check + * @param PackageInterface $package package instance + */ + public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package); + + /** + * Returns the installation path of a package + * + * @param PackageInterface $package + * @return string path + */ + public function getInstallPath(PackageInterface $package); +} diff --git a/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php b/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php new file mode 100644 index 0000000..34fbbbe --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php @@ -0,0 +1,232 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Composer; +use Composer\IO\IOInterface; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Package\PackageInterface; +use Composer\Util\Filesystem; +use Composer\Util\Silencer; +use Composer\Util\Platform; + +/** + * Package installation manager. + * + * @author Jordi Boggiano + * @author Konstantin Kudryashov + */ +class LibraryInstaller implements InstallerInterface, BinaryPresenceInterface +{ + protected $composer; + protected $vendorDir; + protected $binDir; + protected $downloadManager; + protected $io; + protected $type; + protected $filesystem; + protected $binCompat; + protected $binaryInstaller; + + /** + * Initializes library installer. + * + * @param IOInterface $io + * @param Composer $composer + * @param string $type + * @param Filesystem $filesystem + * @param BinaryInstaller $binaryInstaller + */ + public function __construct(IOInterface $io, Composer $composer, $type = 'library', Filesystem $filesystem = null, BinaryInstaller $binaryInstaller = null) + { + $this->composer = $composer; + $this->downloadManager = $composer->getDownloadManager(); + $this->io = $io; + $this->type = $type; + + $this->filesystem = $filesystem ?: new Filesystem(); + $this->vendorDir = rtrim($composer->getConfig()->get('vendor-dir'), '/'); + $this->binaryInstaller = $binaryInstaller ?: new BinaryInstaller($this->io, rtrim($composer->getConfig()->get('bin-dir'), '/'), $composer->getConfig()->get('bin-compat'), $this->filesystem); + } + + /** + * {@inheritDoc} + */ + public function supports($packageType) + { + return $packageType === $this->type || null === $this->type; + } + + /** + * {@inheritDoc} + */ + public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) + { + if (!$repo->hasPackage($package)) { + return false; + } + + $installPath = $this->getInstallPath($package); + + if (is_readable($installPath)) { + return true; + } + + return (Platform::isWindows() && $this->filesystem->isJunction($installPath)) || is_link($installPath); + } + + /** + * {@inheritDoc} + */ + public function install(InstalledRepositoryInterface $repo, PackageInterface $package) + { + $this->initializeVendorDir(); + $downloadPath = $this->getInstallPath($package); + + // remove the binaries if it appears the package files are missing + if (!is_readable($downloadPath) && $repo->hasPackage($package)) { + $this->binaryInstaller->removeBinaries($package); + } + + $this->installCode($package); + $this->binaryInstaller->installBinaries($package, $this->getInstallPath($package)); + if (!$repo->hasPackage($package)) { + $repo->addPackage(clone $package); + } + } + + /** + * {@inheritDoc} + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) + { + if (!$repo->hasPackage($initial)) { + throw new \InvalidArgumentException('Package is not installed: '.$initial); + } + + $this->initializeVendorDir(); + + $this->binaryInstaller->removeBinaries($initial); + $this->updateCode($initial, $target); + $this->binaryInstaller->installBinaries($target, $this->getInstallPath($target)); + $repo->removePackage($initial); + if (!$repo->hasPackage($target)) { + $repo->addPackage(clone $target); + } + } + + /** + * {@inheritDoc} + */ + public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) + { + if (!$repo->hasPackage($package)) { + throw new \InvalidArgumentException('Package is not installed: '.$package); + } + + $this->removeCode($package); + $this->binaryInstaller->removeBinaries($package); + $repo->removePackage($package); + + $downloadPath = $this->getPackageBasePath($package); + if (strpos($package->getName(), '/')) { + $packageVendorDir = dirname($downloadPath); + if (is_dir($packageVendorDir) && $this->filesystem->isDirEmpty($packageVendorDir)) { + Silencer::call('rmdir', $packageVendorDir); + } + } + } + + /** + * {@inheritDoc} + */ + public function getInstallPath(PackageInterface $package) + { + $this->initializeVendorDir(); + + $basePath = ($this->vendorDir ? $this->vendorDir.'/' : '') . $package->getPrettyName(); + $targetDir = $package->getTargetDir(); + + return $basePath . ($targetDir ? '/'.$targetDir : ''); + } + + /** + * Make sure binaries are installed for a given package. + * + * @param PackageInterface $package Package instance + */ + public function ensureBinariesPresence(PackageInterface $package) + { + $this->binaryInstaller->installBinaries($package, $this->getInstallPath($package), false); + } + + /** + * Returns the base path of the package without target-dir path + * + * It is used for BC as getInstallPath tends to be overridden by + * installer plugins but not getPackageBasePath + * + * @param PackageInterface $package + * @return string + */ + protected function getPackageBasePath(PackageInterface $package) + { + $installPath = $this->getInstallPath($package); + $targetDir = $package->getTargetDir(); + + if ($targetDir) { + return preg_replace('{/*'.str_replace('/', '/+', preg_quote($targetDir)).'/?$}', '', $installPath); + } + + return $installPath; + } + + protected function installCode(PackageInterface $package) + { + $downloadPath = $this->getInstallPath($package); + $this->downloadManager->download($package, $downloadPath); + } + + protected function updateCode(PackageInterface $initial, PackageInterface $target) + { + $initialDownloadPath = $this->getInstallPath($initial); + $targetDownloadPath = $this->getInstallPath($target); + if ($targetDownloadPath !== $initialDownloadPath) { + // if the target and initial dirs intersect, we force a remove + install + // to avoid the rename wiping the target dir as part of the initial dir cleanup + if (substr($initialDownloadPath, 0, strlen($targetDownloadPath)) === $targetDownloadPath + || substr($targetDownloadPath, 0, strlen($initialDownloadPath)) === $initialDownloadPath + ) { + $this->removeCode($initial); + $this->installCode($target); + + return; + } + + $this->filesystem->rename($initialDownloadPath, $targetDownloadPath); + } + $this->downloadManager->update($initial, $target, $targetDownloadPath); + } + + protected function removeCode(PackageInterface $package) + { + $downloadPath = $this->getPackageBasePath($package); + $this->downloadManager->remove($package, $downloadPath); + } + + protected function initializeVendorDir() + { + $this->filesystem->ensureDirectoryExists($this->vendorDir); + $this->vendorDir = realpath($this->vendorDir); + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php b/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php new file mode 100644 index 0000000..e1f31c1 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php @@ -0,0 +1,100 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Package\PackageInterface; +use Composer\Package\Version\VersionParser; +use Composer\IO\IOInterface; + +/** + * Metapackage installation manager. + * + * @author Martin Hasoň + */ +class MetapackageInstaller implements InstallerInterface +{ + private $io; + + public function __construct(IOInterface $io) + { + $this->io = $io; + } + + /** + * {@inheritDoc} + */ + public function supports($packageType) + { + return $packageType === 'metapackage'; + } + + /** + * {@inheritDoc} + */ + public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) + { + return $repo->hasPackage($package); + } + + /** + * {@inheritDoc} + */ + public function install(InstalledRepositoryInterface $repo, PackageInterface $package) + { + $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); + + $repo->addPackage(clone $package); + } + + /** + * {@inheritDoc} + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) + { + if (!$repo->hasPackage($initial)) { + throw new \InvalidArgumentException('Package is not installed: '.$initial); + } + + $name = $target->getName(); + $from = $initial->getFullPrettyVersion(); + $to = $target->getFullPrettyVersion(); + $actionName = VersionParser::isUpgrade($initial->getVersion(), $target->getVersion()) ? 'Updating' : 'Downgrading'; + $this->io->writeError(" - " . $actionName . " " . $name . " (" . $from . " => " . $to . ")"); + + $repo->removePackage($initial); + $repo->addPackage(clone $target); + } + + /** + * {@inheritDoc} + */ + public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) + { + if (!$repo->hasPackage($package)) { + throw new \InvalidArgumentException('Package is not installed: '.$package); + } + + $this->io->writeError(" - Removing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); + + $repo->removePackage($package); + } + + /** + * {@inheritDoc} + */ + public function getInstallPath(PackageInterface $package) + { + return ''; + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php b/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php new file mode 100644 index 0000000..72cf17d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php @@ -0,0 +1,88 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Package\PackageInterface; + +/** + * Does not install anything but marks packages installed in the repo + * + * Useful for dry runs + * + * @author Jordi Boggiano + */ +class NoopInstaller implements InstallerInterface +{ + /** + * {@inheritDoc} + */ + public function supports($packageType) + { + return true; + } + + /** + * {@inheritDoc} + */ + public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) + { + return $repo->hasPackage($package); + } + + /** + * {@inheritDoc} + */ + public function install(InstalledRepositoryInterface $repo, PackageInterface $package) + { + if (!$repo->hasPackage($package)) { + $repo->addPackage(clone $package); + } + } + + /** + * {@inheritDoc} + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) + { + if (!$repo->hasPackage($initial)) { + throw new \InvalidArgumentException('Package is not installed: '.$initial); + } + + $repo->removePackage($initial); + if (!$repo->hasPackage($target)) { + $repo->addPackage(clone $target); + } + } + + /** + * {@inheritDoc} + */ + public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) + { + if (!$repo->hasPackage($package)) { + throw new \InvalidArgumentException('Package is not installed: '.$package); + } + $repo->removePackage($package); + } + + /** + * {@inheritDoc} + */ + public function getInstallPath(PackageInterface $package) + { + $targetDir = $package->getTargetDir(); + + return $package->getPrettyName() . ($targetDir ? '/'.$targetDir : ''); + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/PackageEvent.php b/vendor/composer/composer/src/Composer/Installer/PackageEvent.php new file mode 100644 index 0000000..f5cf0ed --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/PackageEvent.php @@ -0,0 +1,65 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Composer; +use Composer\IO\IOInterface; +use Composer\DependencyResolver\Operation\OperationInterface; +use Composer\DependencyResolver\PolicyInterface; +use Composer\DependencyResolver\Pool; +use Composer\DependencyResolver\Request; +use Composer\Repository\CompositeRepository; + +/** + * The Package Event. + * + * @author Jordi Boggiano + */ +class PackageEvent extends InstallerEvent +{ + /** + * @var OperationInterface The package instance + */ + private $operation; + + /** + * Constructor. + * + * @param string $eventName + * @param Composer $composer + * @param IOInterface $io + * @param bool $devMode + * @param PolicyInterface $policy + * @param Pool $pool + * @param CompositeRepository $installedRepo + * @param Request $request + * @param OperationInterface[] $operations + * @param OperationInterface $operation + */ + public function __construct($eventName, Composer $composer, IOInterface $io, $devMode, PolicyInterface $policy, Pool $pool, CompositeRepository $installedRepo, Request $request, array $operations, OperationInterface $operation) + { + parent::__construct($eventName, $composer, $io, $devMode, $policy, $pool, $installedRepo, $request, $operations); + + $this->operation = $operation; + } + + /** + * Returns the package instance. + * + * @return OperationInterface + */ + public function getOperation() + { + return $this->operation; + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/PackageEvents.php b/vendor/composer/composer/src/Composer/Installer/PackageEvents.php new file mode 100644 index 0000000..1b48e4f --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/PackageEvents.php @@ -0,0 +1,75 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +/** + * Package Events. + * + * @author Jordi Boggiano + */ +class PackageEvents +{ + /** + * The PRE_PACKAGE_INSTALL event occurs before a package is installed. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @var string + */ + const PRE_PACKAGE_INSTALL = 'pre-package-install'; + + /** + * The POST_PACKAGE_INSTALL event occurs after a package is installed. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @var string + */ + const POST_PACKAGE_INSTALL = 'post-package-install'; + + /** + * The PRE_PACKAGE_UPDATE event occurs before a package is updated. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @var string + */ + const PRE_PACKAGE_UPDATE = 'pre-package-update'; + + /** + * The POST_PACKAGE_UPDATE event occurs after a package is updated. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @var string + */ + const POST_PACKAGE_UPDATE = 'post-package-update'; + + /** + * The PRE_PACKAGE_UNINSTALL event occurs before a package has been uninstalled. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @var string + */ + const PRE_PACKAGE_UNINSTALL = 'pre-package-uninstall'; + + /** + * The POST_PACKAGE_UNINSTALL event occurs after a package has been uninstalled. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @var string + */ + const POST_PACKAGE_UNINSTALL = 'post-package-uninstall'; +} diff --git a/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php b/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php new file mode 100644 index 0000000..f0d6783 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php @@ -0,0 +1,144 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\IO\IOInterface; +use Composer\Package\PackageInterface; +use Composer\Util\Filesystem; +use Composer\Util\ProcessExecutor; + +/** + * Utility to handle installation of package "bin"/binaries for PEAR packages + * + * @author Jordi Boggiano + */ +class PearBinaryInstaller extends BinaryInstaller +{ + private $installer; + private $vendorDir; + + /** + * @param IOInterface $io + * @param string $binDir + * @param string $vendorDir + * @param string $binCompat + * @param Filesystem $filesystem + * @param PearInstaller $installer + */ + public function __construct(IOInterface $io, $binDir, $vendorDir, $binCompat, Filesystem $filesystem, PearInstaller $installer) + { + parent::__construct($io, $binDir, $binCompat, $filesystem); + $this->installer = $installer; + $this->vendorDir = $vendorDir; + } + + protected function getBinaries(PackageInterface $package) + { + $binariesPath = $this->installer->getInstallPath($package) . '/bin/'; + $binaries = array(); + if (file_exists($binariesPath)) { + foreach (new \FilesystemIterator($binariesPath, \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO) as $fileName => $value) { + if (!$value->isDir()) { + $binaries[] = 'bin/'.$fileName; + } + } + } + + return $binaries; + } + + protected function initializeBinDir() + { + parent::initializeBinDir(); + file_put_contents($this->binDir.'/composer-php', $this->generateUnixyPhpProxyCode()); + @chmod($this->binDir.'/composer-php', 0777 & ~umask()); + file_put_contents($this->binDir.'/composer-php.bat', $this->generateWindowsPhpProxyCode()); + @chmod($this->binDir.'/composer-php.bat', 0777 & ~umask()); + } + + protected function generateWindowsProxyCode($bin, $link) + { + $binPath = $this->filesystem->findShortestPath($link, $bin); + if ('.bat' === substr($bin, -4)) { + $caller = 'call'; + } else { + $handle = fopen($bin, 'r'); + $line = fgets($handle); + fclose($handle); + if (preg_match('{^#!/(?:usr/bin/env )?(?:[^/]+/)*(.+)$}m', $line, $match)) { + $caller = trim($match[1]); + } else { + $caller = 'php'; + } + + if ($caller === 'php') { + return "@echo off\r\n". + "pushd .\r\n". + "cd %~dp0\r\n". + "set PHP_PROXY=%CD%\\composer-php.bat\r\n". + "cd ".ProcessExecutor::escape(dirname($binPath))."\r\n". + "set BIN_TARGET=%CD%\\".basename($binPath)."\r\n". + "popd\r\n". + "%PHP_PROXY% \"%BIN_TARGET%\" %*\r\n"; + } + } + + return "@echo off\r\n". + "pushd .\r\n". + "cd %~dp0\r\n". + "cd ".ProcessExecutor::escape(dirname($binPath))."\r\n". + "set BIN_TARGET=%CD%\\".basename($binPath)."\r\n". + "popd\r\n". + $caller." \"%BIN_TARGET%\" %*\r\n"; + } + + private function generateWindowsPhpProxyCode() + { + $binToVendor = $this->filesystem->findShortestPath($this->binDir, $this->vendorDir, true); + + return + "@echo off\r\n" . + "setlocal enabledelayedexpansion\r\n" . + "set BIN_DIR=%~dp0\r\n" . + "set VENDOR_DIR=%BIN_DIR%\\".$binToVendor."\r\n" . + "set DIRS=.\r\n" . + "FOR /D %%V IN (%VENDOR_DIR%\\*) DO (\r\n" . + " FOR /D %%P IN (%%V\\*) DO (\r\n" . + " set DIRS=!DIRS!;%%~fP\r\n" . + " )\r\n" . + ")\r\n" . + "php.exe -d include_path=!DIRS! %*\r\n"; + } + + private function generateUnixyPhpProxyCode() + { + $binToVendor = $this->filesystem->findShortestPath($this->binDir, $this->vendorDir, true); + + return + "#!/usr/bin/env sh\n". + "SRC_DIR=`pwd`\n". + "BIN_DIR=`dirname $0`\n". + "VENDOR_DIR=\$BIN_DIR/".escapeshellarg($binToVendor)."\n". + "DIRS=\"\"\n". + "for vendor in \$VENDOR_DIR/*; do\n". + " if [ -d \"\$vendor\" ]; then\n". + " for package in \$vendor/*; do\n". + " if [ -d \"\$package\" ]; then\n". + " DIRS=\"\${DIRS}:\${package}\"\n". + " fi\n". + " done\n". + " fi\n". + "done\n". + "php -d include_path=\".\$DIRS\" $@\n"; + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/PearInstaller.php b/vendor/composer/composer/src/Composer/Installer/PearInstaller.php new file mode 100644 index 0000000..b4aa465 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/PearInstaller.php @@ -0,0 +1,84 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\IO\IOInterface; +use Composer\Composer; +use Composer\Downloader\PearPackageExtractor; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Package\PackageInterface; +use Composer\Util\Platform; +use Composer\Util\Filesystem; + +/** + * Package installation manager. + * + * @author Jordi Boggiano + * @author Konstantin Kudryashov + */ +class PearInstaller extends LibraryInstaller +{ + /** + * Initializes library installer. + * + * @param IOInterface $io io instance + * @param Composer $composer + * @param string $type package type that this installer handles + */ + public function __construct(IOInterface $io, Composer $composer, $type = 'pear-library') + { + $filesystem = new Filesystem(); + $binaryInstaller = new PearBinaryInstaller($io, rtrim($composer->getConfig()->get('bin-dir'), '/'), rtrim($composer->getConfig()->get('vendor-dir'), '/'), $composer->getConfig()->get('bin-compat'), $filesystem, $this); + + parent::__construct($io, $composer, $type, $filesystem, $binaryInstaller); + } + + /** + * {@inheritDoc} + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) + { + $this->uninstall($repo, $initial); + $this->install($repo, $target); + } + + protected function installCode(PackageInterface $package) + { + parent::installCode($package); + + $isWindows = Platform::isWindows(); + $php_bin = $this->binDir . ($isWindows ? '/composer-php.bat' : '/composer-php'); + + if (!$isWindows) { + $php_bin = '/usr/bin/env ' . $php_bin; + } + + $installPath = $this->getInstallPath($package); + $vars = array( + 'os' => $isWindows ? 'windows' : 'linux', + 'php_bin' => $php_bin, + 'pear_php' => $installPath, + 'php_dir' => $installPath, + 'bin_dir' => $installPath . '/bin', + 'data_dir' => $installPath . '/data', + 'version' => $package->getPrettyVersion(), + ); + + $packageArchive = $this->getInstallPath($package).'/'.pathinfo($package->getDistUrl(), PATHINFO_BASENAME); + $pearExtractor = new PearPackageExtractor($packageArchive); + $pearExtractor->extractTo($this->getInstallPath($package), array('php' => '/', 'script' => '/bin', 'data' => '/data'), $vars); + + $this->io->writeError(' Cleaning up', true, IOInterface::VERBOSE); + $this->filesystem->unlink($packageArchive); + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php b/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php new file mode 100644 index 0000000..c400ca4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php @@ -0,0 +1,84 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Composer; +use Composer\IO\IOInterface; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Package\PackageInterface; + +/** + * Installer for plugin packages + * + * @author Jordi Boggiano + * @author Nils Adermann + */ +class PluginInstaller extends LibraryInstaller +{ + private $installationManager; + + /** + * Initializes Plugin installer. + * + * @param IOInterface $io + * @param Composer $composer + */ + public function __construct(IOInterface $io, Composer $composer) + { + parent::__construct($io, $composer, 'composer-plugin'); + $this->installationManager = $composer->getInstallationManager(); + } + + /** + * {@inheritDoc} + */ + public function supports($packageType) + { + return $packageType === 'composer-plugin' || $packageType === 'composer-installer'; + } + + /** + * {@inheritDoc} + */ + public function install(InstalledRepositoryInterface $repo, PackageInterface $package) + { + $extra = $package->getExtra(); + if (empty($extra['class'])) { + throw new \UnexpectedValueException('Error while installing '.$package->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); + } + + parent::install($repo, $package); + try { + $this->composer->getPluginManager()->registerPackage($package, true); + } catch (\Exception $e) { + // Rollback installation + $this->io->writeError('Plugin installation failed, rolling back'); + parent::uninstall($repo, $package); + throw $e; + } + } + + /** + * {@inheritDoc} + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) + { + $extra = $target->getExtra(); + if (empty($extra['class'])) { + throw new \UnexpectedValueException('Error while installing '.$target->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); + } + + parent::update($repo, $initial, $target); + $this->composer->getPluginManager()->registerPackage($target, true); + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php b/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php new file mode 100644 index 0000000..c79238b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php @@ -0,0 +1,99 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\Package\PackageInterface; +use Composer\Downloader\DownloadManager; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Util\Filesystem; + +/** + * Project Installer is used to install a single package into a directory as + * root project. + * + * @author Benjamin Eberlei + */ +class ProjectInstaller implements InstallerInterface +{ + private $installPath; + private $downloadManager; + private $filesystem; + + public function __construct($installPath, DownloadManager $dm) + { + $this->installPath = rtrim(strtr($installPath, '\\', '/'), '/').'/'; + $this->downloadManager = $dm; + $this->filesystem = new Filesystem; + } + + /** + * Decides if the installer supports the given type + * + * @param string $packageType + * @return bool + */ + public function supports($packageType) + { + return true; + } + + /** + * {@inheritDoc} + */ + public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) + { + return false; + } + + /** + * {@inheritDoc} + */ + public function install(InstalledRepositoryInterface $repo, PackageInterface $package) + { + $installPath = $this->installPath; + if (file_exists($installPath) && !$this->filesystem->isDirEmpty($installPath)) { + throw new \InvalidArgumentException("Project directory $installPath is not empty."); + } + if (!is_dir($installPath)) { + mkdir($installPath, 0777, true); + } + $this->downloadManager->download($package, $installPath); + } + + /** + * {@inheritDoc} + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) + { + throw new \InvalidArgumentException("not supported"); + } + + /** + * {@inheritDoc} + */ + public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) + { + throw new \InvalidArgumentException("not supported"); + } + + /** + * Returns the installation path of a package + * + * @param PackageInterface $package + * @return string path + */ + public function getInstallPath(PackageInterface $package) + { + return $this->installPath; + } +} diff --git a/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php b/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php new file mode 100644 index 0000000..25788e5 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php @@ -0,0 +1,151 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\IO\IOInterface; +use Composer\Package\PackageInterface; +use Composer\Repository\RepositoryInterface; +use Symfony\Component\Console\Formatter\OutputFormatter; + +/** + * Add suggested packages from different places to output them in the end. + * + * @author Haralan Dobrev + */ +class SuggestedPackagesReporter +{ + /** + * @var array + */ + protected $suggestedPackages = array(); + + /** + * @var IOInterface + */ + private $io; + + public function __construct(IOInterface $io) + { + $this->io = $io; + } + + /** + * @return array Suggested packages with source, target and reason keys. + */ + public function getPackages() + { + return $this->suggestedPackages; + } + + /** + * Add suggested packages to be listed after install + * + * Could be used to add suggested packages both from the installer + * or from CreateProjectCommand. + * + * @param string $source Source package which made the suggestion + * @param string $target Target package to be suggested + * @param string $reason Reason the target package to be suggested + * @return SuggestedPackagesReporter + */ + public function addPackage($source, $target, $reason) + { + $this->suggestedPackages[] = array( + 'source' => $source, + 'target' => $target, + 'reason' => $reason, + ); + + return $this; + } + + /** + * Add all suggestions from a package. + * + * @param PackageInterface $package + * @return SuggestedPackagesReporter + */ + public function addSuggestionsFromPackage(PackageInterface $package) + { + $source = $package->getPrettyName(); + foreach ($package->getSuggests() as $target => $reason) { + $this->addPackage( + $source, + $target, + $reason + ); + } + + return $this; + } + + /** + * Output suggested packages. + * Do not list the ones already installed if installed repository provided. + * + * @param RepositoryInterface $installedRepo Installed packages + * @return SuggestedPackagesReporter + */ + public function output(RepositoryInterface $installedRepo = null) + { + $suggestedPackages = $this->getPackages(); + $installedPackages = array(); + if (null !== $installedRepo && ! empty($suggestedPackages)) { + foreach ($installedRepo->getPackages() as $package) { + $installedPackages = array_merge( + $installedPackages, + $package->getNames() + ); + } + } + + foreach ($suggestedPackages as $suggestion) { + if (in_array($suggestion['target'], $installedPackages)) { + continue; + } + + $this->io->writeError(sprintf( + '%s suggests installing %s%s', + $suggestion['source'], + $this->escapeOutput($suggestion['target']), + $this->escapeOutput('' !== $suggestion['reason'] ? ' ('.$suggestion['reason'].')' : '') + )); + } + + return $this; + } + + /** + * @param string $string + * @return string + */ + private function escapeOutput($string) + { + return OutputFormatter::escape( + $this->removeControlCharacters($string) + ); + } + + /** + * @param string $string + * @return string + */ + private function removeControlCharacters($string) + { + return preg_replace( + '/[[:cntrl:]]/', + '', + str_replace("\n", ' ', $string) + ); + } +} diff --git a/vendor/composer/composer/src/Composer/Json/JsonFile.php b/vendor/composer/composer/src/Composer/Json/JsonFile.php new file mode 100644 index 0000000..f2d9500 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Json/JsonFile.php @@ -0,0 +1,306 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Json; + +use JsonSchema\Validator; +use Seld\JsonLint\JsonParser; +use Seld\JsonLint\ParsingException; +use Composer\Util\RemoteFilesystem; +use Composer\IO\IOInterface; +use Composer\Downloader\TransportException; + +/** + * Reads/writes json files. + * + * @author Konstantin Kudryashiv + * @author Jordi Boggiano + */ +class JsonFile +{ + const LAX_SCHEMA = 1; + const STRICT_SCHEMA = 2; + + const JSON_UNESCAPED_SLASHES = 64; + const JSON_PRETTY_PRINT = 128; + const JSON_UNESCAPED_UNICODE = 256; + + const COMPOSER_SCHEMA_PATH = '/../../../res/composer-schema.json'; + + private $path; + private $rfs; + private $io; + + /** + * Initializes json file reader/parser. + * + * @param string $path path to a lockfile + * @param RemoteFilesystem $rfs required for loading http/https json files + * @param IOInterface $io + * @throws \InvalidArgumentException + */ + public function __construct($path, RemoteFilesystem $rfs = null, IOInterface $io = null) + { + $this->path = $path; + + if (null === $rfs && preg_match('{^https?://}i', $path)) { + throw new \InvalidArgumentException('http urls require a RemoteFilesystem instance to be passed'); + } + $this->rfs = $rfs; + $this->io = $io; + } + + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * Checks whether json file exists. + * + * @return bool + */ + public function exists() + { + return is_file($this->path); + } + + /** + * Reads json file. + * + * @throws \RuntimeException + * @return mixed + */ + public function read() + { + try { + if ($this->rfs) { + $json = $this->rfs->getContents($this->path, $this->path, false); + } else { + if ($this->io && $this->io->isDebug()) { + $this->io->writeError('Reading ' . $this->path); + } + $json = file_get_contents($this->path); + } + } catch (TransportException $e) { + throw new \RuntimeException($e->getMessage(), 0, $e); + } catch (\Exception $e) { + throw new \RuntimeException('Could not read '.$this->path."\n\n".$e->getMessage()); + } + + return static::parseJson($json, $this->path); + } + + /** + * Writes json file. + * + * @param array $hash writes hash into json file + * @param int $options json_encode options (defaults to JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) + * @throws \UnexpectedValueException|\Exception + */ + public function write(array $hash, $options = 448) + { + $dir = dirname($this->path); + if (!is_dir($dir)) { + if (file_exists($dir)) { + throw new \UnexpectedValueException( + $dir.' exists and is not a directory.' + ); + } + if (!@mkdir($dir, 0777, true)) { + throw new \UnexpectedValueException( + $dir.' does not exist and could not be created.' + ); + } + } + + $retries = 3; + while ($retries--) { + try { + file_put_contents($this->path, static::encode($hash, $options). ($options & self::JSON_PRETTY_PRINT ? "\n" : '')); + break; + } catch (\Exception $e) { + if ($retries) { + usleep(500000); + continue; + } + + throw $e; + } + } + } + + /** + * Validates the schema of the current json file according to composer-schema.json rules + * + * @param int $schema a JsonFile::*_SCHEMA constant + * @param string|null $schemaFile a path to the schema file + * @throws JsonValidationException + * @return bool true on success + */ + public function validateSchema($schema = self::STRICT_SCHEMA, $schemaFile = null) + { + $content = file_get_contents($this->path); + $data = json_decode($content); + + if (null === $data && 'null' !== $content) { + self::validateSyntax($content, $this->path); + } + + if (null === $schemaFile) { + $schemaFile = __DIR__ . self::COMPOSER_SCHEMA_PATH; + } + + // Prepend with file:// only when not using a special schema already (e.g. in the phar) + if (false === strpos($schemaFile, '://')) { + $schemaFile = 'file://' . $schemaFile; + } + + $schemaData = (object) array('$ref' => $schemaFile); + + if ($schema === self::LAX_SCHEMA) { + $schemaData->additionalProperties = true; + $schemaData->required = array(); + } + + $validator = new Validator(); + $validator->check($data, $schemaData); + + // TODO add more validation like check version constraints and such, perhaps build that into the arrayloader? + + if (!$validator->isValid()) { + $errors = array(); + foreach ((array) $validator->getErrors() as $error) { + $errors[] = ($error['property'] ? $error['property'].' : ' : '').$error['message']; + } + throw new JsonValidationException('"'.$this->path.'" does not match the expected JSON schema', $errors); + } + + return true; + } + + /** + * Encodes an array into (optionally pretty-printed) JSON + * + * @param mixed $data Data to encode into a formatted JSON string + * @param int $options json_encode options (defaults to JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) + * @return string Encoded json + */ + public static function encode($data, $options = 448) + { + if (PHP_VERSION_ID >= 50400) { + $json = json_encode($data, $options); + if (false === $json) { + self::throwEncodeError(json_last_error()); + } + + // compact brackets to follow recent php versions + if (PHP_VERSION_ID < 50428 || (PHP_VERSION_ID >= 50500 && PHP_VERSION_ID < 50512) || (defined('JSON_C_VERSION') && version_compare(phpversion('json'), '1.3.6', '<'))) { + $json = preg_replace('/\[\s+\]/', '[]', $json); + $json = preg_replace('/\{\s+\}/', '{}', $json); + } + + return $json; + } + + $json = json_encode($data); + if (false === $json) { + self::throwEncodeError(json_last_error()); + } + + $prettyPrint = (bool) ($options & self::JSON_PRETTY_PRINT); + $unescapeUnicode = (bool) ($options & self::JSON_UNESCAPED_UNICODE); + $unescapeSlashes = (bool) ($options & self::JSON_UNESCAPED_SLASHES); + + if (!$prettyPrint && !$unescapeUnicode && !$unescapeSlashes) { + return $json; + } + + return JsonFormatter::format($json, $unescapeUnicode, $unescapeSlashes); + } + + /** + * Throws an exception according to a given code with a customized message + * + * @param int $code return code of json_last_error function + * @throws \RuntimeException + */ + private static function throwEncodeError($code) + { + switch ($code) { + case JSON_ERROR_DEPTH: + $msg = 'Maximum stack depth exceeded'; + break; + case JSON_ERROR_STATE_MISMATCH: + $msg = 'Underflow or the modes mismatch'; + break; + case JSON_ERROR_CTRL_CHAR: + $msg = 'Unexpected control character found'; + break; + case JSON_ERROR_UTF8: + $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded'; + break; + default: + $msg = 'Unknown error'; + } + + throw new \RuntimeException('JSON encoding failed: '.$msg); + } + + /** + * Parses json string and returns hash. + * + * @param string $json json string + * @param string $file the json file + * + * @return mixed + */ + public static function parseJson($json, $file = null) + { + if (null === $json) { + return; + } + $data = json_decode($json, true); + if (null === $data && JSON_ERROR_NONE !== json_last_error()) { + self::validateSyntax($json, $file); + } + + return $data; + } + + /** + * Validates the syntax of a JSON string + * + * @param string $json + * @param string $file + * @throws \UnexpectedValueException + * @throws ParsingException + * @return bool true on success + */ + protected static function validateSyntax($json, $file = null) + { + $parser = new JsonParser(); + $result = $parser->lint($json); + if (null === $result) { + if (defined('JSON_ERROR_UTF8') && JSON_ERROR_UTF8 === json_last_error()) { + throw new \UnexpectedValueException('"'.$file.'" is not UTF-8, could not parse as JSON'); + } + + return true; + } + + throw new ParsingException('"'.$file.'" does not contain valid JSON'."\n".$result->getMessage(), $result->getDetails()); + } +} diff --git a/vendor/composer/composer/src/Composer/Json/JsonFormatter.php b/vendor/composer/composer/src/Composer/Json/JsonFormatter.php new file mode 100644 index 0000000..44acaff --- /dev/null +++ b/vendor/composer/composer/src/Composer/Json/JsonFormatter.php @@ -0,0 +1,134 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Json; + +/** + * Formats json strings used for php < 5.4 because the json_encode doesn't + * supports the flags JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE + * in these versions + * + * @author Konstantin Kudryashiv + * @author Jordi Boggiano + */ +class JsonFormatter +{ + /** + * This code is based on the function found at: + * http://recursive-design.com/blog/2008/03/11/format-json-with-php/ + * + * Originally licensed under MIT by Dave Perrett + * + * + * @param string $json + * @param bool $unescapeUnicode Un escape unicode + * @param bool $unescapeSlashes Un escape slashes + * @return string + */ + public static function format($json, $unescapeUnicode, $unescapeSlashes) + { + $result = ''; + $pos = 0; + $strLen = strlen($json); + $indentStr = ' '; + $newLine = "\n"; + $outOfQuotes = true; + $buffer = ''; + $noescape = true; + + for ($i = 0; $i < $strLen; $i++) { + // Grab the next character in the string + $char = substr($json, $i, 1); + + // Are we inside a quoted string? + if ('"' === $char && $noescape) { + $outOfQuotes = !$outOfQuotes; + } + + if (!$outOfQuotes) { + $buffer .= $char; + $noescape = '\\' === $char ? !$noescape : true; + continue; + } elseif ('' !== $buffer) { + if ($unescapeSlashes) { + $buffer = str_replace('\\/', '/', $buffer); + } + + if ($unescapeUnicode && function_exists('mb_convert_encoding')) { + // https://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-cha + $buffer = preg_replace_callback('/(\\\\+)u([0-9a-f]{4})/i', function ($match) { + $l = strlen($match[1]); + + if ($l % 2) { + $code = hexdec($match[2]); + // 0xD800..0xDFFF denotes UTF-16 surrogate pair which won't be unescaped + // see https://github.com/composer/composer/issues/7510 + if (0xD800 <= $code && 0xDFFF >= $code) { + return $match[0]; + } + + return str_repeat('\\', $l - 1) . mb_convert_encoding( + pack('H*', $match[2]), + 'UTF-8', + 'UCS-2BE' + ); + } + + return $match[0]; + }, $buffer); + } + + $result .= $buffer.$char; + $buffer = ''; + continue; + } + + if (':' === $char) { + // Add a space after the : character + $char .= ' '; + } elseif ('}' === $char || ']' === $char) { + $pos--; + $prevChar = substr($json, $i - 1, 1); + + if ('{' !== $prevChar && '[' !== $prevChar) { + // If this character is the end of an element, + // output a new line and indent the next line + $result .= $newLine; + for ($j = 0; $j < $pos; $j++) { + $result .= $indentStr; + } + } else { + // Collapse empty {} and [] + $result = rtrim($result); + } + } + + $result .= $char; + + // If the last character was the beginning of an element, + // output a new line and indent the next line + if (',' === $char || '{' === $char || '[' === $char) { + $result .= $newLine; + + if ('{' === $char || '[' === $char) { + $pos++; + } + + for ($j = 0; $j < $pos; $j++) { + $result .= $indentStr; + } + } + } + + return $result; + } +} diff --git a/vendor/composer/composer/src/Composer/Json/JsonManipulator.php b/vendor/composer/composer/src/Composer/Json/JsonManipulator.php new file mode 100644 index 0000000..e64a56f --- /dev/null +++ b/vendor/composer/composer/src/Composer/Json/JsonManipulator.php @@ -0,0 +1,522 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Json; + +use Composer\Repository\PlatformRepository; + +/** + * @author Jordi Boggiano + */ +class JsonManipulator +{ + private static $DEFINES = '(?(DEFINE) + (? -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? ) + (? true | false | null ) + (? " ([^"\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9A-Fa-f]{4} )* " ) + (? \[ (?: (?&json) \s* (?: , (?&json) \s* )* )? \s* \] ) + (? \s* (?&string) \s* : (?&json) \s* ) + (? \{ (?: (?&pair) (?: , (?&pair) )* )? \s* \} ) + (? \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) ) + )'; + + private $contents; + private $newline; + private $indent; + + public function __construct($contents) + { + $contents = trim($contents); + if ($contents === '') { + $contents = '{}'; + } + if (!$this->pregMatch('#^\{(.*)\}$#s', $contents)) { + throw new \InvalidArgumentException('The json file must be an object ({})'); + } + $this->newline = false !== strpos($contents, "\r\n") ? "\r\n" : "\n"; + $this->contents = $contents === '{}' ? '{' . $this->newline . '}' : $contents; + $this->detectIndenting(); + } + + public function getContents() + { + return $this->contents . $this->newline; + } + + public function addLink($type, $package, $constraint, $sortPackages = false) + { + $decoded = JsonFile::parseJson($this->contents); + + // no link of that type yet + if (!isset($decoded[$type])) { + return $this->addMainKey($type, array($package => $constraint)); + } + + $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. + '(?P'.preg_quote(JsonFile::encode($type)).'\s*:\s*)(?P(?&json))(?P.*)}sx'; + if (!$this->pregMatch($regex, $this->contents, $matches)) { + return false; + } + + $links = $matches['value']; + + // try to find existing link + $packageRegex = str_replace('/', '\\\\?/', preg_quote($package)); + $regex = '{'.self::$DEFINES.'"(?P'.$packageRegex.')"(\s*:\s*)(?&string)}ix'; + if ($this->pregMatch($regex, $links, $packageMatches)) { + // update existing link + $existingPackage = $packageMatches['package']; + $packageRegex = str_replace('/', '\\\\?/', preg_quote($existingPackage)); + $links = preg_replace_callback('{'.self::$DEFINES.'"'.$packageRegex.'"(?P\s*:\s*)(?&string)}ix', function ($m) use ($existingPackage, $constraint) { + return JsonFile::encode(str_replace('\\/', '/', $existingPackage)) . $m['separator'] . '"' . $constraint . '"'; + }, $links); + } else { + if ($this->pregMatch('#^\s*\{\s*\S+.*?(\s*\}\s*)$#s', $links, $match)) { + // link missing but non empty links + $links = preg_replace( + '{'.preg_quote($match[1]).'$}', + // addcslashes is used to double up backslashes/$ since preg_replace resolves them as back references otherwise, see #1588 + addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $match[1], '\\$'), + $links + ); + } else { + // links empty + $links = '{' . $this->newline . + $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $this->newline . + $this->indent . '}'; + } + } + + if (true === $sortPackages) { + $requirements = json_decode($links, true); + $this->sortPackages($requirements); + $links = $this->format($requirements); + } + + $this->contents = $matches['start'] . $matches['property'] . $links . $matches['end']; + + return true; + } + + /** + * Sorts packages by importance (platform packages first, then PHP dependencies) and alphabetically. + * + * @link https://getcomposer.org/doc/02-libraries.md#platform-packages + * + * @param array $packages + */ + private function sortPackages(array &$packages = array()) + { + $prefix = function ($requirement) { + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $requirement)) { + return preg_replace( + array( + '/^php/', + '/^hhvm/', + '/^ext/', + '/^lib/', + '/^\D/', + ), + array( + '0-$0', + '1-$0', + '2-$0', + '3-$0', + '4-$0', + ), + $requirement + ); + } + + return '5-'.$requirement; + }; + + uksort($packages, function ($a, $b) use ($prefix) { + return strnatcmp($prefix($a), $prefix($b)); + }); + } + + public function addRepository($name, $config) + { + return $this->addSubNode('repositories', $name, $config); + } + + public function removeRepository($name) + { + return $this->removeSubNode('repositories', $name); + } + + public function addConfigSetting($name, $value) + { + return $this->addSubNode('config', $name, $value); + } + + public function removeConfigSetting($name) + { + return $this->removeSubNode('config', $name); + } + + public function addProperty($name, $value) + { + if (substr($name, 0, 6) === 'extra.') { + return $this->addSubNode('extra', substr($name, 6), $value); + } + + if (substr($name, 0, 8) === 'scripts.') { + return $this->addSubNode('scripts', substr($name, 8), $value); + } + + return $this->addMainKey($name, $value); + } + + public function removeProperty($name) + { + if (substr($name, 0, 6) === 'extra.') { + return $this->removeSubNode('extra', substr($name, 6)); + } + + if (substr($name, 0, 8) === 'scripts.') { + return $this->removeSubNode('scripts', substr($name, 8)); + } + + return $this->removeMainKey($name); + } + + public function addSubNode($mainNode, $name, $value) + { + $decoded = JsonFile::parseJson($this->contents); + + $subName = null; + if (in_array($mainNode, array('config', 'extra', 'scripts')) && false !== strpos($name, '.')) { + list($name, $subName) = explode('.', $name, 2); + } + + // no main node yet + if (!isset($decoded[$mainNode])) { + if ($subName !== null) { + $this->addMainKey($mainNode, array($name => array($subName => $value))); + } else { + $this->addMainKey($mainNode, array($name => $value)); + } + + return true; + } + + // main node content not match-able + $nodeRegex = '{'.self::$DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. + preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; + + try { + if (!$this->pregMatch($nodeRegex, $this->contents, $match)) { + return false; + } + } catch (\RuntimeException $e) { + if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { + return false; + } + throw $e; + } + + $children = $match['content']; + // invalid match due to un-regexable content, abort + if (!@json_decode($children)) { + return false; + } + + $that = $this; + + // child exists + $childRegex = '{'.self::$DEFINES.'(?P"'.preg_quote($name).'"\s*:\s*)(?P(?&json))(?P,?)}x'; + if ($this->pregMatch($childRegex, $children, $matches)) { + $children = preg_replace_callback($childRegex, function ($matches) use ($subName, $value, $that) { + if ($subName !== null) { + $curVal = json_decode($matches['content'], true); + if (!is_array($curVal)) { + $curVal = array(); + } + $curVal[$subName] = $value; + $value = $curVal; + } + + return $matches['start'] . $that->format($value, 1) . $matches['end']; + }, $children); + } else { + $this->pregMatch('#^{ \s*? (?P\S+.*?)? (?P\s*) }$#sx', $children, $match); + + $whitespace = ''; + if (!empty($match['trailingspace'])) { + $whitespace = $match['trailingspace']; + } + + if (!empty($match['content'])) { + if ($subName !== null) { + $value = array($subName => $value); + } + + // child missing but non empty children + $children = preg_replace( + '#'.$whitespace.'}$#', + addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}', '\\$'), + $children + ); + } else { + if ($subName !== null) { + $value = array($subName => $value); + } + + // children present but empty + $children = '{' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}'; + } + } + + $this->contents = preg_replace_callback($nodeRegex, function ($m) use ($children) { + return $m['start'] . $children . $m['end']; + }, $this->contents); + + return true; + } + + public function removeSubNode($mainNode, $name) + { + $decoded = JsonFile::parseJson($this->contents); + + // no node or empty node + if (empty($decoded[$mainNode])) { + return true; + } + + // no node content match-able + $nodeRegex = '{'.self::$DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. + preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; + try { + if (!$this->pregMatch($nodeRegex, $this->contents, $match)) { + return false; + } + } catch (\RuntimeException $e) { + if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { + return false; + } + throw $e; + } + + $children = $match['content']; + + // invalid match due to un-regexable content, abort + if (!@json_decode($children, true)) { + return false; + } + + $subName = null; + if (in_array($mainNode, array('config', 'extra', 'scripts')) && false !== strpos($name, '.')) { + list($name, $subName) = explode('.', $name, 2); + } + + // no node to remove + if (!isset($decoded[$mainNode][$name]) || ($subName && !isset($decoded[$mainNode][$name][$subName]))) { + return true; + } + + // try and find a match for the subkey + $keyRegex = str_replace('/', '\\\\?/', preg_quote($name)); + if ($this->pregMatch('{"'.$keyRegex.'"\s*:}i', $children)) { + // find best match for the value of "name" + if (preg_match_all('{'.self::$DEFINES.'"'.$keyRegex.'"\s*:\s*(?:(?&json))}x', $children, $matches)) { + $bestMatch = ''; + foreach ($matches[0] as $match) { + if (strlen($bestMatch) < strlen($match)) { + $bestMatch = $match; + } + } + $childrenClean = preg_replace('{,\s*'.preg_quote($bestMatch).'}i', '', $children, -1, $count); + if (1 !== $count) { + $childrenClean = preg_replace('{'.preg_quote($bestMatch).'\s*,?\s*}i', '', $childrenClean, -1, $count); + if (1 !== $count) { + return false; + } + } + } + } else { + $childrenClean = $children; + } + + // no child data left, $name was the only key in + $this->pregMatch('#^{ \s*? (?P\S+.*?)? (?P\s*) }$#sx', $childrenClean, $match); + if (empty($match['content'])) { + $newline = $this->newline; + $indent = $this->indent; + + $this->contents = preg_replace_callback($nodeRegex, function ($matches) use ($indent, $newline) { + return $matches['start'] . '{' . $newline . $indent . '}' . $matches['end']; + }, $this->contents); + + // we have a subname, so we restore the rest of $name + if ($subName !== null) { + $curVal = json_decode($children, true); + unset($curVal[$name][$subName]); + $this->addSubNode($mainNode, $name, $curVal[$name]); + } + + return true; + } + + $that = $this; + $this->contents = preg_replace_callback($nodeRegex, function ($matches) use ($that, $name, $subName, $childrenClean) { + if ($subName !== null) { + $curVal = json_decode($matches['content'], true); + unset($curVal[$name][$subName]); + $childrenClean = $that->format($curVal, 0); + } + + return $matches['start'] . $childrenClean . $matches['end']; + }, $this->contents); + + return true; + } + + public function addMainKey($key, $content) + { + $decoded = JsonFile::parseJson($this->contents); + $content = $this->format($content); + + // key exists already + $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. + '(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))(?P.*)}sx'; + if (isset($decoded[$key]) && $this->pregMatch($regex, $this->contents, $matches)) { + // invalid match due to un-regexable content, abort + if (!@json_decode('{'.$matches['key'].'}')) { + return false; + } + + $this->contents = $matches['start'] . JsonFile::encode($key).': '.$content . $matches['end']; + + return true; + } + + // append at the end of the file and keep whitespace + if ($this->pregMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) { + $this->contents = preg_replace( + '#'.$match[1].'\}$#', + addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\$'), + $this->contents + ); + + return true; + } + + // append at the end of the file + $this->contents = preg_replace( + '#\}$#', + addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\$'), + $this->contents + ); + + return true; + } + + public function removeMainKey($key) + { + $decoded = JsonFile::parseJson($this->contents); + + if (!array_key_exists($key, $decoded)) { + return true; + } + + // key exists already + $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. + '(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))\s*,?\s*(?P.*)}sx'; + if ($this->pregMatch($regex, $this->contents, $matches)) { + // invalid match due to un-regexable content, abort + if (!@json_decode('{'.$matches['removal'].'}')) { + return false; + } + + // check that we are not leaving a dangling comma on the previous line if the last line was removed + if (preg_match('#,\s*$#', $matches['start']) && preg_match('#^\}$#', $matches['end'])) { + $matches['start'] = rtrim(preg_replace('#,(\s*)$#', '$1', $matches['start']), $this->indent); + } + + $this->contents = $matches['start'] . $matches['end']; + if (preg_match('#^\{\s*\}\s*$#', $this->contents)) { + $this->contents = "{\n}"; + } + + return true; + } + + return false; + } + + public function format($data, $depth = 0) + { + if (is_array($data)) { + reset($data); + + if (is_numeric(key($data))) { + foreach ($data as $key => $val) { + $data[$key] = $this->format($val, $depth + 1); + } + + return '['.implode(', ', $data).']'; + } + + $out = '{' . $this->newline; + $elems = array(); + foreach ($data as $key => $val) { + $elems[] = str_repeat($this->indent, $depth + 2) . JsonFile::encode($key). ': '.$this->format($val, $depth + 1); + } + + return $out . implode(','.$this->newline, $elems) . $this->newline . str_repeat($this->indent, $depth + 1) . '}'; + } + + return JsonFile::encode($data); + } + + protected function detectIndenting() + { + if ($this->pregMatch('{^([ \t]+)"}m', $this->contents, $match)) { + $this->indent = $match[1]; + } else { + $this->indent = ' '; + } + } + + protected function pregMatch($re, $str, &$matches = array()) + { + $count = preg_match($re, $str, $matches); + + if ($count === false) { + switch (preg_last_error()) { + case PREG_NO_ERROR: + throw new \RuntimeException('Failed to execute regex: PREG_NO_ERROR', PREG_NO_ERROR); + case PREG_INTERNAL_ERROR: + throw new \RuntimeException('Failed to execute regex: PREG_INTERNAL_ERROR', PREG_INTERNAL_ERROR); + case PREG_BACKTRACK_LIMIT_ERROR: + throw new \RuntimeException('Failed to execute regex: PREG_BACKTRACK_LIMIT_ERROR', PREG_BACKTRACK_LIMIT_ERROR); + case PREG_RECURSION_LIMIT_ERROR: + throw new \RuntimeException('Failed to execute regex: PREG_RECURSION_LIMIT_ERROR', PREG_RECURSION_LIMIT_ERROR); + case PREG_BAD_UTF8_ERROR: + throw new \RuntimeException('Failed to execute regex: PREG_BAD_UTF8_ERROR', PREG_BAD_UTF8_ERROR); + case PREG_BAD_UTF8_OFFSET_ERROR: + throw new \RuntimeException('Failed to execute regex: PREG_BAD_UTF8_OFFSET_ERROR', PREG_BAD_UTF8_OFFSET_ERROR); + case 6: // PREG_JIT_STACKLIMIT_ERROR + if (PHP_VERSION_ID > 70000) { + throw new \RuntimeException('Failed to execute regex: PREG_JIT_STACKLIMIT_ERROR', 6); + } + // no break + default: + throw new \RuntimeException('Failed to execute regex: Unknown error'); + } + } + + return $count; + } +} diff --git a/vendor/composer/composer/src/Composer/Json/JsonValidationException.php b/vendor/composer/composer/src/Composer/Json/JsonValidationException.php new file mode 100644 index 0000000..2fa5eb4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Json/JsonValidationException.php @@ -0,0 +1,34 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Json; + +use Exception; + +/** + * @author Jordi Boggiano + */ +class JsonValidationException extends Exception +{ + protected $errors; + + public function __construct($message, $errors = array(), Exception $previous = null) + { + $this->errors = $errors; + parent::__construct($message, 0, $previous); + } + + public function getErrors() + { + return $this->errors; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/AliasPackage.php b/vendor/composer/composer/src/Composer/Package/AliasPackage.php new file mode 100644 index 0000000..89f1978 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/AliasPackage.php @@ -0,0 +1,414 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +use Composer\Semver\Constraint\Constraint; +use Composer\Package\Version\VersionParser; + +/** + * @author Jordi Boggiano + */ +class AliasPackage extends BasePackage implements CompletePackageInterface +{ + protected $version; + protected $prettyVersion; + protected $dev; + protected $rootPackageAlias = false; + protected $stability; + + /** @var PackageInterface */ + protected $aliasOf; + /** @var Link[] */ + protected $requires; + /** @var Link[] */ + protected $devRequires; + /** @var Link[] */ + protected $conflicts; + /** @var Link[] */ + protected $provides; + /** @var Link[] */ + protected $replaces; + + /** + * All descendants' constructors should call this parent constructor + * + * @param PackageInterface $aliasOf The package this package is an alias of + * @param string $version The version the alias must report + * @param string $prettyVersion The alias's non-normalized version + */ + public function __construct(PackageInterface $aliasOf, $version, $prettyVersion) + { + parent::__construct($aliasOf->getName()); + + $this->version = $version; + $this->prettyVersion = $prettyVersion; + $this->aliasOf = $aliasOf; + $this->stability = VersionParser::parseStability($version); + $this->dev = $this->stability === 'dev'; + + foreach (array('requires', 'devRequires', 'conflicts', 'provides', 'replaces') as $type) { + $links = $aliasOf->{'get' . ucfirst($type)}(); + $this->$type = $this->replaceSelfVersionDependencies($links, $type); + } + } + + /** + * @return PackageInterface + */ + public function getAliasOf() + { + return $this->aliasOf; + } + + /** + * {@inheritDoc} + */ + public function getVersion() + { + return $this->version; + } + + /** + * {@inheritDoc} + */ + public function getStability() + { + return $this->stability; + } + + /** + * {@inheritDoc} + */ + public function getPrettyVersion() + { + return $this->prettyVersion; + } + + /** + * {@inheritDoc} + */ + public function isDev() + { + return $this->dev; + } + + /** + * {@inheritDoc} + */ + public function getRequires() + { + return $this->requires; + } + + /** + * {@inheritDoc} + */ + public function getConflicts() + { + return $this->conflicts; + } + + /** + * {@inheritDoc} + */ + public function getProvides() + { + return $this->provides; + } + + /** + * {@inheritDoc} + */ + public function getReplaces() + { + return $this->replaces; + } + + /** + * {@inheritDoc} + */ + public function getDevRequires() + { + return $this->devRequires; + } + + /** + * Stores whether this is an alias created by an aliasing in the requirements of the root package or not + * + * Use by the policy for sorting manually aliased packages first, see #576 + * + * @param bool $value + * + * @return mixed + */ + public function setRootPackageAlias($value) + { + return $this->rootPackageAlias = $value; + } + + /** + * @see setRootPackageAlias + * @return bool + */ + public function isRootPackageAlias() + { + return $this->rootPackageAlias; + } + + /** + * @param Link[] $links + * @param string $linkType + * + * @return Link[] + */ + protected function replaceSelfVersionDependencies(array $links, $linkType) + { + if (in_array($linkType, array('conflicts', 'provides', 'replaces'), true)) { + $newLinks = array(); + foreach ($links as $link) { + // link is self.version, but must be replacing also the replaced version + if ('self.version' === $link->getPrettyConstraint()) { + $newLinks[] = new Link($link->getSource(), $link->getTarget(), new Constraint('=', $this->version), $linkType, $this->prettyVersion); + } + } + $links = array_merge($links, $newLinks); + } else { + foreach ($links as $index => $link) { + if ('self.version' === $link->getPrettyConstraint()) { + $links[$index] = new Link($link->getSource(), $link->getTarget(), new Constraint('=', $this->version), $linkType, $this->prettyVersion); + } + } + } + + return $links; + } + + /*************************************** + * Wrappers around the aliased package * + ***************************************/ + + public function getType() + { + return $this->aliasOf->getType(); + } + + public function getTargetDir() + { + return $this->aliasOf->getTargetDir(); + } + + public function getExtra() + { + return $this->aliasOf->getExtra(); + } + + public function setInstallationSource($type) + { + $this->aliasOf->setInstallationSource($type); + } + + public function getInstallationSource() + { + return $this->aliasOf->getInstallationSource(); + } + + public function getSourceType() + { + return $this->aliasOf->getSourceType(); + } + + public function getSourceUrl() + { + return $this->aliasOf->getSourceUrl(); + } + + public function getSourceUrls() + { + return $this->aliasOf->getSourceUrls(); + } + + public function getSourceReference() + { + return $this->aliasOf->getSourceReference(); + } + + public function setSourceReference($reference) + { + return $this->aliasOf->setSourceReference($reference); + } + + public function setSourceMirrors($mirrors) + { + return $this->aliasOf->setSourceMirrors($mirrors); + } + + public function getSourceMirrors() + { + return $this->aliasOf->getSourceMirrors(); + } + + public function getDistType() + { + return $this->aliasOf->getDistType(); + } + + public function getDistUrl() + { + return $this->aliasOf->getDistUrl(); + } + + public function getDistUrls() + { + return $this->aliasOf->getDistUrls(); + } + + public function getDistReference() + { + return $this->aliasOf->getDistReference(); + } + + public function setDistReference($reference) + { + return $this->aliasOf->setDistReference($reference); + } + + public function getDistSha1Checksum() + { + return $this->aliasOf->getDistSha1Checksum(); + } + + public function setTransportOptions(array $options) + { + return $this->aliasOf->setTransportOptions($options); + } + + public function getTransportOptions() + { + return $this->aliasOf->getTransportOptions(); + } + + public function setDistMirrors($mirrors) + { + return $this->aliasOf->setDistMirrors($mirrors); + } + + public function getDistMirrors() + { + return $this->aliasOf->getDistMirrors(); + } + + public function getScripts() + { + return $this->aliasOf->getScripts(); + } + + public function getLicense() + { + return $this->aliasOf->getLicense(); + } + + public function getAutoload() + { + return $this->aliasOf->getAutoload(); + } + + public function getDevAutoload() + { + return $this->aliasOf->getDevAutoload(); + } + + public function getIncludePaths() + { + return $this->aliasOf->getIncludePaths(); + } + + public function getRepositories() + { + return $this->aliasOf->getRepositories(); + } + + public function getReleaseDate() + { + return $this->aliasOf->getReleaseDate(); + } + + public function getBinaries() + { + return $this->aliasOf->getBinaries(); + } + + public function getKeywords() + { + return $this->aliasOf->getKeywords(); + } + + public function getDescription() + { + return $this->aliasOf->getDescription(); + } + + public function getHomepage() + { + return $this->aliasOf->getHomepage(); + } + + public function getSuggests() + { + return $this->aliasOf->getSuggests(); + } + + public function getAuthors() + { + return $this->aliasOf->getAuthors(); + } + + public function getSupport() + { + return $this->aliasOf->getSupport(); + } + + public function getNotificationUrl() + { + return $this->aliasOf->getNotificationUrl(); + } + + public function getArchiveExcludes() + { + return $this->aliasOf->getArchiveExcludes(); + } + + public function isAbandoned() + { + return $this->aliasOf->isAbandoned(); + } + + public function getReplacementPackage() + { + return $this->aliasOf->getReplacementPackage(); + } + + public function __toString() + { + return parent::__toString().' (alias of '.$this->aliasOf->getVersion().')'; + } + + public function setDistUrl($url) + { + return $this->aliasOf->setDistUrl($url); + } + + public function setDistType($type) + { + return $this->aliasOf->setDistType($type); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php new file mode 100644 index 0000000..4a9a5af --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php @@ -0,0 +1,44 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +use FilterIterator; +use PharData; + +class ArchivableFilesFilter extends FilterIterator +{ + private $dirs = array(); + + /** + * @return bool true if the current element is acceptable, otherwise false. + */ + public function accept() + { + $file = $this->getInnerIterator()->current(); + if ($file->isDir()) { + $this->dirs[] = (string) $file; + + return false; + } + + return true; + } + + public function addEmptyDir(PharData $phar, $sources) + { + foreach ($this->dirs as $filepath) { + $localname = str_replace($sources . "/", '', $filepath); + $phar->addEmptyDir($localname); + } + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php b/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php new file mode 100644 index 0000000..150e5f4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php @@ -0,0 +1,105 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +use Composer\Util\Filesystem; +use FilesystemIterator; +use Symfony\Component\Finder\Finder; +use Symfony\Component\Finder\SplFileInfo; + +/** + * A Symfony Finder wrapper which locates files that should go into archives + * + * Handles .gitignore, .gitattributes and .hgignore files as well as composer's + * own exclude rules from composer.json + * + * @author Nils Adermann + */ +class ArchivableFilesFinder extends \FilterIterator +{ + /** + * @var Finder + */ + protected $finder; + + /** + * Initializes the internal Symfony Finder with appropriate filters + * + * @param string $sources Path to source files to be archived + * @param array $excludes Composer's own exclude rules from composer.json + * @param bool $ignoreFilters Ignore filters when looking for files + */ + public function __construct($sources, array $excludes, $ignoreFilters = false) + { + $fs = new Filesystem(); + + $sources = $fs->normalizePath($sources); + + if ($ignoreFilters) { + $filters = array(); + } else { + $filters = array( + new HgExcludeFilter($sources), + new GitExcludeFilter($sources), + new ComposerExcludeFilter($sources, $excludes), + ); + } + + $this->finder = new Finder(); + + $filter = function (\SplFileInfo $file) use ($sources, $filters, $fs) { + if ($file->isLink() && strpos($file->getLinkTarget(), $sources) !== 0) { + return false; + } + + $relativePath = preg_replace( + '#^'.preg_quote($sources, '#').'#', + '', + $fs->normalizePath($file->getRealPath()) + ); + + $exclude = false; + foreach ($filters as $filter) { + $exclude = $filter->filter($relativePath, $exclude); + } + + return !$exclude; + }; + + if (method_exists($filter, 'bindTo')) { + $filter = $filter->bindTo(null); + } + + $this->finder + ->in($sources) + ->filter($filter) + ->ignoreVCS(true) + ->ignoreDotFiles(false); + + parent::__construct($this->finder->getIterator()); + } + + public function accept() + { + /** @var SplFileInfo $current */ + $current = $this->getInnerIterator()->current(); + + if (!$current->isDir()) { + return true; + } + + $iterator = new FilesystemIterator($current, FilesystemIterator::SKIP_DOTS); + + return !$iterator->valid(); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php b/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php new file mode 100644 index 0000000..6f8fa8a --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php @@ -0,0 +1,183 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +use Composer\Downloader\DownloadManager; +use Composer\Package\PackageInterface; +use Composer\Package\RootPackageInterface; +use Composer\Util\Filesystem; +use Composer\Json\JsonFile; + +/** + * @author Matthieu Moquet + * @author Till Klampaeckel + */ +class ArchiveManager +{ + protected $downloadManager; + + protected $archivers = array(); + + /** + * @var bool + */ + protected $overwriteFiles = true; + + /** + * @param DownloadManager $downloadManager A manager used to download package sources + */ + public function __construct(DownloadManager $downloadManager) + { + $this->downloadManager = $downloadManager; + } + + /** + * @param ArchiverInterface $archiver + */ + public function addArchiver(ArchiverInterface $archiver) + { + $this->archivers[] = $archiver; + } + + /** + * Set whether existing archives should be overwritten + * + * @param bool $overwriteFiles New setting + * + * @return $this + */ + public function setOverwriteFiles($overwriteFiles) + { + $this->overwriteFiles = $overwriteFiles; + + return $this; + } + + /** + * Generate a distinct filename for a particular version of a package. + * + * @param PackageInterface $package The package to get a name for + * + * @return string A filename without an extension + */ + public function getPackageFilename(PackageInterface $package) + { + $nameParts = array(preg_replace('#[^a-z0-9-_]#i', '-', $package->getName())); + + if (preg_match('{^[a-f0-9]{40}$}', $package->getDistReference())) { + array_push($nameParts, $package->getDistReference(), $package->getDistType()); + } else { + array_push($nameParts, $package->getPrettyVersion(), $package->getDistReference()); + } + + if ($package->getSourceReference()) { + $nameParts[] = substr(sha1($package->getSourceReference()), 0, 6); + } + + $name = implode('-', array_filter($nameParts, function ($p) { + return !empty($p); + })); + + return str_replace('/', '-', $name); + } + + /** + * Create an archive of the specified package. + * + * @param PackageInterface $package The package to archive + * @param string $format The format of the archive (zip, tar, ...) + * @param string $targetDir The directory where to build the archive + * @param string|null $fileName The relative file name to use for the archive, or null to generate + * the package name. Note that the format will be appended to this name + * @param bool $ignoreFilters Ignore filters when looking for files in the package + * @throws \InvalidArgumentException + * @throws \RuntimeException + * @return string The path of the created archive + */ + public function archive(PackageInterface $package, $format, $targetDir, $fileName = null, $ignoreFilters = false) + { + if (empty($format)) { + throw new \InvalidArgumentException('Format must be specified'); + } + + // Search for the most appropriate archiver + $usableArchiver = null; + foreach ($this->archivers as $archiver) { + if ($archiver->supports($format, $package->getSourceType())) { + $usableArchiver = $archiver; + break; + } + } + + // Checks the format/source type are supported before downloading the package + if (null === $usableArchiver) { + throw new \RuntimeException(sprintf('No archiver found to support %s format', $format)); + } + + $filesystem = new Filesystem(); + if (null === $fileName) { + $packageName = $this->getPackageFilename($package); + } else { + $packageName = $fileName; + } + + // Archive filename + $filesystem->ensureDirectoryExists($targetDir); + $target = realpath($targetDir).'/'.$packageName.'.'.$format; + $filesystem->ensureDirectoryExists(dirname($target)); + + if (!$this->overwriteFiles && file_exists($target)) { + return $target; + } + + if ($package instanceof RootPackageInterface) { + $sourcePath = realpath('.'); + } else { + // Directory used to download the sources + $sourcePath = sys_get_temp_dir().'/composer_archive'.uniqid(); + $filesystem->ensureDirectoryExists($sourcePath); + + try { + // Download sources + $this->downloadManager->download($package, $sourcePath); + } catch (\Exception $e) { + $filesystem->removeDirectory($sourcePath); + throw $e; + } + + // Check exclude from downloaded composer.json + if (file_exists($composerJsonPath = $sourcePath.'/composer.json')) { + $jsonFile = new JsonFile($composerJsonPath); + $jsonData = $jsonFile->read(); + if (!empty($jsonData['archive']['exclude'])) { + $package->setArchiveExcludes($jsonData['archive']['exclude']); + } + } + } + + // Create the archive + $tempTarget = sys_get_temp_dir().'/composer_archive'.uniqid().'.'.$format; + $filesystem->ensureDirectoryExists(dirname($tempTarget)); + + $archivePath = $usableArchiver->archive($sourcePath, $tempTarget, $format, $package->getArchiveExcludes(), $ignoreFilters); + $filesystem->rename($archivePath, $target); + + // cleanup temporary download + if (!$package instanceof RootPackageInterface) { + $filesystem->removeDirectory($sourcePath); + } + $filesystem->remove($tempTarget); + + return $target; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php b/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php new file mode 100644 index 0000000..4e5fa54 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php @@ -0,0 +1,43 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +/** + * @author Till Klampaeckel + * @author Matthieu Moquet + * @author Nils Adermann + */ +interface ArchiverInterface +{ + /** + * Create an archive from the sources. + * + * @param string $sources The sources directory + * @param string $target The target file + * @param string $format The format used for archive + * @param array $excludes A list of patterns for files to exclude + * + * @return string The path to the written archive file + */ + public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false); + + /** + * Format supported by the archiver. + * + * @param string $format The archive format + * @param string $sourceType The source type (git, svn, hg, etc.) + * + * @return bool true if the format is supported by the archiver + */ + public function supports($format, $sourceType); +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php new file mode 100644 index 0000000..18fa054 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php @@ -0,0 +1,148 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +use Symfony\Component\Finder; + +/** + * @author Nils Adermann + */ +abstract class BaseExcludeFilter +{ + /** + * @var string + */ + protected $sourcePath; + + /** + * @var array + */ + protected $excludePatterns; + + /** + * @param string $sourcePath Directory containing sources to be filtered + */ + public function __construct($sourcePath) + { + $this->sourcePath = $sourcePath; + $this->excludePatterns = array(); + } + + /** + * Checks the given path against all exclude patterns in this filter + * + * Negated patterns overwrite exclude decisions of previous filters. + * + * @param string $relativePath The file's path relative to the sourcePath + * @param bool $exclude Whether a previous filter wants to exclude this file + * + * @return bool Whether the file should be excluded + */ + public function filter($relativePath, $exclude) + { + foreach ($this->excludePatterns as $patternData) { + list($pattern, $negate, $stripLeadingSlash) = $patternData; + + if ($stripLeadingSlash) { + $path = substr($relativePath, 1); + } else { + $path = $relativePath; + } + + if (preg_match($pattern, $path)) { + $exclude = !$negate; + } + } + + return $exclude; + } + + /** + * Processes a file containing exclude rules of different formats per line + * + * @param array $lines A set of lines to be parsed + * @param callable $lineParser The parser to be used on each line + * + * @return array Exclude patterns to be used in filter() + */ + protected function parseLines(array $lines, $lineParser) + { + return array_filter( + array_map( + function ($line) use ($lineParser) { + $line = trim($line); + + if (!$line || 0 === strpos($line, '#')) { + return null; + } + + return call_user_func($lineParser, $line); + }, + $lines + ), + function ($pattern) { + return $pattern !== null; + } + ); + } + + /** + * Generates a set of exclude patterns for filter() from gitignore rules + * + * @param array $rules A list of exclude rules in gitignore syntax + * + * @return array Exclude patterns + */ + protected function generatePatterns($rules) + { + $patterns = array(); + foreach ($rules as $rule) { + $patterns[] = $this->generatePattern($rule); + } + + return $patterns; + } + + /** + * Generates an exclude pattern for filter() from a gitignore rule + * + * @param string $rule An exclude rule in gitignore syntax + * + * @return array An exclude pattern + */ + protected function generatePattern($rule) + { + $negate = false; + $pattern = '{'; + + if (strlen($rule) && $rule[0] === '!') { + $negate = true; + $rule = substr($rule, 1); + } + + if (strlen($rule) && $rule[0] === '/') { + $pattern .= '^/'; + $rule = substr($rule, 1); + } elseif (strlen($rule) - 1 === strpos($rule, '/')) { + $pattern .= '/'; + $rule = substr($rule, 0, -1); + } elseif (false === strpos($rule, '/')) { + $pattern .= '/'; + } + + // remove delimiters as well as caret (^) and dollar sign ($) from the regex + $pattern .= substr(Finder\Glob::toRegex($rule), 2, -2) . '(?=$|/)'; + + return array($pattern . '}', $negate, false); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php new file mode 100644 index 0000000..9e66386 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php @@ -0,0 +1,31 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +/** + * An exclude filter which processes composer's own exclude rules + * + * @author Nils Adermann + */ +class ComposerExcludeFilter extends BaseExcludeFilter +{ + /** + * @param string $sourcePath Directory containing sources to be filtered + * @param array $excludeRules An array of exclude rules from composer.json + */ + public function __construct($sourcePath, array $excludeRules) + { + parent::__construct($sourcePath); + $this->excludePatterns = $this->generatePatterns($excludeRules); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php new file mode 100644 index 0000000..f797348 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php @@ -0,0 +1,79 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +/** + * An exclude filter that processes gitignore and gitattributes + * + * It respects export-ignore git attributes + * + * @author Nils Adermann + */ +class GitExcludeFilter extends BaseExcludeFilter +{ + /** + * Parses .gitignore and .gitattributes files if they exist + * + * @param string $sourcePath + */ + public function __construct($sourcePath) + { + parent::__construct($sourcePath); + + if (file_exists($sourcePath.'/.gitignore')) { + $this->excludePatterns = $this->parseLines( + file($sourcePath.'/.gitignore'), + array($this, 'parseGitIgnoreLine') + ); + } + if (file_exists($sourcePath.'/.gitattributes')) { + $this->excludePatterns = array_merge( + $this->excludePatterns, + $this->parseLines( + file($sourcePath.'/.gitattributes'), + array($this, 'parseGitAttributesLine') + ) + ); + } + } + + /** + * Callback line parser which process gitignore lines + * + * @param string $line A line from .gitignore + * + * @return array An exclude pattern for filter() + */ + public function parseGitIgnoreLine($line) + { + return $this->generatePattern($line); + } + + /** + * Callback parser which finds export-ignore rules in git attribute lines + * + * @param string $line A line from .gitattributes + * + * @return array|null An exclude pattern for filter() + */ + public function parseGitAttributesLine($line) + { + $parts = preg_split('#\s+#', $line); + + if (count($parts) == 2 && $parts[1] === 'export-ignore') { + return $this->generatePattern($parts[0]); + } + + return null; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php new file mode 100644 index 0000000..b83b775 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php @@ -0,0 +1,107 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +use Symfony\Component\Finder; + +/** + * An exclude filter that processes hgignore files + * + * @author Nils Adermann + */ +class HgExcludeFilter extends BaseExcludeFilter +{ + const HG_IGNORE_REGEX = 1; + const HG_IGNORE_GLOB = 2; + + /** + * Either HG_IGNORE_REGEX or HG_IGNORE_GLOB + * @var int + */ + protected $patternMode; + + /** + * Parses .hgignore file if it exist + * + * @param string $sourcePath + */ + public function __construct($sourcePath) + { + parent::__construct($sourcePath); + + $this->patternMode = self::HG_IGNORE_REGEX; + + if (file_exists($sourcePath.'/.hgignore')) { + $this->excludePatterns = $this->parseLines( + file($sourcePath.'/.hgignore'), + array($this, 'parseHgIgnoreLine') + ); + } + } + + /** + * Callback line parser which process hgignore lines + * + * @param string $line A line from .hgignore + * + * @return array|null An exclude pattern for filter() + */ + public function parseHgIgnoreLine($line) + { + if (preg_match('#^syntax\s*:\s*(glob|regexp)$#', $line, $matches)) { + if ($matches[1] === 'glob') { + $this->patternMode = self::HG_IGNORE_GLOB; + } else { + $this->patternMode = self::HG_IGNORE_REGEX; + } + + return null; + } + + if ($this->patternMode == self::HG_IGNORE_GLOB) { + return $this->patternFromGlob($line); + } + + return $this->patternFromRegex($line); + } + + /** + * Generates an exclude pattern for filter() from a hg glob expression + * + * @param string $line A line from .hgignore in glob mode + * + * @return array An exclude pattern for filter() + */ + protected function patternFromGlob($line) + { + $pattern = '#'.substr(Finder\Glob::toRegex($line), 2, -1).'#'; + $pattern = str_replace('[^/]*', '.*', $pattern); + + return array($pattern, false, true); + } + + /** + * Generates an exclude pattern for filter() from a hg regexp expression + * + * @param string $line A line from .hgignore in regexp mode + * + * @return array An exclude pattern for filter() + */ + public function patternFromRegex($line) + { + // WTF need to escape the delimiter safely + $pattern = '#'.preg_replace('/((?:\\\\\\\\)*)(\\\\?)#/', '\1\2\2\\#', $line).'#'; + + return array($pattern, false, true); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php b/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php new file mode 100644 index 0000000..f9a3923 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php @@ -0,0 +1,97 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +/** + * @author Till Klampaeckel + * @author Nils Adermann + * @author Matthieu Moquet + */ +class PharArchiver implements ArchiverInterface +{ + protected static $formats = array( + 'zip' => \Phar::ZIP, + 'tar' => \Phar::TAR, + 'tar.gz' => \Phar::TAR, + 'tar.bz2' => \Phar::TAR, + ); + + protected static $compressFormats = array( + 'tar.gz' => \Phar::GZ, + 'tar.bz2' => \Phar::BZ2, + ); + + /** + * {@inheritdoc} + */ + public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false) + { + $sources = realpath($sources); + + // Phar would otherwise load the file which we don't want + if (file_exists($target)) { + unlink($target); + } + + try { + $filename = substr($target, 0, strrpos($target, $format) - 1); + + // Check if compress format + if (isset(static::$compressFormats[$format])) { + // Current compress format supported base on tar + $target = $filename . '.tar'; + } + + $phar = new \PharData($target, null, null, static::$formats[$format]); + $files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); + $filesOnly = new ArchivableFilesFilter($files); + $phar->buildFromIterator($filesOnly, $sources); + $filesOnly->addEmptyDir($phar, $sources); + + if (isset(static::$compressFormats[$format])) { + // Check can be compressed? + if (!$phar->canCompress(static::$compressFormats[$format])) { + throw new \RuntimeException(sprintf('Can not compress to %s format', $format)); + } + + // Delete old tar + unlink($target); + + // Compress the new tar + $phar->compress(static::$compressFormats[$format]); + + // Make the correct filename + $target = $filename . '.' . $format; + } + + return $target; + } catch (\UnexpectedValueException $e) { + $message = sprintf( + "Could not create archive '%s' from '%s': %s", + $target, + $sources, + $e->getMessage() + ); + + throw new \RuntimeException($message, $e->getCode(), $e); + } + } + + /** + * {@inheritdoc} + */ + public function supports($format, $sourceType) + { + return isset(static::$formats[$format]); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php b/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php new file mode 100644 index 0000000..65694cb --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php @@ -0,0 +1,74 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Archiver; + +use ZipArchive; +use Composer\Util\Filesystem; + +/** + * @author Jan Prieser + */ +class ZipArchiver implements ArchiverInterface +{ + protected static $formats = array( + 'zip' => 1, + ); + + /** + * {@inheritdoc} + */ + public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false) + { + $fs = new Filesystem(); + $sources = $fs->normalizePath($sources); + + $zip = new ZipArchive(); + $res = $zip->open($target, ZipArchive::CREATE); + if ($res === true) { + $files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); + foreach ($files as $file) { + /** @var \SplFileInfo $file */ + $filepath = strtr($file->getPath()."/".$file->getFilename(), '\\', '/'); + $localname = str_replace($sources.'/', '', $filepath); + if ($file->isDir()) { + $zip->addEmptyDir($localname); + } else { + $zip->addFile($filepath, $localname); + } + } + if ($zip->close()) { + return $target; + } + } + $message = sprintf( + "Could not create archive '%s' from '%s': %s", + $target, + $sources, + $zip->getStatusString() + ); + throw new \RuntimeException($message); + } + + /** + * {@inheritdoc} + */ + public function supports($format, $sourceType) + { + return isset(static::$formats[$format]) && $this->compressionAvailable(); + } + + private function compressionAvailable() + { + return class_exists('ZipArchive'); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/BasePackage.php b/vendor/composer/composer/src/Composer/Package/BasePackage.php new file mode 100644 index 0000000..f2f5be7 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/BasePackage.php @@ -0,0 +1,251 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +use Composer\Repository\RepositoryInterface; +use Composer\Repository\PlatformRepository; + +/** + * Base class for packages providing name storage and default match implementation + * + * @author Nils Adermann + */ +abstract class BasePackage implements PackageInterface +{ + public static $supportedLinkTypes = array( + 'require' => array('description' => 'requires', 'method' => 'requires'), + 'conflict' => array('description' => 'conflicts', 'method' => 'conflicts'), + 'provide' => array('description' => 'provides', 'method' => 'provides'), + 'replace' => array('description' => 'replaces', 'method' => 'replaces'), + 'require-dev' => array('description' => 'requires (for development)', 'method' => 'devRequires'), + ); + + const STABILITY_STABLE = 0; + const STABILITY_RC = 5; + const STABILITY_BETA = 10; + const STABILITY_ALPHA = 15; + const STABILITY_DEV = 20; + + public static $stabilities = array( + 'stable' => self::STABILITY_STABLE, + 'RC' => self::STABILITY_RC, + 'beta' => self::STABILITY_BETA, + 'alpha' => self::STABILITY_ALPHA, + 'dev' => self::STABILITY_DEV, + ); + + /** + * READ-ONLY: The package id, public for fast access in dependency solver + * @var int + */ + public $id; + /** @var string */ + protected $name; + /** @var string */ + protected $prettyName; + /** @var RepositoryInterface */ + protected $repository; + /** @var array */ + protected $transportOptions = array(); + + /** + * All descendants' constructors should call this parent constructor + * + * @param string $name The package's name + */ + public function __construct($name) + { + $this->prettyName = $name; + $this->name = strtolower($name); + $this->id = -1; + } + + /** + * {@inheritDoc} + */ + public function getName() + { + return $this->name; + } + + /** + * {@inheritDoc} + */ + public function getPrettyName() + { + return $this->prettyName; + } + + /** + * {@inheritDoc} + */ + public function getNames() + { + $names = array( + $this->getName() => true, + ); + + foreach ($this->getProvides() as $link) { + $names[$link->getTarget()] = true; + } + + foreach ($this->getReplaces() as $link) { + $names[$link->getTarget()] = true; + } + + return array_keys($names); + } + + /** + * {@inheritDoc} + */ + public function setId($id) + { + $this->id = $id; + } + + /** + * {@inheritDoc} + */ + public function getId() + { + return $this->id; + } + + /** + * {@inheritDoc} + */ + public function setRepository(RepositoryInterface $repository) + { + if ($this->repository && $repository !== $this->repository) { + throw new \LogicException('A package can only be added to one repository'); + } + $this->repository = $repository; + } + + /** + * {@inheritDoc} + */ + public function getRepository() + { + return $this->repository; + } + + /** + * {@inheritDoc} + */ + public function getTransportOptions() + { + return $this->transportOptions; + } + + /** + * Configures the list of options to download package dist files + * + * @param array $options + */ + public function setTransportOptions(array $options) + { + $this->transportOptions = $options; + } + + /** + * checks if this package is a platform package + * + * @return bool + */ + public function isPlatform() + { + return $this->getRepository() instanceof PlatformRepository; + } + + /** + * Returns package unique name, constructed from name, version and release type. + * + * @return string + */ + public function getUniqueName() + { + return $this->getName().'-'.$this->getVersion(); + } + + public function equals(PackageInterface $package) + { + $self = $this; + if ($this instanceof AliasPackage) { + $self = $this->getAliasOf(); + } + if ($package instanceof AliasPackage) { + $package = $package->getAliasOf(); + } + + return $package === $self; + } + + /** + * Converts the package into a readable and unique string + * + * @return string + */ + public function __toString() + { + return $this->getUniqueName(); + } + + public function getPrettyString() + { + return $this->getPrettyName().' '.$this->getPrettyVersion(); + } + + /** + * {@inheritDoc} + */ + public function getFullPrettyVersion($truncate = true) + { + if (!$this->isDev() || !in_array($this->getSourceType(), array('hg', 'git'))) { + return $this->getPrettyVersion(); + } + + // if source reference is a sha1 hash -- truncate + if ($truncate && strlen($this->getSourceReference()) === 40) { + return $this->getPrettyVersion() . ' ' . substr($this->getSourceReference(), 0, 7); + } + + return $this->getPrettyVersion() . ' ' . $this->getSourceReference(); + } + + public function getStabilityPriority() + { + return self::$stabilities[$this->getStability()]; + } + + public function __clone() + { + $this->repository = null; + $this->id = -1; + } + + /** + * Build a regexp from a package name, expanding * globs as required + * + * @param string $whiteListedPattern + * @param bool $wrap Wrap the cleaned string by the given string + * @return string + */ + public static function packageNameToRegexp($whiteListedPattern, $wrap = '{^%s$}i') + { + $cleanedWhiteListedPattern = str_replace('\\*', '.*', preg_quote($whiteListedPattern)); + + return sprintf($wrap, $cleanedWhiteListedPattern); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php b/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php new file mode 100644 index 0000000..c0ab98d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php @@ -0,0 +1,129 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Comparer; + +/** + * class Comparer + * + * @author Hector Prats + */ +class Comparer +{ + private $source; + private $update; + private $changed; + + public function setSource($source) + { + $this->source = $source; + } + + public function setUpdate($update) + { + $this->update = $update; + } + + public function getChanged($toString = false, $explicated = false) + { + $changed = $this->changed; + if (!count($changed)) { + return false; + } + if ($explicated) { + foreach ($changed as $sectionKey => $itemSection) { + foreach ($itemSection as $itemKey => $item) { + $changed[$sectionKey][$itemKey] = $item.' ('.$sectionKey.')'; + } + } + } + + if ($toString) { + foreach ($changed as $sectionKey => $itemSection) { + foreach ($itemSection as $itemKey => $item) { + $changed['string'][] = $item."\r\n"; + } + } + $changed = implode("\r\n", $changed['string']); + } + + return $changed; + } + + public function doCompare() + { + $source = array(); + $destination = array(); + $this->changed = array(); + $currentDirectory = getcwd(); + chdir($this->source); + $source = $this->doTree('.', $source); + if (!is_array($source)) { + return; + } + chdir($currentDirectory); + chdir($this->update); + $destination = $this->doTree('.', $destination); + if (!is_array($destination)) { + exit; + } + chdir($currentDirectory); + foreach ($source as $dir => $value) { + foreach ($value as $file => $hash) { + if (isset($destination[$dir][$file])) { + if ($hash !== $destination[$dir][$file]) { + $this->changed['changed'][] = $dir.'/'.$file; + } + } else { + $this->changed['removed'][] = $dir.'/'.$file; + } + } + } + foreach ($destination as $dir => $value) { + foreach ($value as $file => $hash) { + if (!isset($source[$dir][$file])) { + $this->changed['added'][] = $dir.'/'.$file; + } + } + } + } + + private function doTree($dir, &$array) + { + if ($dh = opendir($dir)) { + while ($file = readdir($dh)) { + if ($file !== '.' && $file !== '..') { + if (is_dir($dir.'/'.$file)) { + if (!count($array)) { + $array[0] = 'Temp'; + } + if (!$this->doTree($dir.'/'.$file, $array)) { + return false; + } + } else { + if (filesize($dir.'/'.$file)) { + set_time_limit(30); + $array[$dir][$file] = md5_file($dir.'/'.$file); + } + } + } + } + if (count($array) > 1 && isset($array['0'])) { + unset($array['0']); + } + + return $array; + } + + return false; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/CompletePackage.php b/vendor/composer/composer/src/Composer/Package/CompletePackage.php new file mode 100644 index 0000000..5dbdb82 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/CompletePackage.php @@ -0,0 +1,199 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +/** + * Package containing additional metadata that is not used by the solver + * + * @author Nils Adermann + */ +class CompletePackage extends Package implements CompletePackageInterface +{ + protected $repositories; + protected $license = array(); + protected $keywords; + protected $authors; + protected $description; + protected $homepage; + protected $scripts = array(); + protected $support = array(); + protected $abandoned = false; + + /** + * @param array $scripts + */ + public function setScripts(array $scripts) + { + $this->scripts = $scripts; + } + + /** + * {@inheritDoc} + */ + public function getScripts() + { + return $this->scripts; + } + + /** + * Set the repositories + * + * @param array $repositories + */ + public function setRepositories($repositories) + { + $this->repositories = $repositories; + } + + /** + * {@inheritDoc} + */ + public function getRepositories() + { + return $this->repositories; + } + + /** + * Set the license + * + * @param array $license + */ + public function setLicense(array $license) + { + $this->license = $license; + } + + /** + * {@inheritDoc} + */ + public function getLicense() + { + return $this->license; + } + + /** + * Set the keywords + * + * @param array $keywords + */ + public function setKeywords(array $keywords) + { + $this->keywords = $keywords; + } + + /** + * {@inheritDoc} + */ + public function getKeywords() + { + return $this->keywords; + } + + /** + * Set the authors + * + * @param array $authors + */ + public function setAuthors(array $authors) + { + $this->authors = $authors; + } + + /** + * {@inheritDoc} + */ + public function getAuthors() + { + return $this->authors; + } + + /** + * Set the description + * + * @param string $description + */ + public function setDescription($description) + { + $this->description = $description; + } + + /** + * {@inheritDoc} + */ + public function getDescription() + { + return $this->description; + } + + /** + * Set the homepage + * + * @param string $homepage + */ + public function setHomepage($homepage) + { + $this->homepage = $homepage; + } + + /** + * {@inheritDoc} + */ + public function getHomepage() + { + return $this->homepage; + } + + /** + * Set the support information + * + * @param array $support + */ + public function setSupport(array $support) + { + $this->support = $support; + } + + /** + * {@inheritDoc} + */ + public function getSupport() + { + return $this->support; + } + + /** + * @return bool + */ + public function isAbandoned() + { + return (bool) $this->abandoned; + } + + /** + * @param bool|string $abandoned + */ + public function setAbandoned($abandoned) + { + $this->abandoned = $abandoned; + } + + /** + * If the package is abandoned and has a suggested replacement, this method returns it + * + * @return string|null + */ + public function getReplacementPackage() + { + return is_string($this->abandoned) ? $this->abandoned : null; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php b/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php new file mode 100644 index 0000000..4036b3c --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php @@ -0,0 +1,95 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +/** + * Defines package metadata that is not necessarily needed for solving and installing packages + * + * @author Nils Adermann + */ +interface CompletePackageInterface extends PackageInterface +{ + /** + * Returns the scripts of this package + * + * @return array array('script name' => array('listeners')) + */ + public function getScripts(); + + /** + * Returns an array of repositories + * + * {"": {}} + * + * @return array Repositories + */ + public function getRepositories(); + + /** + * Returns the package license, e.g. MIT, BSD, GPL + * + * @return array The package licenses + */ + public function getLicense(); + + /** + * Returns an array of keywords relating to the package + * + * @return array + */ + public function getKeywords(); + + /** + * Returns the package description + * + * @return string + */ + public function getDescription(); + + /** + * Returns the package homepage + * + * @return string + */ + public function getHomepage(); + + /** + * Returns an array of authors of the package + * + * Each item can contain name/homepage/email keys + * + * @return array + */ + public function getAuthors(); + + /** + * Returns the support information + * + * @return array + */ + public function getSupport(); + + /** + * Returns if the package is abandoned or not + * + * @return bool + */ + public function isAbandoned(); + + /** + * If the package is abandoned and has a suggested replacement, this method returns it + * + * @return string + */ + public function getReplacementPackage(); +} diff --git a/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php b/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php new file mode 100644 index 0000000..b1e20db --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php @@ -0,0 +1,151 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Dumper; + +use Composer\Package\BasePackage; +use Composer\Package\PackageInterface; +use Composer\Package\CompletePackageInterface; +use Composer\Package\RootPackageInterface; + +/** + * @author Konstantin Kudryashiv + * @author Jordi Boggiano + */ +class ArrayDumper +{ + public function dump(PackageInterface $package) + { + $keys = array( + 'binaries' => 'bin', + 'type', + 'extra', + 'installationSource' => 'installation-source', + 'autoload', + 'devAutoload' => 'autoload-dev', + 'notificationUrl' => 'notification-url', + 'includePaths' => 'include-path', + ); + + $data = array(); + $data['name'] = $package->getPrettyName(); + $data['version'] = $package->getPrettyVersion(); + $data['version_normalized'] = $package->getVersion(); + + if ($package->getTargetDir()) { + $data['target-dir'] = $package->getTargetDir(); + } + + if ($package->getSourceType()) { + $data['source']['type'] = $package->getSourceType(); + $data['source']['url'] = $package->getSourceUrl(); + if (null !== ($value = $package->getSourceReference())) { + $data['source']['reference'] = $value; + } + if ($mirrors = $package->getSourceMirrors()) { + $data['source']['mirrors'] = $mirrors; + } + } + + if ($package->getDistType()) { + $data['dist']['type'] = $package->getDistType(); + $data['dist']['url'] = $package->getDistUrl(); + if (null !== ($value = $package->getDistReference())) { + $data['dist']['reference'] = $value; + } + if (null !== ($value = $package->getDistSha1Checksum())) { + $data['dist']['shasum'] = $value; + } + if ($mirrors = $package->getDistMirrors()) { + $data['dist']['mirrors'] = $mirrors; + } + } + + if ($package->getArchiveExcludes()) { + $data['archive']['exclude'] = $package->getArchiveExcludes(); + } + + foreach (BasePackage::$supportedLinkTypes as $type => $opts) { + if ($links = $package->{'get'.ucfirst($opts['method'])}()) { + foreach ($links as $link) { + $data[$type][$link->getTarget()] = $link->getPrettyConstraint(); + } + ksort($data[$type]); + } + } + + if ($packages = $package->getSuggests()) { + ksort($packages); + $data['suggest'] = $packages; + } + + if ($package->getReleaseDate()) { + $data['time'] = $package->getReleaseDate()->format(DATE_RFC3339); + } + + $data = $this->dumpValues($package, $keys, $data); + + if ($package instanceof CompletePackageInterface) { + $keys = array( + 'scripts', + 'license', + 'authors', + 'description', + 'homepage', + 'keywords', + 'repositories', + 'support', + ); + + $data = $this->dumpValues($package, $keys, $data); + + if (isset($data['keywords']) && is_array($data['keywords'])) { + sort($data['keywords']); + } + + if ($package->isAbandoned()) { + $data['abandoned'] = $package->getReplacementPackage() ?: true; + } + } + + if ($package instanceof RootPackageInterface) { + $minimumStability = $package->getMinimumStability(); + if ($minimumStability) { + $data['minimum-stability'] = $minimumStability; + } + } + + if (count($package->getTransportOptions()) > 0) { + $data['transport-options'] = $package->getTransportOptions(); + } + + return $data; + } + + private function dumpValues(PackageInterface $package, array $keys, array $data) + { + foreach ($keys as $method => $key) { + if (is_numeric($method)) { + $method = $key; + } + + $getter = 'get'.ucfirst($method); + $value = $package->$getter(); + + if (null !== $value && !(is_array($value) && 0 === count($value))) { + $data[$key] = $value; + } + } + + return $data; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Link.php b/vendor/composer/composer/src/Composer/Package/Link.php new file mode 100644 index 0000000..217da07 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Link.php @@ -0,0 +1,128 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +use Composer\Semver\Constraint\ConstraintInterface; + +/** + * Represents a link between two packages, represented by their names + * + * @author Nils Adermann + */ +class Link +{ + /** + * @var string + */ + protected $source; + + /** + * @var string + */ + protected $target; + + /** + * @var ConstraintInterface|null + */ + protected $constraint; + + /** + * @var string + */ + protected $description; + + /** + * @var string|null + */ + protected $prettyConstraint; + + /** + * Creates a new package link. + * + * @param string $source + * @param string $target + * @param ConstraintInterface|null $constraint Constraint applying to the target of this link + * @param string $description Used to create a descriptive string representation + * @param string|null $prettyConstraint + */ + public function __construct($source, $target, ConstraintInterface $constraint = null, $description = 'relates to', $prettyConstraint = null) + { + $this->source = strtolower($source); + $this->target = strtolower($target); + $this->constraint = $constraint; + $this->description = $description; + $this->prettyConstraint = $prettyConstraint; + } + + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * @return string + */ + public function getSource() + { + return $this->source; + } + + /** + * @return string + */ + public function getTarget() + { + return $this->target; + } + + /** + * @return ConstraintInterface|null + */ + public function getConstraint() + { + return $this->constraint; + } + + /** + * @throws \UnexpectedValueException If no pretty constraint was provided + * @return string + */ + public function getPrettyConstraint() + { + if (null === $this->prettyConstraint) { + throw new \UnexpectedValueException(sprintf('Link %s has been misconfigured and had no prettyConstraint given.', $this)); + } + + return $this->prettyConstraint; + } + + /** + * @return string + */ + public function __toString() + { + return $this->source.' '.$this->description.' '.$this->target.' ('.$this->constraint.')'; + } + + /** + * @param PackageInterface $sourcePackage + * @return string + */ + public function getPrettyString(PackageInterface $sourcePackage) + { + return $sourcePackage->getPrettyString().' '.$this->description.' '.$this->target.' '.$this->constraint->getPrettyString().''; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php new file mode 100644 index 0000000..33f9e2e --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\LinkConstraint; + +use Composer\Semver\Constraint\EmptyConstraint as SemverEmptyConstraint; + +trigger_error('The ' . __NAMESPACE__ . '\EmptyConstraint class is deprecated, use Composer\Semver\Constraint\EmptyConstraint instead.', E_USER_DEPRECATED); + +/** + * @deprecated use Composer\Semver\Constraint\EmptyConstraint instead + */ +class EmptyConstraint extends SemverEmptyConstraint implements LinkConstraintInterface +{ +} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php new file mode 100644 index 0000000..b8903ea --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\LinkConstraint; + +use Composer\Semver\Constraint\ConstraintInterface; + +trigger_error('The ' . __NAMESPACE__ . '\LinkConstraintInterface interface is deprecated, use Composer\Semver\Constraint\ConstraintInterface instead.', E_USER_DEPRECATED); + +/** + * @deprecated use Composer\Semver\Constraint\ConstraintInterface instead + */ +interface LinkConstraintInterface extends ConstraintInterface +{ +} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php new file mode 100644 index 0000000..10a9965 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\LinkConstraint; + +use Composer\Semver\Constraint\MultiConstraint as SemverMultiConstraint; + +trigger_error('The ' . __NAMESPACE__ . '\MultiConstraint class is deprecated, use Composer\Semver\Constraint\MultiConstraint instead.', E_USER_DEPRECATED); + +/** + * @deprecated use Composer\Semver\Constraint\MultiConstraint instead + */ +class MultiConstraint extends SemverMultiConstraint implements LinkConstraintInterface +{ +} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php new file mode 100644 index 0000000..12d3194 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\LinkConstraint; + +use Composer\Semver\Constraint\AbstractConstraint; + +trigger_error('The ' . __NAMESPACE__ . '\SpecificConstraint abstract class is deprecated, there is no replacement for it.', E_USER_DEPRECATED); + +/** + * @deprecated use Composer\Semver\Constraint\AbstractConstraint instead + */ +abstract class SpecificConstraint extends AbstractConstraint implements LinkConstraintInterface +{ +} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php new file mode 100644 index 0000000..d6b1cbe --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\LinkConstraint; + +use Composer\Semver\Constraint\Constraint; + +trigger_error('The ' . __NAMESPACE__ . '\VersionConstraint class is deprecated, use Composer\Semver\Constraint\Constraint instead.', E_USER_DEPRECATED); + +/** + * @deprecated use Composer\Semver\Constraint\Constraint instead + */ +class VersionConstraint extends Constraint implements LinkConstraintInterface +{ +} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php b/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php new file mode 100644 index 0000000..c269afa --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php @@ -0,0 +1,290 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Loader; + +use Composer\Package; +use Composer\Package\AliasPackage; +use Composer\Package\Link; +use Composer\Package\RootAliasPackage; +use Composer\Package\RootPackageInterface; +use Composer\Package\Version\VersionParser; +use Composer\Semver\VersionParser as SemverVersionParser; + +/** + * @author Konstantin Kudryashiv + * @author Jordi Boggiano + */ +class ArrayLoader implements LoaderInterface +{ + protected $versionParser; + protected $loadOptions; + + public function __construct(SemverVersionParser $parser = null, $loadOptions = false) + { + if (!$parser) { + $parser = new VersionParser; + } + $this->versionParser = $parser; + $this->loadOptions = $loadOptions; + } + + public function load(array $config, $class = 'Composer\Package\CompletePackage') + { + if (!isset($config['name'])) { + throw new \UnexpectedValueException('Unknown package has no name defined ('.json_encode($config).').'); + } + if (!isset($config['version'])) { + throw new \UnexpectedValueException('Package '.$config['name'].' has no version defined.'); + } + + // handle already normalized versions + if (isset($config['version_normalized'])) { + $version = $config['version_normalized']; + } else { + $version = $this->versionParser->normalize($config['version']); + } + $package = new $class($config['name'], $version, $config['version']); + $package->setType(isset($config['type']) ? strtolower($config['type']) : 'library'); + + if (isset($config['target-dir'])) { + $package->setTargetDir($config['target-dir']); + } + + if (isset($config['extra']) && is_array($config['extra'])) { + $package->setExtra($config['extra']); + } + + if (isset($config['bin'])) { + foreach ((array) $config['bin'] as $key => $bin) { + $config['bin'][$key] = ltrim($bin, '/'); + } + $package->setBinaries((array) $config['bin']); + } + + if (isset($config['installation-source'])) { + $package->setInstallationSource($config['installation-source']); + } + + if (isset($config['source'])) { + if (!isset($config['source']['type']) || !isset($config['source']['url']) || !isset($config['source']['reference'])) { + throw new \UnexpectedValueException(sprintf( + "Package %s's source key should be specified as {\"type\": ..., \"url\": ..., \"reference\": ...},\n%s given.", + $config['name'], + json_encode($config['source']) + )); + } + $package->setSourceType($config['source']['type']); + $package->setSourceUrl($config['source']['url']); + $package->setSourceReference(isset($config['source']['reference']) ? $config['source']['reference'] : null); + if (isset($config['source']['mirrors'])) { + $package->setSourceMirrors($config['source']['mirrors']); + } + } + + if (isset($config['dist'])) { + if (!isset($config['dist']['type']) + || !isset($config['dist']['url'])) { + throw new \UnexpectedValueException(sprintf( + "Package %s's dist key should be specified as ". + "{\"type\": ..., \"url\": ..., \"reference\": ..., \"shasum\": ...},\n%s given.", + $config['name'], + json_encode($config['dist']) + )); + } + $package->setDistType($config['dist']['type']); + $package->setDistUrl($config['dist']['url']); + $package->setDistReference(isset($config['dist']['reference']) ? $config['dist']['reference'] : null); + $package->setDistSha1Checksum(isset($config['dist']['shasum']) ? $config['dist']['shasum'] : null); + if (isset($config['dist']['mirrors'])) { + $package->setDistMirrors($config['dist']['mirrors']); + } + } + + foreach (Package\BasePackage::$supportedLinkTypes as $type => $opts) { + if (isset($config[$type])) { + $method = 'set'.ucfirst($opts['method']); + $package->{$method}( + $this->parseLinks( + $package->getName(), + $package->getPrettyVersion(), + $opts['description'], + $config[$type] + ) + ); + } + } + + if (isset($config['suggest']) && is_array($config['suggest'])) { + foreach ($config['suggest'] as $target => $reason) { + if ('self.version' === trim($reason)) { + $config['suggest'][$target] = $package->getPrettyVersion(); + } + } + $package->setSuggests($config['suggest']); + } + + if (isset($config['autoload'])) { + $package->setAutoload($config['autoload']); + } + + if (isset($config['autoload-dev'])) { + $package->setDevAutoload($config['autoload-dev']); + } + + if (isset($config['include-path'])) { + $package->setIncludePaths($config['include-path']); + } + + if (!empty($config['time'])) { + $time = preg_match('/^\d++$/D', $config['time']) ? '@'.$config['time'] : $config['time']; + + try { + $date = new \DateTime($time, new \DateTimeZone('UTC')); + $package->setReleaseDate($date); + } catch (\Exception $e) { + } + } + + if (!empty($config['notification-url'])) { + $package->setNotificationUrl($config['notification-url']); + } + + if (!empty($config['archive']['exclude'])) { + $package->setArchiveExcludes($config['archive']['exclude']); + } + + if ($package instanceof Package\CompletePackageInterface) { + if (isset($config['scripts']) && is_array($config['scripts'])) { + foreach ($config['scripts'] as $event => $listeners) { + $config['scripts'][$event] = (array) $listeners; + } + if (isset($config['scripts']['composer'])) { + trigger_error('The `composer` script name is reserved for internal use, please avoid defining it', E_USER_DEPRECATED); + } + $package->setScripts($config['scripts']); + } + + if (!empty($config['description']) && is_string($config['description'])) { + $package->setDescription($config['description']); + } + + if (!empty($config['homepage']) && is_string($config['homepage'])) { + $package->setHomepage($config['homepage']); + } + + if (!empty($config['keywords']) && is_array($config['keywords'])) { + $package->setKeywords($config['keywords']); + } + + if (!empty($config['license'])) { + $package->setLicense(is_array($config['license']) ? $config['license'] : array($config['license'])); + } + + if (!empty($config['authors']) && is_array($config['authors'])) { + $package->setAuthors($config['authors']); + } + + if (isset($config['support'])) { + $package->setSupport($config['support']); + } + + if (isset($config['abandoned'])) { + $package->setAbandoned($config['abandoned']); + } + } + + if ($aliasNormalized = $this->getBranchAlias($config)) { + if ($package instanceof RootPackageInterface) { + $package = new RootAliasPackage($package, $aliasNormalized, preg_replace('{(\.9{7})+}', '.x', $aliasNormalized)); + } else { + $package = new AliasPackage($package, $aliasNormalized, preg_replace('{(\.9{7})+}', '.x', $aliasNormalized)); + } + } + + if ($this->loadOptions && isset($config['transport-options'])) { + $package->setTransportOptions($config['transport-options']); + } + + return $package; + } + + /** + * @param string $source source package name + * @param string $sourceVersion source package version (pretty version ideally) + * @param string $description link description (e.g. requires, replaces, ..) + * @param array $links array of package name => constraint mappings + * @return Link[] + */ + public function parseLinks($source, $sourceVersion, $description, $links) + { + $res = array(); + foreach ($links as $target => $constraint) { + if (!is_string($constraint)) { + throw new \UnexpectedValueException('Link constraint in '.$source.' '.$description.' > '.$target.' should be a string, got '.gettype($constraint) . ' (' . var_export($constraint, true) . ')'); + } + if ('self.version' === $constraint) { + $parsedConstraint = $this->versionParser->parseConstraints($sourceVersion); + } else { + $parsedConstraint = $this->versionParser->parseConstraints($constraint); + } + + $res[strtolower($target)] = new Link($source, $target, $parsedConstraint, $description, $constraint); + } + + return $res; + } + + /** + * Retrieves a branch alias (dev-master => 1.0.x-dev for example) if it exists + * + * @param array $config the entire package config + * @return string|null normalized version of the branch alias or null if there is none + */ + public function getBranchAlias(array $config) + { + if (('dev-' !== substr($config['version'], 0, 4) && '-dev' !== substr($config['version'], -4)) + || !isset($config['extra']['branch-alias']) + || !is_array($config['extra']['branch-alias']) + ) { + return; + } + + foreach ($config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { + // ensure it is an alias to a -dev package + if ('-dev' !== substr($targetBranch, -4)) { + continue; + } + + // normalize without -dev and ensure it's a numeric branch that is parseable + $validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); + if ('-dev' !== substr($validatedTargetBranch, -4)) { + continue; + } + + // ensure that it is the current branch aliasing itself + if (strtolower($config['version']) !== strtolower($sourceBranch)) { + continue; + } + + // If using numeric aliases ensure the alias is a valid subversion + if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) + && ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) + && (stripos($targetPrefix, $sourcePrefix) !== 0) + ) { + continue; + } + + return $validatedTargetBranch; + } + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php b/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php new file mode 100644 index 0000000..2f0c845 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php @@ -0,0 +1,46 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Loader; + +/** + * @author Jordi Boggiano + */ +class InvalidPackageException extends \Exception +{ + private $errors; + private $warnings; + private $data; + + public function __construct(array $errors, array $warnings, array $data) + { + $this->errors = $errors; + $this->warnings = $warnings; + $this->data = $data; + parent::__construct("Invalid package information: \n".implode("\n", array_merge($errors, $warnings))); + } + + public function getData() + { + return $this->data; + } + + public function getErrors() + { + return $this->errors; + } + + public function getWarnings() + { + return $this->warnings; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php b/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php new file mode 100644 index 0000000..a693e70 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php @@ -0,0 +1,45 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Loader; + +use Composer\Json\JsonFile; + +/** + * @author Konstantin Kudryashiv + */ +class JsonLoader +{ + private $loader; + + public function __construct(LoaderInterface $loader) + { + $this->loader = $loader; + } + + /** + * @param string|JsonFile $json A filename, json string or JsonFile instance to load the package from + * @return \Composer\Package\PackageInterface + */ + public function load($json) + { + if ($json instanceof JsonFile) { + $config = $json->read(); + } elseif (file_exists($json)) { + $config = JsonFile::parseJson(file_get_contents($json), $json); + } elseif (is_string($json)) { + $config = JsonFile::parseJson($json); + } + + return $this->loader->load($config); + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php b/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php new file mode 100644 index 0000000..295ddf9 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php @@ -0,0 +1,30 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Loader; + +/** + * Defines a loader that takes an array to create package instances + * + * @author Jordi Boggiano + */ +interface LoaderInterface +{ + /** + * Converts a package from an array to a real instance + * + * @param array $package Package config + * @param string $class Package class to use + * @return \Composer\Package\PackageInterface + */ + public function load(array $package, $class = 'Composer\Package\CompletePackage'); +} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php b/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php new file mode 100644 index 0000000..84e99a8 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php @@ -0,0 +1,264 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Loader; + +use Composer\Package\BasePackage; +use Composer\Package\AliasPackage; +use Composer\Config; +use Composer\IO\IOInterface; +use Composer\Package\RootPackageInterface; +use Composer\Repository\RepositoryFactory; +use Composer\Package\Version\VersionGuesser; +use Composer\Package\Version\VersionParser; +use Composer\Repository\RepositoryManager; +use Composer\Util\ProcessExecutor; + +/** + * ArrayLoader built for the sole purpose of loading the root package + * + * Sets additional defaults and loads repositories + * + * @author Jordi Boggiano + */ +class RootPackageLoader extends ArrayLoader +{ + /** + * @var RepositoryManager + */ + private $manager; + + /** + * @var Config + */ + private $config; + + /** + * @var VersionGuesser + */ + private $versionGuesser; + + /** + * @var IOInterface + */ + private $io; + + public function __construct(RepositoryManager $manager, Config $config, VersionParser $parser = null, VersionGuesser $versionGuesser = null, IOInterface $io = null) + { + parent::__construct($parser); + + $this->manager = $manager; + $this->config = $config; + $this->versionGuesser = $versionGuesser ?: new VersionGuesser($config, new ProcessExecutor(), $this->versionParser); + $this->io = $io; + } + + /** + * @param array $config package data + * @param string $class FQCN to be instantiated + * @param string $cwd cwd of the root package to be used to guess the version if it is not provided + * @return RootPackageInterface + */ + public function load(array $config, $class = 'Composer\Package\RootPackage', $cwd = null) + { + if (!isset($config['name'])) { + $config['name'] = '__root__'; + } elseif ($this->io) { + if ($err = ValidatingArrayLoader::hasPackageNamingError($config['name'])) { + $this->io->writeError('Deprecation warning: Your package name '.$err.' Make sure you fix this as Composer 2.0 will error.'); + } + } + $autoVersioned = false; + if (!isset($config['version'])) { + $commit = null; + + // override with env var if available + if (getenv('COMPOSER_ROOT_VERSION')) { + $config['version'] = getenv('COMPOSER_ROOT_VERSION'); + } else { + $versionData = $this->versionGuesser->guessVersion($config, $cwd ?: getcwd()); + if ($versionData) { + $config['version'] = $versionData['pretty_version']; + $config['version_normalized'] = $versionData['version']; + $commit = $versionData['commit']; + } + } + + if (!isset($config['version'])) { + $config['version'] = '1.0.0'; + $autoVersioned = true; + } + + if ($commit) { + $config['source'] = array( + 'type' => '', + 'url' => '', + 'reference' => $commit, + ); + $config['dist'] = array( + 'type' => '', + 'url' => '', + 'reference' => $commit, + ); + } + } + + $realPackage = $package = parent::load($config, $class); + if ($realPackage instanceof AliasPackage) { + $realPackage = $package->getAliasOf(); + } + + if ($autoVersioned) { + $realPackage->replaceVersion($realPackage->getVersion(), 'No version set (parsed as 1.0.0)'); + } + + if (isset($config['minimum-stability'])) { + $realPackage->setMinimumStability(VersionParser::normalizeStability($config['minimum-stability'])); + } + + $aliases = array(); + $stabilityFlags = array(); + $references = array(); + foreach (array('require', 'require-dev') as $linkType) { + if (isset($config[$linkType])) { + $linkInfo = BasePackage::$supportedLinkTypes[$linkType]; + $method = 'get'.ucfirst($linkInfo['method']); + $links = array(); + foreach ($realPackage->$method() as $link) { + $links[$link->getTarget()] = $link->getConstraint()->getPrettyString(); + } + $aliases = $this->extractAliases($links, $aliases); + $stabilityFlags = $this->extractStabilityFlags($links, $stabilityFlags, $realPackage->getMinimumStability()); + $references = $this->extractReferences($links, $references); + } + } + + if ($this->io) { + foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { + if (isset($config[$linkType])) { + foreach ($config[$linkType] as $linkName => $constraint) { + if ($err = ValidatingArrayLoader::hasPackageNamingError($linkName, true)) { + $this->io->writeError('Deprecation warning: '.$linkType.'.'.$err.' Make sure you fix this as Composer 2.0 will error.'); + } + } + } + } + } + + if (isset($links[$config['name']])) { + throw new \InvalidArgumentException(sprintf('Root package \'%s\' cannot require itself in its composer.json' . PHP_EOL . + 'Did you accidentally name your root package after an external package?', $config['name'])); + } + + $realPackage->setAliases($aliases); + $realPackage->setStabilityFlags($stabilityFlags); + $realPackage->setReferences($references); + + if (isset($config['prefer-stable'])) { + $realPackage->setPreferStable((bool) $config['prefer-stable']); + } + + if (isset($config['config'])) { + $realPackage->setConfig($config['config']); + } + + $repos = RepositoryFactory::defaultRepos(null, $this->config, $this->manager); + foreach ($repos as $repo) { + $this->manager->addRepository($repo); + } + $realPackage->setRepositories($this->config->getRepositories()); + + return $package; + } + + private function extractAliases(array $requires, array $aliases) + { + foreach ($requires as $reqName => $reqVersion) { + if (preg_match('{^([^,\s#]+)(?:#[^ ]+)? +as +([^,\s]+)$}', $reqVersion, $match)) { + $aliases[] = array( + 'package' => strtolower($reqName), + 'version' => $this->versionParser->normalize($match[1], $reqVersion), + 'alias' => $match[2], + 'alias_normalized' => $this->versionParser->normalize($match[2], $reqVersion), + ); + } + } + + return $aliases; + } + + private function extractStabilityFlags(array $requires, array $stabilityFlags, $minimumStability) + { + $stabilities = BasePackage::$stabilities; + $minimumStability = $stabilities[$minimumStability]; + foreach ($requires as $reqName => $reqVersion) { + $constraints = array(); + + // extract all sub-constraints in case it is an OR/AND multi-constraint + $orSplit = preg_split('{\s*\|\|?\s*}', trim($reqVersion)); + foreach ($orSplit as $orConstraint) { + $andSplit = preg_split('{(?< ,]) *(? $stability) { + continue; + } + $stabilityFlags[$name] = $stability; + $match = true; + } + } + + if ($match) { + continue; + } + + foreach ($constraints as $constraint) { + // infer flags for requirements that have an explicit -dev or -beta version specified but only + // for those that are more unstable than the minimumStability or existing flags + $reqVersion = preg_replace('{^([^,\s@]+) as .+$}', '$1', $constraint); + if (preg_match('{^[^,\s@]+$}', $reqVersion) && 'stable' !== ($stabilityName = VersionParser::parseStability($reqVersion))) { + $name = strtolower($reqName); + $stability = $stabilities[$stabilityName]; + if ((isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) || ($minimumStability > $stability)) { + continue; + } + $stabilityFlags[$name] = $stability; + } + } + } + + return $stabilityFlags; + } + + private function extractReferences(array $requires, array $references) + { + foreach ($requires as $reqName => $reqVersion) { + $reqVersion = preg_replace('{^([^,\s@]+) as .+$}', '$1', $reqVersion); + if (preg_match('{^[^,\s@]+?#([a-f0-9]+)$}', $reqVersion, $match) && 'dev' === VersionParser::parseStability($reqVersion)) { + $name = strtolower($reqName); + $references[$name] = $match[1]; + } + } + + return $references; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php b/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php new file mode 100644 index 0000000..43f2323 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php @@ -0,0 +1,499 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Loader; + +use Composer\Package\BasePackage; +use Composer\Semver\Constraint\Constraint; +use Composer\Package\Version\VersionParser; +use Composer\Repository\PlatformRepository; +use Composer\Spdx\SpdxLicenses; + +/** + * @author Jordi Boggiano + */ +class ValidatingArrayLoader implements LoaderInterface +{ + const CHECK_ALL = 3; + const CHECK_UNBOUND_CONSTRAINTS = 1; + const CHECK_STRICT_CONSTRAINTS = 2; + + private $loader; + private $versionParser; + private $errors; + private $warnings; + private $config; + private $strictName; + private $flags; + + public function __construct(LoaderInterface $loader, $strictName = true, VersionParser $parser = null, $flags = 0) + { + $this->loader = $loader; + $this->versionParser = $parser ?: new VersionParser(); + $this->strictName = $strictName; + $this->flags = $flags; + } + + public function load(array $config, $class = 'Composer\Package\CompletePackage') + { + $this->errors = array(); + $this->warnings = array(); + $this->config = $config; + + if ($err = self::hasPackageNamingError($config['name'])) { + $this->warnings[] = 'Deprecation warning: Your package name '.$err.' Make sure you fix this as Composer 2.0 will error.'; + } + + if ($this->strictName) { + $this->validateRegex('name', '[A-Za-z0-9][A-Za-z0-9_.-]*/[A-Za-z0-9][A-Za-z0-9_.-]*', true); + } else { + $this->validateString('name', true); + } + + if (!empty($this->config['version'])) { + try { + $this->versionParser->normalize($this->config['version']); + } catch (\Exception $e) { + $this->errors[] = 'version : invalid value ('.$this->config['version'].'): '.$e->getMessage(); + unset($this->config['version']); + } + } + + if (!empty($this->config['config']['platform'])) { + foreach ((array) $this->config['config']['platform'] as $key => $platform) { + try { + $this->versionParser->normalize($platform); + } catch (\Exception $e) { + $this->errors[] = 'config.platform.' . $key . ' : invalid value ('.$platform.'): '.$e->getMessage(); + } + } + } + + $this->validateRegex('type', '[A-Za-z0-9-]+'); + $this->validateString('target-dir'); + $this->validateArray('extra'); + + if (isset($this->config['bin'])) { + if (is_string($this->config['bin'])) { + $this->validateString('bin'); + } else { + $this->validateFlatArray('bin'); + } + } + + $this->validateArray('scripts'); // TODO validate event names & listener syntax + $this->validateString('description'); + $this->validateUrl('homepage'); + $this->validateFlatArray('keywords', '[\p{N}\p{L} ._-]+'); + + $releaseDate = null; + $this->validateString('time'); + if (!empty($this->config['time'])) { + try { + $releaseDate = new \DateTime($this->config['time'], new \DateTimeZone('UTC')); + } catch (\Exception $e) { + $this->errors[] = 'time : invalid value ('.$this->config['time'].'): '.$e->getMessage(); + unset($this->config['time']); + } + } + + // check for license validity on newly updated branches + if (isset($this->config['license']) && (!$releaseDate || $releaseDate->getTimestamp() >= strtotime('-8days'))) { + if (is_array($this->config['license']) || is_string($this->config['license'])) { + $licenses = (array) $this->config['license']; + + // strip proprietary since it's not a valid SPDX identifier, but is accepted by composer + foreach ($licenses as $key => $license) { + if ('proprietary' === $license) { + unset($licenses[$key]); + } + } + + $licenseValidator = new SpdxLicenses(); + if (count($licenses) === 1 && !$licenseValidator->validate($licenses) && $licenseValidator->validate(trim($licenses[0]))) { + $this->warnings[] = sprintf( + 'License %s must not contain extra spaces, make sure to trim it.', + json_encode($this->config['license']) + ); + } elseif (array() !== $licenses && !$licenseValidator->validate($licenses)) { + $this->warnings[] = sprintf( + 'License %s is not a valid SPDX license identifier, see https://spdx.org/licenses/ if you use an open license.' . PHP_EOL . + 'If the software is closed-source, you may use "proprietary" as license.', + json_encode($this->config['license']) + ); + } + } + } + + if ($this->validateArray('authors') && !empty($this->config['authors'])) { + foreach ($this->config['authors'] as $key => $author) { + if (!is_array($author)) { + $this->errors[] = 'authors.'.$key.' : should be an array, '.gettype($author).' given'; + unset($this->config['authors'][$key]); + continue; + } + foreach (array('homepage', 'email', 'name', 'role') as $authorData) { + if (isset($author[$authorData]) && !is_string($author[$authorData])) { + $this->errors[] = 'authors.'.$key.'.'.$authorData.' : invalid value, must be a string'; + unset($this->config['authors'][$key][$authorData]); + } + } + if (isset($author['homepage']) && !$this->filterUrl($author['homepage'])) { + $this->warnings[] = 'authors.'.$key.'.homepage : invalid value ('.$author['homepage'].'), must be an http/https URL'; + unset($this->config['authors'][$key]['homepage']); + } + if (isset($author['email']) && !filter_var($author['email'], FILTER_VALIDATE_EMAIL)) { + $this->warnings[] = 'authors.'.$key.'.email : invalid value ('.$author['email'].'), must be a valid email address'; + unset($this->config['authors'][$key]['email']); + } + if (empty($this->config['authors'][$key])) { + unset($this->config['authors'][$key]); + } + } + if (empty($this->config['authors'])) { + unset($this->config['authors']); + } + } + + if ($this->validateArray('support') && !empty($this->config['support'])) { + foreach (array('issues', 'forum', 'wiki', 'source', 'email', 'irc', 'docs', 'rss', 'chat') as $key) { + if (isset($this->config['support'][$key]) && !is_string($this->config['support'][$key])) { + $this->errors[] = 'support.'.$key.' : invalid value, must be a string'; + unset($this->config['support'][$key]); + } + } + + if (isset($this->config['support']['email']) && !filter_var($this->config['support']['email'], FILTER_VALIDATE_EMAIL)) { + $this->warnings[] = 'support.email : invalid value ('.$this->config['support']['email'].'), must be a valid email address'; + unset($this->config['support']['email']); + } + + if (isset($this->config['support']['irc']) && !$this->filterUrl($this->config['support']['irc'], array('irc'))) { + $this->warnings[] = 'support.irc : invalid value ('.$this->config['support']['irc'].'), must be a irc:/// URL'; + unset($this->config['support']['irc']); + } + + foreach (array('issues', 'forum', 'wiki', 'source', 'docs', 'chat') as $key) { + if (isset($this->config['support'][$key]) && !$this->filterUrl($this->config['support'][$key])) { + $this->warnings[] = 'support.'.$key.' : invalid value ('.$this->config['support'][$key].'), must be an http/https URL'; + unset($this->config['support'][$key]); + } + } + if (empty($this->config['support'])) { + unset($this->config['support']); + } + } + + $unboundConstraint = new Constraint('=', $this->versionParser->normalize('dev-master')); + $stableConstraint = new Constraint('=', '1.0.0'); + + foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { + if ($this->validateArray($linkType) && isset($this->config[$linkType])) { + foreach ($this->config[$linkType] as $package => $constraint) { + if ($err = self::hasPackageNamingError($package, true)) { + $this->warnings[] = 'Deprecation warning: '.$linkType.'.'.$err.' Make sure you fix this as Composer 2.0 will error.'; + } elseif (!preg_match('{^[A-Za-z0-9_./-]+$}', $package)) { + $this->warnings[] = $linkType.'.'.$package.' : invalid key, package names must be strings containing only [A-Za-z0-9_./-]'; + } + if (!is_string($constraint)) { + $this->errors[] = $linkType.'.'.$package.' : invalid value, must be a string containing a version constraint'; + unset($this->config[$linkType][$package]); + } elseif ('self.version' !== $constraint) { + try { + $linkConstraint = $this->versionParser->parseConstraints($constraint); + } catch (\Exception $e) { + $this->errors[] = $linkType.'.'.$package.' : invalid version constraint ('.$e->getMessage().')'; + unset($this->config[$linkType][$package]); + continue; + } + + // check requires for unbound constraints on non-platform packages + if ( + ($this->flags & self::CHECK_UNBOUND_CONSTRAINTS) + && 'require' === $linkType + && $linkConstraint->matches($unboundConstraint) + && !preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $package) + ) { + $this->warnings[] = $linkType.'.'.$package.' : unbound version constraints ('.$constraint.') should be avoided'; + } elseif ( + // check requires for exact constraints + ($this->flags & self::CHECK_STRICT_CONSTRAINTS) + && 'require' === $linkType + && substr($linkConstraint, 0, 1) === '=' + && $stableConstraint->versionCompare($stableConstraint, $linkConstraint, '<=') + ) { + $this->warnings[] = $linkType.'.'.$package.' : exact version constraints ('.$constraint.') should be avoided if the package follows semantic versioning'; + } + } + } + } + } + + if ($this->validateArray('suggest') && !empty($this->config['suggest'])) { + foreach ($this->config['suggest'] as $package => $description) { + if (!is_string($description)) { + $this->errors[] = 'suggest.'.$package.' : invalid value, must be a string describing why the package is suggested'; + unset($this->config['suggest'][$package]); + } + } + } + + if ($this->validateString('minimum-stability') && !empty($this->config['minimum-stability'])) { + if (!isset(BasePackage::$stabilities[$this->config['minimum-stability']])) { + $this->errors[] = 'minimum-stability : invalid value ('.$this->config['minimum-stability'].'), must be one of '.implode(', ', array_keys(BasePackage::$stabilities)); + unset($this->config['minimum-stability']); + } + } + + if ($this->validateArray('autoload') && !empty($this->config['autoload'])) { + $types = array('psr-0', 'psr-4', 'classmap', 'files', 'exclude-from-classmap'); + foreach ($this->config['autoload'] as $type => $typeConfig) { + if (!in_array($type, $types)) { + $this->errors[] = 'autoload : invalid value ('.$type.'), must be one of '.implode(', ', $types); + unset($this->config['autoload'][$type]); + } + if ($type === 'psr-4') { + foreach ($typeConfig as $namespace => $dirs) { + if ($namespace !== '' && '\\' !== substr($namespace, -1)) { + $this->errors[] = 'autoload.psr-4 : invalid value ('.$namespace.'), namespaces must end with a namespace separator, should be '.$namespace.'\\\\'; + } + } + } + } + } + + if (!empty($this->config['autoload']['psr-4']) && !empty($this->config['target-dir'])) { + $this->errors[] = 'target-dir : this can not be used together with the autoload.psr-4 setting, remove target-dir to upgrade to psr-4'; + // Unset the psr-4 setting, since unsetting target-dir might + // interfere with other settings. + unset($this->config['autoload']['psr-4']); + } + + // TODO validate dist + // TODO validate source + + // TODO validate repositories + // TODO validate package repositories' packages using this recursively + + $this->validateFlatArray('include-path'); + $this->validateArray('transport-options'); + + // branch alias validation + if (isset($this->config['extra']['branch-alias'])) { + if (!is_array($this->config['extra']['branch-alias'])) { + $this->errors[] = 'extra.branch-alias : must be an array of versions => aliases'; + } else { + foreach ($this->config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { + // ensure it is an alias to a -dev package + if ('-dev' !== substr($targetBranch, -4)) { + $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must end in -dev'; + unset($this->config['extra']['branch-alias'][$sourceBranch]); + + continue; + } + + // normalize without -dev and ensure it's a numeric branch that is parseable + $validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); + if ('-dev' !== substr($validatedTargetBranch, -4)) { + $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must be a parseable number like 2.0-dev'; + unset($this->config['extra']['branch-alias'][$sourceBranch]); + + continue; + } + + // If using numeric aliases ensure the alias is a valid subversion + if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) + && ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) + && (stripos($targetPrefix, $sourcePrefix) !== 0) + ) { + $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') is not a valid numeric alias for this version'; + unset($this->config['extra']['branch-alias'][$sourceBranch]); + } + } + } + } + + if ($this->errors) { + throw new InvalidPackageException($this->errors, $this->warnings, $config); + } + + $package = $this->loader->load($this->config, $class); + $this->config = null; + + return $package; + } + + public function getWarnings() + { + return $this->warnings; + } + + public function getErrors() + { + return $this->errors; + } + + public static function hasPackageNamingError($name, $isLink = false) + { + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) { + return; + } + + if (!preg_match('{^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9]([_.-]?[a-z0-9]+)*$}iD', $name)) { + return $name.' is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9]([_.-]?[a-z0-9]+)*".'; + } + + $reservedNames = array('nul', 'con', 'prn', 'aux', 'com1', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9', 'lpt1', 'lpt2', 'lpt3', 'lpt4', 'lpt5', 'lpt6', 'lpt7', 'lpt8', 'lpt9'); + $bits = explode('/', strtolower($name)); + if (in_array($bits[0], $reservedNames, true) || in_array($bits[1], $reservedNames, true)) { + return $name.' is reserved, package and vendor names can not match any of: '.implode(', ', $reservedNames).'.'; + } + + if (preg_match('{\.json$}', $name)) { + return $name.' is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.'; + } + + if (preg_match('{[A-Z]}', $name)) { + if ($isLink) { + return $name.' is invalid, it should not contain uppercase characters. Please use '.strtolower($name).' instead.'; + } + + $suggestName = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); + $suggestName = strtolower($suggestName); + + return $name.' is invalid, it should not contain uppercase characters. We suggest using '.$suggestName.' instead.'; + } + } + + private function validateRegex($property, $regex, $mandatory = false) + { + if (!$this->validateString($property, $mandatory)) { + return false; + } + + if (!preg_match('{^'.$regex.'$}u', $this->config[$property])) { + $message = $property.' : invalid value ('.$this->config[$property].'), must match '.$regex; + if ($mandatory) { + $this->errors[] = $message; + } else { + $this->warnings[] = $message; + } + unset($this->config[$property]); + + return false; + } + + return true; + } + + private function validateString($property, $mandatory = false) + { + if (isset($this->config[$property]) && !is_string($this->config[$property])) { + $this->errors[] = $property.' : should be a string, '.gettype($this->config[$property]).' given'; + unset($this->config[$property]); + + return false; + } + + if (!isset($this->config[$property]) || trim($this->config[$property]) === '') { + if ($mandatory) { + $this->errors[] = $property.' : must be present'; + } + unset($this->config[$property]); + + return false; + } + + return true; + } + + private function validateArray($property, $mandatory = false) + { + if (isset($this->config[$property]) && !is_array($this->config[$property])) { + $this->errors[] = $property.' : should be an array, '.gettype($this->config[$property]).' given'; + unset($this->config[$property]); + + return false; + } + + if (!isset($this->config[$property]) || !count($this->config[$property])) { + if ($mandatory) { + $this->errors[] = $property.' : must be present and contain at least one element'; + } + unset($this->config[$property]); + + return false; + } + + return true; + } + + private function validateFlatArray($property, $regex = null, $mandatory = false) + { + if (!$this->validateArray($property, $mandatory)) { + return false; + } + + $pass = true; + foreach ($this->config[$property] as $key => $value) { + if (!is_string($value) && !is_numeric($value)) { + $this->errors[] = $property.'.'.$key.' : must be a string or int, '.gettype($value).' given'; + unset($this->config[$property][$key]); + $pass = false; + + continue; + } + + if ($regex && !preg_match('{^'.$regex.'$}u', $value)) { + $this->warnings[] = $property.'.'.$key.' : invalid value ('.$value.'), must match '.$regex; + unset($this->config[$property][$key]); + $pass = false; + } + } + + return $pass; + } + + private function validateUrl($property, $mandatory = false) + { + if (!$this->validateString($property, $mandatory)) { + return false; + } + + if (!$this->filterUrl($this->config[$property])) { + $this->warnings[] = $property.' : invalid value ('.$this->config[$property].'), must be an http/https URL'; + unset($this->config[$property]); + + return false; + } + + return true; + } + + private function filterUrl($value, array $schemes = array('http', 'https')) + { + if ($value === '') { + return true; + } + + $bits = parse_url($value); + if (empty($bits['scheme']) || empty($bits['host'])) { + return false; + } + + if (!in_array($bits['scheme'], $schemes, true)) { + return false; + } + + return true; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Locker.php b/vendor/composer/composer/src/Composer/Package/Locker.php new file mode 100644 index 0000000..57ec742 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Locker.php @@ -0,0 +1,438 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +use Composer\Json\JsonFile; +use Composer\Installer\InstallationManager; +use Composer\Repository\RepositoryManager; +use Composer\Util\ProcessExecutor; +use Composer\Repository\ArrayRepository; +use Composer\Package\Dumper\ArrayDumper; +use Composer\Package\Loader\ArrayLoader; +use Composer\Util\Git as GitUtil; +use Composer\IO\IOInterface; +use Seld\JsonLint\ParsingException; + +/** + * Reads/writes project lockfile (composer.lock). + * + * @author Konstantin Kudryashiv + * @author Jordi Boggiano + */ +class Locker +{ + private $lockFile; + private $repositoryManager; + private $installationManager; + private $hash; + private $contentHash; + private $loader; + private $dumper; + private $process; + private $lockDataCache; + + /** + * Initializes packages locker. + * + * @param IOInterface $io + * @param JsonFile $lockFile lockfile loader + * @param RepositoryManager $repositoryManager repository manager instance + * @param InstallationManager $installationManager installation manager instance + * @param string $composerFileContents The contents of the composer file + */ + public function __construct(IOInterface $io, JsonFile $lockFile, RepositoryManager $repositoryManager, InstallationManager $installationManager, $composerFileContents) + { + $this->lockFile = $lockFile; + $this->repositoryManager = $repositoryManager; + $this->installationManager = $installationManager; + $this->hash = md5($composerFileContents); + $this->contentHash = self::getContentHash($composerFileContents); + $this->loader = new ArrayLoader(null, true); + $this->dumper = new ArrayDumper(); + $this->process = new ProcessExecutor($io); + } + + /** + * Returns the md5 hash of the sorted content of the composer file. + * + * @param string $composerFileContents The contents of the composer file. + * + * @return string + */ + public static function getContentHash($composerFileContents) + { + $content = json_decode($composerFileContents, true); + + $relevantKeys = array( + 'name', + 'version', + 'require', + 'require-dev', + 'conflict', + 'replace', + 'provide', + 'minimum-stability', + 'prefer-stable', + 'repositories', + 'extra', + ); + + $relevantContent = array(); + + foreach (array_intersect($relevantKeys, array_keys($content)) as $key) { + $relevantContent[$key] = $content[$key]; + } + if (isset($content['config']['platform'])) { + $relevantContent['config']['platform'] = $content['config']['platform']; + } + + ksort($relevantContent); + + return md5(json_encode($relevantContent)); + } + + /** + * Checks whether locker has been locked (lockfile found). + * + * @return bool + */ + public function isLocked() + { + if (!$this->lockFile->exists()) { + return false; + } + + $data = $this->getLockData(); + + return isset($data['packages']); + } + + /** + * Checks whether the lock file is still up to date with the current hash + * + * @return bool + */ + public function isFresh() + { + $lock = $this->lockFile->read(); + + if (!empty($lock['content-hash'])) { + // There is a content hash key, use that instead of the file hash + return $this->contentHash === $lock['content-hash']; + } + + // BC support for old lock files without content-hash + if (!empty($lock['hash'])) { + return $this->hash === $lock['hash']; + } + + // should not be reached unless the lock file is corrupted, so assume it's out of date + return false; + } + + /** + * Searches and returns an array of locked packages, retrieved from registered repositories. + * + * @param bool $withDevReqs true to retrieve the locked dev packages + * @throws \RuntimeException + * @return \Composer\Repository\RepositoryInterface + */ + public function getLockedRepository($withDevReqs = false) + { + $lockData = $this->getLockData(); + $packages = new ArrayRepository(); + + $lockedPackages = $lockData['packages']; + if ($withDevReqs) { + if (isset($lockData['packages-dev'])) { + $lockedPackages = array_merge($lockedPackages, $lockData['packages-dev']); + } else { + throw new \RuntimeException('The lock file does not contain require-dev information, run install with the --no-dev option or run update to install those packages.'); + } + } + + if (empty($lockedPackages)) { + return $packages; + } + + if (isset($lockedPackages[0]['name'])) { + foreach ($lockedPackages as $info) { + $packages->addPackage($this->loader->load($info)); + } + + return $packages; + } + + throw new \RuntimeException('Your composer.lock was created before 2012-09-15, and is not supported anymore. Run "composer update" to generate a new one.'); + } + + /** + * Returns the platform requirements stored in the lock file + * + * @param bool $withDevReqs if true, the platform requirements from the require-dev block are also returned + * @return \Composer\Package\Link[] + */ + public function getPlatformRequirements($withDevReqs = false) + { + $lockData = $this->getLockData(); + $requirements = array(); + + if (!empty($lockData['platform'])) { + $requirements = $this->loader->parseLinks( + '__ROOT__', + '1.0.0', + 'requires', + isset($lockData['platform']) ? $lockData['platform'] : array() + ); + } + + if ($withDevReqs && !empty($lockData['platform-dev'])) { + $devRequirements = $this->loader->parseLinks( + '__ROOT__', + '1.0.0', + 'requires', + isset($lockData['platform-dev']) ? $lockData['platform-dev'] : array() + ); + + $requirements = array_merge($requirements, $devRequirements); + } + + return $requirements; + } + + public function getMinimumStability() + { + $lockData = $this->getLockData(); + + return isset($lockData['minimum-stability']) ? $lockData['minimum-stability'] : 'stable'; + } + + public function getStabilityFlags() + { + $lockData = $this->getLockData(); + + return isset($lockData['stability-flags']) ? $lockData['stability-flags'] : array(); + } + + public function getPreferStable() + { + $lockData = $this->getLockData(); + + // return null if not set to allow caller logic to choose the + // right behavior since old lock files have no prefer-stable + return isset($lockData['prefer-stable']) ? $lockData['prefer-stable'] : null; + } + + public function getPreferLowest() + { + $lockData = $this->getLockData(); + + // return null if not set to allow caller logic to choose the + // right behavior since old lock files have no prefer-lowest + return isset($lockData['prefer-lowest']) ? $lockData['prefer-lowest'] : null; + } + + public function getPlatformOverrides() + { + $lockData = $this->getLockData(); + + return isset($lockData['platform-overrides']) ? $lockData['platform-overrides'] : array(); + } + + public function getAliases() + { + $lockData = $this->getLockData(); + + return isset($lockData['aliases']) ? $lockData['aliases'] : array(); + } + + public function getLockData() + { + if (null !== $this->lockDataCache) { + return $this->lockDataCache; + } + + if (!$this->lockFile->exists()) { + throw new \LogicException('No lockfile found. Unable to read locked packages'); + } + + return $this->lockDataCache = $this->lockFile->read(); + } + + /** + * Locks provided data into lockfile. + * + * @param array $packages array of packages + * @param mixed $devPackages array of dev packages or null if installed without --dev + * @param array $platformReqs array of package name => constraint for required platform packages + * @param mixed $platformDevReqs array of package name => constraint for dev-required platform packages + * @param array $aliases array of aliases + * @param string $minimumStability + * @param array $stabilityFlags + * @param bool $preferStable + * @param bool $preferLowest + * @param array $platformOverrides + * + * @return bool + */ + public function setLockData(array $packages, $devPackages, array $platformReqs, $platformDevReqs, array $aliases, $minimumStability, array $stabilityFlags, $preferStable, $preferLowest, array $platformOverrides) + { + $lock = array( + '_readme' => array('This file locks the dependencies of your project to a known state', + 'Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies', + 'This file is @gener'.'ated automatically', ), + 'content-hash' => $this->contentHash, + 'packages' => null, + 'packages-dev' => null, + 'aliases' => array(), + 'minimum-stability' => $minimumStability, + 'stability-flags' => $stabilityFlags, + 'prefer-stable' => $preferStable, + 'prefer-lowest' => $preferLowest, + ); + + foreach ($aliases as $package => $versions) { + foreach ($versions as $version => $alias) { + $lock['aliases'][] = array( + 'alias' => $alias['alias'], + 'alias_normalized' => $alias['alias_normalized'], + 'version' => $version, + 'package' => $package, + ); + } + } + + $lock['packages'] = $this->lockPackages($packages); + if (null !== $devPackages) { + $lock['packages-dev'] = $this->lockPackages($devPackages); + } + + $lock['platform'] = $platformReqs; + $lock['platform-dev'] = $platformDevReqs; + if ($platformOverrides) { + $lock['platform-overrides'] = $platformOverrides; + } + + if (empty($lock['packages']) && empty($lock['packages-dev']) && empty($lock['platform']) && empty($lock['platform-dev'])) { + if ($this->lockFile->exists()) { + unlink($this->lockFile->getPath()); + } + + return false; + } + + try { + $isLocked = $this->isLocked(); + } catch (ParsingException $e) { + $isLocked = false; + } + if (!$isLocked || $lock !== $this->getLockData()) { + $this->lockFile->write($lock); + $this->lockDataCache = null; + + return true; + } + + return false; + } + + private function lockPackages(array $packages) + { + $locked = array(); + + foreach ($packages as $package) { + if ($package instanceof AliasPackage) { + continue; + } + + $name = $package->getPrettyName(); + $version = $package->getPrettyVersion(); + + if (!$name || !$version) { + throw new \LogicException(sprintf( + 'Package "%s" has no version or name and can not be locked', + $package + )); + } + + $spec = $this->dumper->dump($package); + unset($spec['version_normalized']); + + // always move time to the end of the package definition + $time = isset($spec['time']) ? $spec['time'] : null; + unset($spec['time']); + if ($package->isDev() && $package->getInstallationSource() === 'source') { + // use the exact commit time of the current reference if it's a dev package + $time = $this->getPackageTime($package) ?: $time; + } + if (null !== $time) { + $spec['time'] = $time; + } + + unset($spec['installation-source']); + + $locked[] = $spec; + } + + usort($locked, function ($a, $b) { + $comparison = strcmp($a['name'], $b['name']); + + if (0 !== $comparison) { + return $comparison; + } + + // If it is the same package, compare the versions to make the order deterministic + return strcmp($a['version'], $b['version']); + }); + + return $locked; + } + + /** + * Returns the packages's datetime for its source reference. + * + * @param PackageInterface $package The package to scan. + * @return string|null The formatted datetime or null if none was found. + */ + private function getPackageTime(PackageInterface $package) + { + if (!function_exists('proc_open')) { + return null; + } + + $path = realpath($this->installationManager->getInstallPath($package)); + $sourceType = $package->getSourceType(); + $datetime = null; + + if ($path && in_array($sourceType, array('git', 'hg'))) { + $sourceRef = $package->getSourceReference() ?: $package->getDistReference(); + switch ($sourceType) { + case 'git': + GitUtil::cleanEnv(); + + if (0 === $this->process->execute('git log -n1 --pretty=%ct '.ProcessExecutor::escape($sourceRef), $output, $path) && preg_match('{^\s*\d+\s*$}', $output)) { + $datetime = new \DateTime('@'.trim($output), new \DateTimeZone('UTC')); + } + break; + + case 'hg': + if (0 === $this->process->execute('hg log --template "{date|hgdate}" -r '.ProcessExecutor::escape($sourceRef), $output, $path) && preg_match('{^\s*(\d+)\s*}', $output, $match)) { + $datetime = new \DateTime('@'.$match[1], new \DateTimeZone('UTC')); + } + break; + } + } + + return $datetime ? $datetime->format(DATE_RFC3339) : null; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Package.php b/vendor/composer/composer/src/Composer/Package/Package.php new file mode 100644 index 0000000..6c7b426 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Package.php @@ -0,0 +1,612 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +use Composer\Package\Version\VersionParser; +use Composer\Util\ComposerMirror; + +/** + * Core package definitions that are needed to resolve dependencies and install packages + * + * @author Nils Adermann + */ +class Package extends BasePackage +{ + protected $type; + protected $targetDir; + protected $installationSource; + protected $sourceType; + protected $sourceUrl; + protected $sourceReference; + protected $sourceMirrors; + protected $distType; + protected $distUrl; + protected $distReference; + protected $distSha1Checksum; + protected $distMirrors; + protected $version; + protected $prettyVersion; + protected $releaseDate; + protected $extra = array(); + protected $binaries = array(); + protected $dev; + protected $stability; + protected $notificationUrl; + + /** @var Link[] */ + protected $requires = array(); + /** @var Link[] */ + protected $conflicts = array(); + /** @var Link[] */ + protected $provides = array(); + /** @var Link[] */ + protected $replaces = array(); + /** @var Link[] */ + protected $devRequires = array(); + protected $suggests = array(); + protected $autoload = array(); + protected $devAutoload = array(); + protected $includePaths = array(); + protected $archiveExcludes = array(); + + /** + * Creates a new in memory package. + * + * @param string $name The package's name + * @param string $version The package's version + * @param string $prettyVersion The package's non-normalized version + */ + public function __construct($name, $version, $prettyVersion) + { + parent::__construct($name); + + $this->version = $version; + $this->prettyVersion = $prettyVersion; + + $this->stability = VersionParser::parseStability($version); + $this->dev = $this->stability === 'dev'; + } + + /** + * {@inheritDoc} + */ + public function isDev() + { + return $this->dev; + } + + /** + * @param string $type + */ + public function setType($type) + { + $this->type = $type; + } + + /** + * {@inheritDoc} + */ + public function getType() + { + return $this->type ?: 'library'; + } + + /** + * {@inheritDoc} + */ + public function getStability() + { + return $this->stability; + } + + /** + * @param string $targetDir + */ + public function setTargetDir($targetDir) + { + $this->targetDir = $targetDir; + } + + /** + * {@inheritDoc} + */ + public function getTargetDir() + { + if (null === $this->targetDir) { + return; + } + + return ltrim(preg_replace('{ (?:^|[\\\\/]+) \.\.? (?:[\\\\/]+|$) (?:\.\.? (?:[\\\\/]+|$) )*}x', '/', $this->targetDir), '/'); + } + + /** + * @param array $extra + */ + public function setExtra(array $extra) + { + $this->extra = $extra; + } + + /** + * {@inheritDoc} + */ + public function getExtra() + { + return $this->extra; + } + + /** + * @param array $binaries + */ + public function setBinaries(array $binaries) + { + $this->binaries = $binaries; + } + + /** + * {@inheritDoc} + */ + public function getBinaries() + { + return $this->binaries; + } + + /** + * {@inheritDoc} + */ + public function setInstallationSource($type) + { + $this->installationSource = $type; + } + + /** + * {@inheritDoc} + */ + public function getInstallationSource() + { + return $this->installationSource; + } + + /** + * @param string $type + */ + public function setSourceType($type) + { + $this->sourceType = $type; + } + + /** + * {@inheritDoc} + */ + public function getSourceType() + { + return $this->sourceType; + } + + /** + * @param string $url + */ + public function setSourceUrl($url) + { + $this->sourceUrl = $url; + } + + /** + * {@inheritDoc} + */ + public function getSourceUrl() + { + return $this->sourceUrl; + } + + /** + * @param string $reference + */ + public function setSourceReference($reference) + { + $this->sourceReference = $reference; + } + + /** + * {@inheritDoc} + */ + public function getSourceReference() + { + return $this->sourceReference; + } + + /** + * @param array|null $mirrors + */ + public function setSourceMirrors($mirrors) + { + $this->sourceMirrors = $mirrors; + } + + /** + * {@inheritDoc} + */ + public function getSourceMirrors() + { + return $this->sourceMirrors; + } + + /** + * {@inheritDoc} + */ + public function getSourceUrls() + { + return $this->getUrls($this->sourceUrl, $this->sourceMirrors, $this->sourceReference, $this->sourceType, 'source'); + } + + /** + * @param string $type + */ + public function setDistType($type) + { + $this->distType = $type; + } + + /** + * {@inheritDoc} + */ + public function getDistType() + { + return $this->distType; + } + + /** + * @param string $url + */ + public function setDistUrl($url) + { + $this->distUrl = $url; + } + + /** + * {@inheritDoc} + */ + public function getDistUrl() + { + return $this->distUrl; + } + + /** + * @param string $reference + */ + public function setDistReference($reference) + { + $this->distReference = $reference; + } + + /** + * {@inheritDoc} + */ + public function getDistReference() + { + return $this->distReference; + } + + /** + * @param string $sha1checksum + */ + public function setDistSha1Checksum($sha1checksum) + { + $this->distSha1Checksum = $sha1checksum; + } + + /** + * {@inheritDoc} + */ + public function getDistSha1Checksum() + { + return $this->distSha1Checksum; + } + + /** + * @param array|null $mirrors + */ + public function setDistMirrors($mirrors) + { + $this->distMirrors = $mirrors; + } + + /** + * {@inheritDoc} + */ + public function getDistMirrors() + { + return $this->distMirrors; + } + + /** + * {@inheritDoc} + */ + public function getDistUrls() + { + return $this->getUrls($this->distUrl, $this->distMirrors, $this->distReference, $this->distType, 'dist'); + } + + /** + * {@inheritDoc} + */ + public function getVersion() + { + return $this->version; + } + + /** + * {@inheritDoc} + */ + public function getPrettyVersion() + { + return $this->prettyVersion; + } + + /** + * Set the releaseDate + * + * @param \DateTime $releaseDate + */ + public function setReleaseDate(\DateTime $releaseDate) + { + $this->releaseDate = $releaseDate; + } + + /** + * {@inheritDoc} + */ + public function getReleaseDate() + { + return $this->releaseDate; + } + + /** + * Set the required packages + * + * @param Link[] $requires A set of package links + */ + public function setRequires(array $requires) + { + $this->requires = $requires; + } + + /** + * {@inheritDoc} + */ + public function getRequires() + { + return $this->requires; + } + + /** + * Set the conflicting packages + * + * @param Link[] $conflicts A set of package links + */ + public function setConflicts(array $conflicts) + { + $this->conflicts = $conflicts; + } + + /** + * {@inheritDoc} + */ + public function getConflicts() + { + return $this->conflicts; + } + + /** + * Set the provided virtual packages + * + * @param Link[] $provides A set of package links + */ + public function setProvides(array $provides) + { + $this->provides = $provides; + } + + /** + * {@inheritDoc} + */ + public function getProvides() + { + return $this->provides; + } + + /** + * Set the packages this one replaces + * + * @param Link[] $replaces A set of package links + */ + public function setReplaces(array $replaces) + { + $this->replaces = $replaces; + } + + /** + * {@inheritDoc} + */ + public function getReplaces() + { + return $this->replaces; + } + + /** + * Set the recommended packages + * + * @param Link[] $devRequires A set of package links + */ + public function setDevRequires(array $devRequires) + { + $this->devRequires = $devRequires; + } + + /** + * {@inheritDoc} + */ + public function getDevRequires() + { + return $this->devRequires; + } + + /** + * Set the suggested packages + * + * @param array $suggests A set of package names/comments + */ + public function setSuggests(array $suggests) + { + $this->suggests = $suggests; + } + + /** + * {@inheritDoc} + */ + public function getSuggests() + { + return $this->suggests; + } + + /** + * Set the autoload mapping + * + * @param array $autoload Mapping of autoloading rules + */ + public function setAutoload(array $autoload) + { + $this->autoload = $autoload; + } + + /** + * {@inheritDoc} + */ + public function getAutoload() + { + return $this->autoload; + } + + /** + * Set the dev autoload mapping + * + * @param array $devAutoload Mapping of dev autoloading rules + */ + public function setDevAutoload(array $devAutoload) + { + $this->devAutoload = $devAutoload; + } + + /** + * {@inheritDoc} + */ + public function getDevAutoload() + { + return $this->devAutoload; + } + + /** + * Sets the list of paths added to PHP's include path. + * + * @param array $includePaths List of directories. + */ + public function setIncludePaths(array $includePaths) + { + $this->includePaths = $includePaths; + } + + /** + * {@inheritDoc} + */ + public function getIncludePaths() + { + return $this->includePaths; + } + + /** + * Sets the notification URL + * + * @param string $notificationUrl + */ + public function setNotificationUrl($notificationUrl) + { + $this->notificationUrl = $notificationUrl; + } + + /** + * {@inheritDoc} + */ + public function getNotificationUrl() + { + return $this->notificationUrl; + } + + /** + * Sets a list of patterns to be excluded from archives + * + * @param array $excludes + */ + public function setArchiveExcludes(array $excludes) + { + $this->archiveExcludes = $excludes; + } + + /** + * {@inheritDoc} + */ + public function getArchiveExcludes() + { + return $this->archiveExcludes; + } + + /** + * Replaces current version and pretty version with passed values. + * It also sets stability. + * + * @param string $version The package's normalized version + * @param string $prettyVersion The package's non-normalized version + */ + public function replaceVersion($version, $prettyVersion) + { + $this->version = $version; + $this->prettyVersion = $prettyVersion; + + $this->stability = VersionParser::parseStability($version); + $this->dev = $this->stability === 'dev'; + } + + protected function getUrls($url, $mirrors, $ref, $type, $urlType) + { + if (!$url) { + return array(); + } + $urls = array($url); + if ($mirrors) { + foreach ($mirrors as $mirror) { + if ($urlType === 'dist') { + $mirrorUrl = ComposerMirror::processUrl($mirror['url'], $this->name, $this->version, $ref, $type); + } elseif ($urlType === 'source' && $type === 'git') { + $mirrorUrl = ComposerMirror::processGitUrl($mirror['url'], $this->name, $url, $type); + } elseif ($urlType === 'source' && $type === 'hg') { + $mirrorUrl = ComposerMirror::processHgUrl($mirror['url'], $this->name, $url, $type); + } + if (!in_array($mirrorUrl, $urls)) { + $func = $mirror['preferred'] ? 'array_unshift' : 'array_push'; + $func($urls, $mirrorUrl); + } + } + } + + return $urls; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/PackageInterface.php b/vendor/composer/composer/src/Composer/Package/PackageInterface.php new file mode 100644 index 0000000..cb16efa --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/PackageInterface.php @@ -0,0 +1,389 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +use Composer\Repository\RepositoryInterface; + +/** + * Defines the essential information a package has that is used during solving/installation + * + * @author Jordi Boggiano + */ +interface PackageInterface +{ + /** + * Returns the package's name without version info, thus not a unique identifier + * + * @return string package name + */ + public function getName(); + + /** + * Returns the package's pretty (i.e. with proper case) name + * + * @return string package name + */ + public function getPrettyName(); + + /** + * Returns a set of names that could refer to this package + * + * No version or release type information should be included in any of the + * names. Provided or replaced package names need to be returned as well. + * + * @return array An array of strings referring to this package + */ + public function getNames(); + + /** + * Allows the solver to set an id for this package to refer to it. + * + * @param int $id + */ + public function setId($id); + + /** + * Retrieves the package's id set through setId + * + * @return int The previously set package id + */ + public function getId(); + + /** + * Returns whether the package is a development virtual package or a concrete one + * + * @return bool + */ + public function isDev(); + + /** + * Returns the package type, e.g. library + * + * @return string The package type + */ + public function getType(); + + /** + * Returns the package targetDir property + * + * @return string The package targetDir + */ + public function getTargetDir(); + + /** + * Returns the package extra data + * + * @return array The package extra data + */ + public function getExtra(); + + /** + * Sets source from which this package was installed (source/dist). + * + * @param string $type source/dist + */ + public function setInstallationSource($type); + + /** + * Returns source from which this package was installed (source/dist). + * + * @return string source/dist + */ + public function getInstallationSource(); + + /** + * Returns the repository type of this package, e.g. git, svn + * + * @return string The repository type + */ + public function getSourceType(); + + /** + * Returns the repository url of this package, e.g. git://github.com/naderman/composer.git + * + * @return string The repository url + */ + public function getSourceUrl(); + + /** + * Returns the repository urls of this package including mirrors, e.g. git://github.com/naderman/composer.git + * + * @return array + */ + public function getSourceUrls(); + + /** + * Returns the repository reference of this package, e.g. master, 1.0.0 or a commit hash for git + * + * @return string The repository reference + */ + public function getSourceReference(); + + /** + * Returns the source mirrors of this package + * + * @return array|null + */ + public function getSourceMirrors(); + + /** + * Returns the type of the distribution archive of this version, e.g. zip, tarball + * + * @return string The repository type + */ + public function getDistType(); + + /** + * Returns the url of the distribution archive of this version + * + * @return string + */ + public function getDistUrl(); + + /** + * Returns the urls of the distribution archive of this version, including mirrors + * + * @return array + */ + public function getDistUrls(); + + /** + * Returns the reference of the distribution archive of this version, e.g. master, 1.0.0 or a commit hash for git + * + * @return string + */ + public function getDistReference(); + + /** + * Returns the sha1 checksum for the distribution archive of this version + * + * @return string + */ + public function getDistSha1Checksum(); + + /** + * Returns the dist mirrors of this package + * + * @return array|null + */ + public function getDistMirrors(); + + /** + * Returns the version of this package + * + * @return string version + */ + public function getVersion(); + + /** + * Returns the pretty (i.e. non-normalized) version string of this package + * + * @return string version + */ + public function getPrettyVersion(); + + /** + * Returns the pretty version string plus a git or hg commit hash of this package + * + * @see getPrettyVersion + * + * @param bool $truncate If the source reference is a sha1 hash, truncate it + * @return string version + */ + public function getFullPrettyVersion($truncate = true); + + /** + * Returns the release date of the package + * + * @return \DateTime + */ + public function getReleaseDate(); + + /** + * Returns the stability of this package: one of (dev, alpha, beta, RC, stable) + * + * @return string + */ + public function getStability(); + + /** + * Returns a set of links to packages which need to be installed before + * this package can be installed + * + * @return Link[] An array of package links defining required packages + */ + public function getRequires(); + + /** + * Returns a set of links to packages which must not be installed at the + * same time as this package + * + * @return Link[] An array of package links defining conflicting packages + */ + public function getConflicts(); + + /** + * Returns a set of links to virtual packages that are provided through + * this package + * + * @return Link[] An array of package links defining provided packages + */ + public function getProvides(); + + /** + * Returns a set of links to packages which can alternatively be + * satisfied by installing this package + * + * @return Link[] An array of package links defining replaced packages + */ + public function getReplaces(); + + /** + * Returns a set of links to packages which are required to develop + * this package. These are installed if in dev mode. + * + * @return Link[] An array of package links defining packages required for development + */ + public function getDevRequires(); + + /** + * Returns a set of package names and reasons why they are useful in + * combination with this package. + * + * @return array An array of package suggestions with descriptions + */ + public function getSuggests(); + + /** + * Returns an associative array of autoloading rules + * + * {"": {""}} + * + * Type is either "psr-4", "psr-0", "classmap" or "files". Namespaces are mapped to + * directories for autoloading using the type specified. + * + * @return array Mapping of autoloading rules + */ + public function getAutoload(); + + /** + * Returns an associative array of dev autoloading rules + * + * {"": {""}} + * + * Type is either "psr-4", "psr-0", "classmap" or "files". Namespaces are mapped to + * directories for autoloading using the type specified. + * + * @return array Mapping of dev autoloading rules + */ + public function getDevAutoload(); + + /** + * Returns a list of directories which should get added to PHP's + * include path. + * + * @return array + */ + public function getIncludePaths(); + + /** + * Stores a reference to the repository that owns the package + * + * @param RepositoryInterface $repository + */ + public function setRepository(RepositoryInterface $repository); + + /** + * Returns a reference to the repository that owns the package + * + * @return RepositoryInterface + */ + public function getRepository(); + + /** + * Returns the package binaries + * + * @return array + */ + public function getBinaries(); + + /** + * Returns package unique name, constructed from name and version. + * + * @return string + */ + public function getUniqueName(); + + /** + * Returns the package notification url + * + * @return string + */ + public function getNotificationUrl(); + + /** + * Converts the package into a readable and unique string + * + * @return string + */ + public function __toString(); + + /** + * Converts the package into a pretty readable string + * + * @return string + */ + public function getPrettyString(); + + /** + * Returns a list of patterns to exclude from package archives + * + * @return array + */ + public function getArchiveExcludes(); + + /** + * Returns a list of options to download package dist files + * + * @return array + */ + public function getTransportOptions(); + + /** + * @param string $reference + * + * @return void + */ + public function setSourceReference($reference); + + /** + * @param string $url + * + * @return void + */ + public function setDistUrl($url); + + /** + * @param string $type + * + * @return void + */ + public function setDistType($type); + + /** + * @param string $reference + * + * @return void + */ + public function setDistReference($reference); +} diff --git a/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php b/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php new file mode 100644 index 0000000..862cb21 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php @@ -0,0 +1,173 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +/** + * @author Jordi Boggiano + */ +class RootAliasPackage extends AliasPackage implements RootPackageInterface +{ + public function __construct(RootPackageInterface $aliasOf, $version, $prettyVersion) + { + parent::__construct($aliasOf, $version, $prettyVersion); + } + + /** + * {@inheritDoc} + */ + public function getAliases() + { + return $this->aliasOf->getAliases(); + } + + /** + * {@inheritDoc} + */ + public function getMinimumStability() + { + return $this->aliasOf->getMinimumStability(); + } + + /** + * {@inheritDoc} + */ + public function getStabilityFlags() + { + return $this->aliasOf->getStabilityFlags(); + } + + /** + * {@inheritDoc} + */ + public function getReferences() + { + return $this->aliasOf->getReferences(); + } + + /** + * {@inheritDoc} + */ + public function getPreferStable() + { + return $this->aliasOf->getPreferStable(); + } + + /** + * {@inheritDoc} + */ + public function getConfig() + { + return $this->aliasOf->getConfig(); + } + + /** + * {@inheritDoc} + */ + public function setRequires(array $require) + { + $this->requires = $this->replaceSelfVersionDependencies($require, 'requires'); + + $this->aliasOf->setRequires($require); + } + + /** + * {@inheritDoc} + */ + public function setDevRequires(array $devRequire) + { + $this->devRequires = $this->replaceSelfVersionDependencies($devRequire, 'devRequires'); + + $this->aliasOf->setDevRequires($devRequire); + } + + /** + * {@inheritDoc} + */ + public function setConflicts(array $conflicts) + { + $this->conflicts = $this->replaceSelfVersionDependencies($conflicts, 'conflicts'); + $this->aliasOf->setConflicts($conflicts); + } + + /** + * {@inheritDoc} + */ + public function setProvides(array $provides) + { + $this->provides = $this->replaceSelfVersionDependencies($provides, 'provides'); + $this->aliasOf->setProvides($provides); + } + + /** + * {@inheritDoc} + */ + public function setReplaces(array $replaces) + { + $this->replaces = $this->replaceSelfVersionDependencies($replaces, 'replaces'); + $this->aliasOf->setReplaces($replaces); + } + + /** + * {@inheritDoc} + */ + public function setRepositories($repositories) + { + $this->aliasOf->setRepositories($repositories); + } + + /** + * {@inheritDoc} + */ + public function setAutoload(array $autoload) + { + $this->aliasOf->setAutoload($autoload); + } + + /** + * {@inheritDoc} + */ + public function setDevAutoload(array $devAutoload) + { + $this->aliasOf->setDevAutoload($devAutoload); + } + + /** + * {@inheritDoc} + */ + public function setStabilityFlags(array $stabilityFlags) + { + $this->aliasOf->setStabilityFlags($stabilityFlags); + } + + /** + * {@inheritDoc} + */ + public function setSuggests(array $suggests) + { + $this->aliasOf->setSuggests($suggests); + } + + /** + * {@inheritDoc} + */ + public function setExtra(array $extra) + { + $this->aliasOf->setExtra($extra); + } + + public function __clone() + { + parent::__clone(); + $this->aliasOf = clone $this->aliasOf; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/RootPackage.php b/vendor/composer/composer/src/Composer/Package/RootPackage.php new file mode 100644 index 0000000..52e851a --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/RootPackage.php @@ -0,0 +1,136 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +/** + * The root package represents the project's composer.json and contains additional metadata + * + * @author Jordi Boggiano + */ +class RootPackage extends CompletePackage implements RootPackageInterface +{ + protected $minimumStability = 'stable'; + protected $preferStable = false; + protected $stabilityFlags = array(); + protected $config = array(); + protected $references = array(); + protected $aliases = array(); + + /** + * Set the minimumStability + * + * @param string $minimumStability + */ + public function setMinimumStability($minimumStability) + { + $this->minimumStability = $minimumStability; + } + + /** + * {@inheritDoc} + */ + public function getMinimumStability() + { + return $this->minimumStability; + } + + /** + * Set the stabilityFlags + * + * @param array $stabilityFlags + */ + public function setStabilityFlags(array $stabilityFlags) + { + $this->stabilityFlags = $stabilityFlags; + } + + /** + * {@inheritDoc} + */ + public function getStabilityFlags() + { + return $this->stabilityFlags; + } + + /** + * Set the preferStable + * + * @param bool $preferStable + */ + public function setPreferStable($preferStable) + { + $this->preferStable = $preferStable; + } + + /** + * {@inheritDoc} + */ + public function getPreferStable() + { + return $this->preferStable; + } + + /** + * Set the config + * + * @param array $config + */ + public function setConfig(array $config) + { + $this->config = $config; + } + + /** + * {@inheritDoc} + */ + public function getConfig() + { + return $this->config; + } + + /** + * Set the references + * + * @param array $references + */ + public function setReferences(array $references) + { + $this->references = $references; + } + + /** + * {@inheritDoc} + */ + public function getReferences() + { + return $this->references; + } + + /** + * Set the aliases + * + * @param array $aliases + */ + public function setAliases(array $aliases) + { + $this->aliases = $aliases; + } + + /** + * {@inheritDoc} + */ + public function getAliases() + { + return $this->aliases; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php b/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php new file mode 100644 index 0000000..7a3be9d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php @@ -0,0 +1,142 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package; + +/** + * Defines additional fields that are only needed for the root package + * + * @author Jordi Boggiano + */ +interface RootPackageInterface extends CompletePackageInterface +{ + /** + * Returns a set of package names and their aliases + * + * @return array + */ + public function getAliases(); + + /** + * Returns the minimum stability of the package + * + * @return string + */ + public function getMinimumStability(); + + /** + * Returns the stability flags to apply to dependencies + * + * array('foo/bar' => 'dev') + * + * @return array + */ + public function getStabilityFlags(); + + /** + * Returns a set of package names and source references that must be enforced on them + * + * array('foo/bar' => 'abcd1234') + * + * @return array + */ + public function getReferences(); + + /** + * Returns true if the root package prefers picking stable packages over unstable ones + * + * @return bool + */ + public function getPreferStable(); + + /** + * Returns the root package's configuration + * + * @return array + */ + public function getConfig(); + + /** + * Set the required packages + * + * @param Link[] $requires A set of package links + */ + public function setRequires(array $requires); + + /** + * Set the recommended packages + * + * @param Link[] $devRequires A set of package links + */ + public function setDevRequires(array $devRequires); + + /** + * Set the conflicting packages + * + * @param Link[] $conflicts A set of package links + */ + public function setConflicts(array $conflicts); + + /** + * Set the provided virtual packages + * + * @param Link[] $provides A set of package links + */ + public function setProvides(array $provides); + + /** + * Set the packages this one replaces + * + * @param Link[] $replaces A set of package links + */ + public function setReplaces(array $replaces); + + /** + * Set the repositories + * + * @param array $repositories + */ + public function setRepositories($repositories); + + /** + * Set the autoload mapping + * + * @param array $autoload Mapping of autoloading rules + */ + public function setAutoload(array $autoload); + + /** + * Set the dev autoload mapping + * + * @param array $devAutoload Mapping of dev autoloading rules + */ + public function setDevAutoload(array $devAutoload); + + /** + * Set the stabilityFlags + * + * @param array $stabilityFlags + */ + public function setStabilityFlags(array $stabilityFlags); + + /** + * Set the suggested packages + * + * @param array $suggests A set of package names/comments + */ + public function setSuggests(array $suggests); + + /** + * @param array $extra + */ + public function setExtra(array $extra); +} diff --git a/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php b/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php new file mode 100644 index 0000000..f35aabe --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php @@ -0,0 +1,322 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Version; + +use Composer\Config; +use Composer\Repository\Vcs\HgDriver; +use Composer\IO\NullIO; +use Composer\Semver\VersionParser as SemverVersionParser; +use Composer\Util\Git as GitUtil; +use Composer\Util\ProcessExecutor; +use Composer\Util\Svn as SvnUtil; + +/** + * Try to guess the current version number based on different VCS configuration. + * + * @author Jordi Boggiano + * @author Samuel Roze + */ +class VersionGuesser +{ + /** + * @var Config + */ + private $config; + + /** + * @var ProcessExecutor + */ + private $process; + + /** + * @var SemverVersionParser + */ + private $versionParser; + + /** + * @param Config $config + * @param ProcessExecutor $process + * @param SemverVersionParser $versionParser + */ + public function __construct(Config $config, ProcessExecutor $process, SemverVersionParser $versionParser) + { + $this->config = $config; + $this->process = $process; + $this->versionParser = $versionParser; + } + + /** + * @param array $packageConfig + * @param string $path Path to guess into + * + * @return null|array versionData, 'version', 'pretty_version' and 'commit' keys, if the version is a feature branch, 'feature_version' and 'feature_pretty_version' keys may also be returned + */ + public function guessVersion(array $packageConfig, $path) + { + if (function_exists('proc_open')) { + $versionData = $this->guessGitVersion($packageConfig, $path); + if (null !== $versionData && null !== $versionData['version']) { + return $this->postprocess($versionData); + } + + $versionData = $this->guessHgVersion($packageConfig, $path); + if (null !== $versionData && null !== $versionData['version']) { + return $this->postprocess($versionData); + } + + $versionData = $this->guessFossilVersion($packageConfig, $path); + if (null !== $versionData && null !== $versionData['version']) { + return $this->postprocess($versionData); + } + + $versionData = $this->guessSvnVersion($packageConfig, $path); + if (null !== $versionData && null !== $versionData['version']) { + return $this->postprocess($versionData); + } + } + } + + private function postprocess(array $versionData) + { + if (!empty($versionData['feature_version']) && $versionData['feature_version'] === $versionData['version'] && $versionData['feature_pretty_version'] === $versionData['feature_pretty_version']) { + unset($versionData['feature_version'], $versionData['feature_pretty_version']); + } + + if ('-dev' === substr($versionData['version'], -4) && preg_match('{\.9{7}}', $versionData['version'])) { + $versionData['pretty_version'] = preg_replace('{(\.9{7})+}', '.x', $versionData['version']); + } + + if (!empty($versionData['feature_version']) && '-dev' === substr($versionData['feature_version'], -4) && preg_match('{\.9{7}}', $versionData['feature_version'])) { + $versionData['feature_pretty_version'] = preg_replace('{(\.9{7})+}', '.x', $versionData['feature_version']); + } + + return $versionData; + } + + private function guessGitVersion(array $packageConfig, $path) + { + GitUtil::cleanEnv(); + $commit = null; + $version = null; + $prettyVersion = null; + $featureVersion = null; + $featurePrettyVersion = null; + $isDetached = false; + + // try to fetch current version from git branch + if (0 === $this->process->execute('git branch --no-color --no-abbrev -v', $output, $path)) { + $branches = array(); + $isFeatureBranch = false; + + // find current branch and collect all branch names + foreach ($this->process->splitLines($output) as $branch) { + if ($branch && preg_match('{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}', $branch, $match)) { + if ($match[1] === '(no branch)' || substr($match[1], 0, 10) === '(detached ' || substr($match[1], 0, 17) === '(HEAD detached at') { + $version = 'dev-' . $match[2]; + $prettyVersion = $version; + $isFeatureBranch = true; + $isDetached = true; + } else { + $version = $this->versionParser->normalizeBranch($match[1]); + $prettyVersion = 'dev-' . $match[1]; + $isFeatureBranch = 0 === strpos($version, 'dev-'); + } + + if ($match[2]) { + $commit = $match[2]; + } + } + + if ($branch && !preg_match('{^ *[^/]+/HEAD }', $branch)) { + if (preg_match('{^(?:\* )? *(\S+) *([a-f0-9]+) .*$}', $branch, $match)) { + $branches[] = $match[1]; + } + } + } + + if ($isFeatureBranch) { + $featureVersion = $version; + $featurePrettyVersion = $prettyVersion; + // try to find the best (nearest) version branch to assume this feature's version + $result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'git rev-list %candidate%..%branch%', $path); + $version = $result['version']; + $prettyVersion = $result['pretty_version']; + } + } + + if (!$version || $isDetached) { + $result = $this->versionFromGitTags($path); + if ($result) { + $version = $result['version']; + $prettyVersion = $result['pretty_version']; + $featureVersion = null; + $featurePrettyVersion = null; + } + } + + if (!$commit) { + $command = 'git log --pretty="%H" -n1 HEAD'; + if (0 === $this->process->execute($command, $output, $path)) { + $commit = trim($output) ?: null; + } + } + + if ($featureVersion) { + return array('version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion, 'feature_version' => $featureVersion, 'feature_pretty_version' => $featurePrettyVersion); + } + + return array('version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion); + } + + private function versionFromGitTags($path) + { + // try to fetch current version from git tags + if (0 === $this->process->execute('git describe --exact-match --tags', $output, $path)) { + try { + $version = $this->versionParser->normalize(trim($output)); + + return array('version' => $version, 'pretty_version' => trim($output)); + } catch (\Exception $e) { + } + } + + return null; + } + + private function guessHgVersion(array $packageConfig, $path) + { + // try to fetch current version from hg branch + if (0 === $this->process->execute('hg branch', $output, $path)) { + $branch = trim($output); + $version = $this->versionParser->normalizeBranch($branch); + $isFeatureBranch = 0 === strpos($version, 'dev-'); + + if ('9999999-dev' === $version) { + return array('version' => $version, 'commit' => null, 'pretty_version' => 'dev-'.$branch); + } + + if (!$isFeatureBranch) { + return array('version' => $version, 'commit' => null, 'pretty_version' => $version); + } + + // re-use the HgDriver to fetch branches (this properly includes bookmarks) + $driver = new HgDriver(array('url' => $path), new NullIO(), $this->config, $this->process); + $branches = array_keys($driver->getBranches()); + + // try to find the best (nearest) version branch to assume this feature's version + $result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'hg log -r "not ancestors(\'%candidate%\') and ancestors(\'%branch%\')" --template "{node}\\n"', $path); + $result['commit'] = ''; + $result['feature_version'] = $version; + $result['feature_pretty_version'] = $version; + + return $result; + } + } + + private function guessFeatureVersion(array $packageConfig, $version, array $branches, $scmCmdline, $path) + { + $prettyVersion = $version; + + // ignore feature branches if they have no branch-alias or self.version is used + // and find the branch they came from to use as a version instead + if ((isset($packageConfig['extra']['branch-alias']) && !isset($packageConfig['extra']['branch-alias'][$version])) + || strpos(json_encode($packageConfig), '"self.version"') + ) { + $branch = preg_replace('{^dev-}', '', $version); + $length = PHP_INT_MAX; + + $nonFeatureBranches = ''; + if (!empty($packageConfig['non-feature-branches'])) { + $nonFeatureBranches = implode('|', $packageConfig['non-feature-branches']); + } + + foreach ($branches as $candidate) { + // return directly, if branch is configured to be non-feature branch + if ($candidate === $branch && preg_match('{^(' . $nonFeatureBranches . ')$}', $candidate)) { + break; + } + + // do not compare against itself or other feature branches + if ($candidate === $branch || !preg_match('{^(' . $nonFeatureBranches . '|master|trunk|default|develop|\d+\..+)$}', $candidate, $match)) { + continue; + } + + $cmdLine = str_replace(array('%candidate%', '%branch%'), array($candidate, $branch), $scmCmdline); + if (0 !== $this->process->execute($cmdLine, $output, $path)) { + continue; + } + + if (strlen($output) < $length) { + $length = strlen($output); + $version = $this->versionParser->normalizeBranch($candidate); + $prettyVersion = 'dev-' . $match[1]; + } + } + } + + return array('version' => $version, 'pretty_version' => $prettyVersion); + } + + private function guessFossilVersion(array $packageConfig, $path) + { + $version = null; + $prettyVersion = null; + + // try to fetch current version from fossil + if (0 === $this->process->execute('fossil branch list', $output, $path)) { + $branch = trim($output); + $version = $this->versionParser->normalizeBranch($branch); + $prettyVersion = 'dev-' . $branch; + } + + // try to fetch current version from fossil tags + if (0 === $this->process->execute('fossil tag list', $output, $path)) { + try { + $version = $this->versionParser->normalize(trim($output)); + $prettyVersion = trim($output); + } catch (\Exception $e) { + } + } + + return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); + } + + private function guessSvnVersion(array $packageConfig, $path) + { + SvnUtil::cleanEnv(); + + // try to fetch current version from svn + if (0 === $this->process->execute('svn info --xml', $output, $path)) { + $trunkPath = isset($packageConfig['trunk-path']) ? preg_quote($packageConfig['trunk-path'], '#') : 'trunk'; + $branchesPath = isset($packageConfig['branches-path']) ? preg_quote($packageConfig['branches-path'], '#') : 'branches'; + $tagsPath = isset($packageConfig['tags-path']) ? preg_quote($packageConfig['tags-path'], '#') : 'tags'; + + $urlPattern = '#.*/(' . $trunkPath . '|(' . $branchesPath . '|' . $tagsPath . ')/(.*))#'; + + if (preg_match($urlPattern, $output, $matches)) { + if (isset($matches[2]) && ($branchesPath === $matches[2] || $tagsPath === $matches[2])) { + // we are in a branches path + $version = $this->versionParser->normalizeBranch($matches[3]); + $prettyVersion = 'dev-' . $matches[3]; + + return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); + } + + $prettyVersion = trim($matches[1]); + $version = $this->versionParser->normalize($prettyVersion); + + return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); + } + } + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php b/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php new file mode 100644 index 0000000..831c61d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php @@ -0,0 +1,81 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Version; + +use Composer\Repository\PlatformRepository; +use Composer\Semver\VersionParser as SemverVersionParser; +use Composer\Semver\Semver; + +class VersionParser extends SemverVersionParser +{ + private static $constraints = array(); + + /** + * {@inheritDoc} + */ + public function parseConstraints($constraints) + { + if (!isset(self::$constraints[$constraints])) { + self::$constraints[$constraints] = parent::parseConstraints($constraints); + } + + return self::$constraints[$constraints]; + } + + /** + * Parses an array of strings representing package/version pairs. + * + * The parsing results in an array of arrays, each of which + * contain a 'name' key with value and optionally a 'version' key with value. + * + * @param array $pairs a set of package/version pairs separated by ":", "=" or " " + * + * @return array[] array of arrays containing a name and (if provided) a version + */ + public function parseNameVersionPairs(array $pairs) + { + $pairs = array_values($pairs); + $result = array(); + + for ($i = 0, $count = count($pairs); $i < $count; $i++) { + $pair = preg_replace('{^([^=: ]+)[=: ](.*)$}', '$1 $2', trim($pairs[$i])); + if (false === strpos($pair, ' ') && isset($pairs[$i + 1]) && false === strpos($pairs[$i + 1], '/') && !preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $pairs[$i + 1])) { + $pair .= ' '.$pairs[$i + 1]; + $i++; + } + + if (strpos($pair, ' ')) { + list($name, $version) = explode(' ', $pair, 2); + $result[] = array('name' => $name, 'version' => $version); + } else { + $result[] = array('name' => $pair); + } + } + + return $result; + } + + /** + * @return bool + */ + public static function isUpgrade($normalizedFrom, $normalizedTo) + { + if (substr($normalizedFrom, 0, 4) === 'dev-' || substr($normalizedTo, 0, 4) === 'dev-') { + return true; + } + + $sorted = Semver::sort(array($normalizedTo, $normalizedFrom)); + + return $sorted[0] === $normalizedFrom; + } +} diff --git a/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php b/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php new file mode 100644 index 0000000..8e225d8 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php @@ -0,0 +1,176 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Package\Version; + +use Composer\DependencyResolver\Pool; +use Composer\Package\BasePackage; +use Composer\Package\PackageInterface; +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\Dumper\ArrayDumper; +use Composer\Semver\Constraint\Constraint; + +/** + * Selects the best possible version for a package + * + * @author Ryan Weaver + * @author Jordi Boggiano + */ +class VersionSelector +{ + private $pool; + + private $parser; + + public function __construct(Pool $pool) + { + $this->pool = $pool; + } + + /** + * Given a package name and optional version, returns the latest PackageInterface + * that matches. + * + * @param string $packageName + * @param string $targetPackageVersion + * @param string $targetPhpVersion + * @param string $preferredStability + * @return PackageInterface|bool + */ + public function findBestCandidate($packageName, $targetPackageVersion = null, $targetPhpVersion = null, $preferredStability = 'stable') + { + $constraint = $targetPackageVersion ? $this->getParser()->parseConstraints($targetPackageVersion) : null; + $candidates = $this->pool->whatProvides(strtolower($packageName), $constraint, true); + + if ($targetPhpVersion) { + $phpConstraint = new Constraint('==', $this->getParser()->normalize($targetPhpVersion)); + $candidates = array_filter($candidates, function ($pkg) use ($phpConstraint) { + $reqs = $pkg->getRequires(); + + return !isset($reqs['php']) || $reqs['php']->getConstraint()->matches($phpConstraint); + }); + } + + if (!$candidates) { + return false; + } + + // select highest version if we have many + $package = reset($candidates); + $minPriority = BasePackage::$stabilities[$preferredStability]; + foreach ($candidates as $candidate) { + $candidatePriority = $candidate->getStabilityPriority(); + $currentPriority = $package->getStabilityPriority(); + + // candidate is less stable than our preferred stability, + // and current package is more stable than candidate, skip it + if ($minPriority < $candidatePriority && $currentPriority < $candidatePriority) { + continue; + } + + // candidate is less stable than our preferred stability, + // and current package is less stable than candidate, select candidate + if ($minPriority < $candidatePriority && $candidatePriority < $currentPriority) { + $package = $candidate; + continue; + } + + // candidate is more stable than our preferred stability, + // and current package is less stable than preferred stability, select candidate + if ($minPriority >= $candidatePriority && $minPriority < $currentPriority) { + $package = $candidate; + continue; + } + + // select highest version of the two + if (version_compare($package->getVersion(), $candidate->getVersion(), '<')) { + $package = $candidate; + } + } + + return $package; + } + + /** + * Given a concrete version, this returns a ~ constraint (when possible) + * that should be used, for example, in composer.json. + * + * For example: + * * 1.2.1 -> ^1.2 + * * 1.2 -> ^1.2 + * * v3.2.1 -> ^3.2 + * * 2.0-beta.1 -> ^2.0@beta + * * dev-master -> ^2.1@dev (dev version with alias) + * * dev-master -> dev-master (dev versions are untouched) + * + * @param PackageInterface $package + * @return string + */ + public function findRecommendedRequireVersion(PackageInterface $package) + { + $version = $package->getVersion(); + if (!$package->isDev()) { + return $this->transformVersion($version, $package->getPrettyVersion(), $package->getStability()); + } + + $loader = new ArrayLoader($this->getParser()); + $dumper = new ArrayDumper(); + $extra = $loader->getBranchAlias($dumper->dump($package)); + if ($extra) { + $extra = preg_replace('{^(\d+\.\d+\.\d+)(\.9999999)-dev$}', '$1.0', $extra, -1, $count); + if ($count) { + $extra = str_replace('.9999999', '.0', $extra); + + return $this->transformVersion($extra, $extra, 'dev'); + } + } + + return $package->getPrettyVersion(); + } + + private function transformVersion($version, $prettyVersion, $stability) + { + // attempt to transform 2.1.1 to 2.1 + // this allows you to upgrade through minor versions + $semanticVersionParts = explode('.', $version); + + // check to see if we have a semver-looking version + if (count($semanticVersionParts) == 4 && preg_match('{^0\D?}', $semanticVersionParts[3])) { + // remove the last parts (i.e. the patch version number and any extra) + if ($semanticVersionParts[0] === '0') { + unset($semanticVersionParts[3]); + } else { + unset($semanticVersionParts[2], $semanticVersionParts[3]); + } + $version = implode('.', $semanticVersionParts); + } else { + return $prettyVersion; + } + + // append stability flag if not default + if ($stability != 'stable') { + $version .= '@'.$stability; + } + + // 2.1 -> ^2.1 + return '^' . $version; + } + + private function getParser() + { + if ($this->parser === null) { + $this->parser = new VersionParser(); + } + + return $this->parser; + } +} diff --git a/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php b/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php new file mode 100644 index 0000000..b124106 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php @@ -0,0 +1,23 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin\Capability; + +/** + * Marker interface for Plugin capabilities. + * Every new Capability which is added to the Plugin API must implement this interface. + * + * @api + */ +interface Capability +{ +} diff --git a/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php b/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php new file mode 100644 index 0000000..0f94bf3 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php @@ -0,0 +1,33 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin\Capability; + +/** + * Commands Provider Interface + * + * This capability will receive an array with 'composer' and 'io' keys as + * constructor argument. Those contain Composer\Composer and Composer\IO\IOInterface + * instances. It also contains a 'plugin' key containing the plugin instance that + * created the capability. + * + * @author Jérémy Derussé + */ +interface CommandProvider extends Capability +{ + /** + * Retrieves an array of commands + * + * @return \Composer\Command\BaseCommand[] + */ + public function getCommands(); +} diff --git a/vendor/composer/composer/src/Composer/Plugin/Capable.php b/vendor/composer/composer/src/Composer/Plugin/Capable.php new file mode 100644 index 0000000..48ae422 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/Capable.php @@ -0,0 +1,43 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin; + +/** + * Plugins which need to expose various implementations + * of the Composer Plugin Capabilities must have their + * declared Plugin class implementing this interface. + * + * @api + */ +interface Capable +{ + /** + * Method by which a Plugin announces its API implementations, through an array + * with a special structure. + * + * The key must be a string, representing a fully qualified class/interface name + * which Composer Plugin API exposes. + * The value must be a string as well, representing the fully qualified class name + * of the implementing class. + * + * @tutorial + * + * return array( + * 'Composer\Plugin\Capability\CommandProvider' => 'My\CommandProvider', + * 'Composer\Plugin\Capability\Validator' => 'My\Validator', + * ); + * + * @return string[] + */ + public function getCapabilities(); +} diff --git a/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php b/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php new file mode 100644 index 0000000..0697df9 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php @@ -0,0 +1,88 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin; + +use Composer\EventDispatcher\Event; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * An event for all commands. + * + * @author Nils Adermann + */ +class CommandEvent extends Event +{ + /** + * @var string + */ + private $commandName; + + /** + * @var InputInterface + */ + private $input; + + /** + * @var OutputInterface + */ + private $output; + + /** + * Constructor. + * + * @param string $name The event name + * @param string $commandName The command name + * @param InputInterface $input + * @param OutputInterface $output + * @param array $args Arguments passed by the user + * @param array $flags Optional flags to pass data not as argument + */ + public function __construct($name, $commandName, $input, $output, array $args = array(), array $flags = array()) + { + parent::__construct($name, $args, $flags); + $this->commandName = $commandName; + $this->input = $input; + $this->output = $output; + } + + /** + * Returns the command input interface + * + * @return InputInterface + */ + public function getInput() + { + return $this->input; + } + + /** + * Retrieves the command output interface + * + * @return OutputInterface + */ + public function getOutput() + { + return $this->output; + } + + /** + * Retrieves the name of the command being run + * + * @return string + */ + public function getCommandName() + { + return $this->commandName; + } +} diff --git a/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php b/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php new file mode 100644 index 0000000..1fb368b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php @@ -0,0 +1,61 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin; + +/** + * The Plugin Events. + * + * @author Nils Adermann + */ +class PluginEvents +{ + /** + * The INIT event occurs after a Composer instance is done being initialized + * + * The event listener method receives a + * Composer\EventDispatcher\Event instance. + * + * @var string + */ + const INIT = 'init'; + + /** + * The COMMAND event occurs as a command begins + * + * The event listener method receives a + * Composer\Plugin\CommandEvent instance. + * + * @var string + */ + const COMMAND = 'command'; + + /** + * The PRE_FILE_DOWNLOAD event occurs before downloading a file + * + * The event listener method receives a + * Composer\Plugin\PreFileDownloadEvent instance. + * + * @var string + */ + const PRE_FILE_DOWNLOAD = 'pre-file-download'; + + /** + * The PRE_COMMAND_RUN event occurs before a command is executed and lets you modify the input arguments/options + * + * The event listener method receives a + * Composer\Plugin\PreCommandRunEvent instance. + * + * @var string + */ + const PRE_COMMAND_RUN = 'pre-command-run'; +} diff --git a/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php b/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php new file mode 100644 index 0000000..6eaca4e --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php @@ -0,0 +1,39 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin; + +use Composer\Composer; +use Composer\IO\IOInterface; + +/** + * Plugin interface + * + * @author Nils Adermann + */ +interface PluginInterface +{ + /** + * Version number of the internal composer-plugin-api package + * + * @var string + */ + const PLUGIN_API_VERSION = '1.1.0'; + + /** + * Apply plugin modifications to Composer + * + * @param Composer $composer + * @param IOInterface $io + */ + public function activate(Composer $composer, IOInterface $io); +} diff --git a/vendor/composer/composer/src/Composer/Plugin/PluginManager.php b/vendor/composer/composer/src/Composer/Plugin/PluginManager.php new file mode 100644 index 0000000..bb9b66d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/PluginManager.php @@ -0,0 +1,406 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin; + +use Composer\Composer; +use Composer\EventDispatcher\EventSubscriberInterface; +use Composer\IO\IOInterface; +use Composer\Package\CompletePackage; +use Composer\Package\Package; +use Composer\Package\Version\VersionParser; +use Composer\Repository\RepositoryInterface; +use Composer\Package\PackageInterface; +use Composer\Package\Link; +use Composer\Semver\Constraint\Constraint; +use Composer\DependencyResolver\Pool; +use Composer\Plugin\Capability\Capability; +use Composer\Util\PackageSorter; + +/** + * Plugin manager + * + * @author Nils Adermann + * @author Jordi Boggiano + */ +class PluginManager +{ + protected $composer; + protected $io; + protected $globalComposer; + protected $versionParser; + protected $disablePlugins = false; + + protected $plugins = array(); + protected $registeredPlugins = array(); + + private static $classCounter = 0; + + /** + * Initializes plugin manager + * + * @param IOInterface $io + * @param Composer $composer + * @param Composer $globalComposer + * @param bool $disablePlugins + */ + public function __construct(IOInterface $io, Composer $composer, Composer $globalComposer = null, $disablePlugins = false) + { + $this->io = $io; + $this->composer = $composer; + $this->globalComposer = $globalComposer; + $this->versionParser = new VersionParser(); + $this->disablePlugins = $disablePlugins; + } + + /** + * Loads all plugins from currently installed plugin packages + */ + public function loadInstalledPlugins() + { + if ($this->disablePlugins) { + return; + } + + $repo = $this->composer->getRepositoryManager()->getLocalRepository(); + $globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null; + if ($repo) { + $this->loadRepository($repo); + } + if ($globalRepo) { + $this->loadRepository($globalRepo); + } + } + + /** + * Gets all currently active plugin instances + * + * @return array plugins + */ + public function getPlugins() + { + return $this->plugins; + } + + /** + * Gets global composer or null when main composer is not fully loaded + * + * @return Composer|null + */ + public function getGlobalComposer() + { + return $this->globalComposer; + } + + /** + * Register a plugin package, activate it etc. + * + * If it's of type composer-installer it is registered as an installer + * instead for BC + * + * @param PackageInterface $package + * @param bool $failOnMissingClasses By default this silently skips plugins that can not be found, but if set to true it fails with an exception + * + * @throws \UnexpectedValueException + */ + public function registerPackage(PackageInterface $package, $failOnMissingClasses = false) + { + if ($this->disablePlugins) { + return; + } + + if ($package->getType() === 'composer-plugin') { + $requiresComposer = null; + foreach ($package->getRequires() as $link) { /** @var Link $link */ + if ('composer-plugin-api' === $link->getTarget()) { + $requiresComposer = $link->getConstraint(); + break; + } + } + + if (!$requiresComposer) { + throw new \RuntimeException("Plugin ".$package->getName()." is missing a require statement for a version of the composer-plugin-api package."); + } + + $currentPluginApiVersion = $this->getPluginApiVersion(); + $currentPluginApiConstraint = new Constraint('==', $this->versionParser->normalize($currentPluginApiVersion)); + + if ($requiresComposer->getPrettyString() === '1.0.0' && $this->getPluginApiVersion() === '1.0.0') { + $this->io->writeError('The "' . $package->getName() . '" plugin requires composer-plugin-api 1.0.0, this *WILL* break in the future and it should be fixed ASAP (require ^1.0 for example).'); + } elseif (!$requiresComposer->matches($currentPluginApiConstraint)) { + $this->io->writeError('The "' . $package->getName() . '" plugin was skipped because it requires a Plugin API version ("' . $requiresComposer->getPrettyString() . '") that does not match your Composer installation ("' . $currentPluginApiVersion . '"). You may need to run composer update with the "--no-plugins" option.'); + + return; + } + } + + $oldInstallerPlugin = ($package->getType() === 'composer-installer'); + + if (in_array($package->getName(), $this->registeredPlugins)) { + return; + } + + $extra = $package->getExtra(); + if (empty($extra['class'])) { + throw new \UnexpectedValueException('Error while installing '.$package->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); + } + $classes = is_array($extra['class']) ? $extra['class'] : array($extra['class']); + + $localRepo = $this->composer->getRepositoryManager()->getLocalRepository(); + $globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null; + + $pool = new Pool('dev'); + $pool->addRepository($localRepo); + if ($globalRepo) { + $pool->addRepository($globalRepo); + } + + $autoloadPackages = array($package->getName() => $package); + $autoloadPackages = $this->collectDependencies($pool, $autoloadPackages, $package); + + $generator = $this->composer->getAutoloadGenerator(); + $autoloads = array(); + foreach ($autoloadPackages as $autoloadPackage) { + $downloadPath = $this->getInstallPath($autoloadPackage, $globalRepo && $globalRepo->hasPackage($autoloadPackage)); + $autoloads[] = array($autoloadPackage, $downloadPath); + } + + $map = $generator->parseAutoloads($autoloads, new Package('dummy', '1.0.0.0', '1.0.0')); + $classLoader = $generator->createLoader($map); + $classLoader->register(); + + foreach ($classes as $class) { + if (class_exists($class, false)) { + $class = trim($class, '\\'); + $path = $classLoader->findFile($class); + $code = file_get_contents($path); + $separatorPos = strrpos($class, '\\'); + $className = $class; + if ($separatorPos) { + $className = substr($class, $separatorPos + 1); + } + $code = preg_replace('{^((?:final\s+)?(?:\s*))class\s+('.preg_quote($className).')}mi', '$1class $2_composer_tmp'.self::$classCounter, $code, 1); + $code = str_replace('__FILE__', var_export($path, true), $code); + $code = str_replace('__DIR__', var_export(dirname($path), true), $code); + $code = str_replace('__CLASS__', var_export($class, true), $code); + $code = preg_replace('/^\s*<\?(php)?/i', '', $code, 1); + eval($code); + $class .= '_composer_tmp'.self::$classCounter; + self::$classCounter++; + } + + if ($oldInstallerPlugin) { + $installer = new $class($this->io, $this->composer); + $this->composer->getInstallationManager()->addInstaller($installer); + } elseif (class_exists($class)) { + $plugin = new $class(); + $this->addPlugin($plugin); + $this->registeredPlugins[] = $package->getName(); + } elseif ($failOnMissingClasses) { + throw new \UnexpectedValueException('Plugin '.$package->getName().' could not be initialized, class not found: '.$class); + } + } + } + + /** + * Returns the version of the internal composer-plugin-api package. + * + * @return string + */ + protected function getPluginApiVersion() + { + return PluginInterface::PLUGIN_API_VERSION; + } + + /** + * Adds a plugin, activates it and registers it with the event dispatcher + * + * Ideally plugin packages should be registered via registerPackage, but if you use Composer + * programmatically and want to register a plugin class directly this is a valid way + * to do it. + * + * @param PluginInterface $plugin plugin instance + */ + public function addPlugin(PluginInterface $plugin) + { + $this->io->writeError('Loading plugin '.get_class($plugin), true, IOInterface::DEBUG); + $this->plugins[] = $plugin; + $plugin->activate($this->composer, $this->io); + + if ($plugin instanceof EventSubscriberInterface) { + $this->composer->getEventDispatcher()->addSubscriber($plugin); + } + } + + /** + * Load all plugins and installers from a repository + * + * Note that plugins in the specified repository that rely on events that + * have fired prior to loading will be missed. This means you likely want to + * call this method as early as possible. + * + * @param RepositoryInterface $repo Repository to scan for plugins to install + * + * @throws \RuntimeException + */ + private function loadRepository(RepositoryInterface $repo) + { + $packages = $repo->getPackages(); + $sortedPackages = array_reverse(PackageSorter::sortPackages($packages)); + foreach ($sortedPackages as $package) { + if (!($package instanceof CompletePackage)) { + continue; + } + if ('composer-plugin' === $package->getType()) { + $this->registerPackage($package); + // Backward compatibility + } elseif ('composer-installer' === $package->getType()) { + $this->registerPackage($package); + } + } + } + + /** + * Recursively generates a map of package names to packages for all deps + * + * @param Pool $pool Package pool of installed packages + * @param array $collected Current state of the map for recursion + * @param PackageInterface $package The package to analyze + * + * @return array Map of package names to packages + */ + private function collectDependencies(Pool $pool, array $collected, PackageInterface $package) + { + $requires = array_merge( + $package->getRequires(), + $package->getDevRequires() + ); + + foreach ($requires as $requireLink) { + $requiredPackage = $this->lookupInstalledPackage($pool, $requireLink); + if ($requiredPackage && !isset($collected[$requiredPackage->getName()])) { + $collected[$requiredPackage->getName()] = $requiredPackage; + $collected = $this->collectDependencies($pool, $collected, $requiredPackage); + } + } + + return $collected; + } + + /** + * Resolves a package link to a package in the installed pool + * + * Since dependencies are already installed this should always find one. + * + * @param Pool $pool Pool of installed packages only + * @param Link $link Package link to look up + * + * @return PackageInterface|null The found package + */ + private function lookupInstalledPackage(Pool $pool, Link $link) + { + $packages = $pool->whatProvides($link->getTarget(), $link->getConstraint()); + + return !empty($packages) ? $packages[0] : null; + } + + /** + * Retrieves the path a package is installed to. + * + * @param PackageInterface $package + * @param bool $global Whether this is a global package + * + * @return string Install path + */ + private function getInstallPath(PackageInterface $package, $global = false) + { + if (!$global) { + return $this->composer->getInstallationManager()->getInstallPath($package); + } + + return $this->globalComposer->getInstallationManager()->getInstallPath($package); + } + + /** + * @param PluginInterface $plugin + * @param string $capability + * @throws \RuntimeException On empty or non-string implementation class name value + * @return null|string The fully qualified class of the implementation or null if Plugin is not of Capable type or does not provide it + */ + protected function getCapabilityImplementationClassName(PluginInterface $plugin, $capability) + { + if (!($plugin instanceof Capable)) { + return null; + } + + $capabilities = (array) $plugin->getCapabilities(); + + if (!empty($capabilities[$capability]) && is_string($capabilities[$capability]) && trim($capabilities[$capability])) { + return trim($capabilities[$capability]); + } + + if ( + array_key_exists($capability, $capabilities) + && (empty($capabilities[$capability]) || !is_string($capabilities[$capability]) || !trim($capabilities[$capability])) + ) { + throw new \UnexpectedValueException('Plugin '.get_class($plugin).' provided invalid capability class name(s), got '.var_export($capabilities[$capability], 1)); + } + } + + /** + * @param PluginInterface $plugin + * @param string $capabilityClassName The fully qualified name of the API interface which the plugin may provide + * an implementation of. + * @param array $ctorArgs Arguments passed to Capability's constructor. + * Keeping it an array will allow future values to be passed w\o changing the signature. + * @return null|Capability + */ + public function getPluginCapability(PluginInterface $plugin, $capabilityClassName, array $ctorArgs = array()) + { + if ($capabilityClass = $this->getCapabilityImplementationClassName($plugin, $capabilityClassName)) { + if (!class_exists($capabilityClass)) { + throw new \RuntimeException("Cannot instantiate Capability, as class $capabilityClass from plugin ".get_class($plugin)." does not exist."); + } + + $ctorArgs['plugin'] = $plugin; + $capabilityObj = new $capabilityClass($ctorArgs); + + // FIXME these could use is_a and do the check *before* instantiating once drop support for php<5.3.9 + if (!$capabilityObj instanceof Capability || !$capabilityObj instanceof $capabilityClassName) { + throw new \RuntimeException( + 'Class ' . $capabilityClass . ' must implement both Composer\Plugin\Capability\Capability and '. $capabilityClassName . '.' + ); + } + + return $capabilityObj; + } + } + + /** + * @param string $capabilityClassName The fully qualified name of the API interface which the plugin may provide + * an implementation of. + * @param array $ctorArgs Arguments passed to Capability's constructor. + * Keeping it an array will allow future values to be passed w\o changing the signature. + * @return Capability[] + */ + public function getPluginCapabilities($capabilityClassName, array $ctorArgs = array()) + { + $capabilities = array(); + foreach ($this->getPlugins() as $plugin) { + if ($capability = $this->getPluginCapability($plugin, $capabilityClassName, $ctorArgs)) { + $capabilities[] = $capability; + } + } + + return $capabilities; + } +} diff --git a/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php b/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php new file mode 100644 index 0000000..60ad05b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php @@ -0,0 +1,68 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin; + +use Composer\EventDispatcher\Event; +use Symfony\Component\Console\Input\InputInterface; + +/** + * The pre command run event. + * + * @author Jordi Boggiano + */ +class PreCommandRunEvent extends Event +{ + /** + * @var InputInterface + */ + private $input; + + /** + * @var string + */ + private $command; + + /** + * Constructor. + * + * @param string $name The event name + * @param InputInterface $input + * @param string $command The command about to be executed + */ + public function __construct($name, InputInterface $input, $command) + { + parent::__construct($name); + $this->input = $input; + $this->command = $command; + } + + /** + * Returns the console input + * + * @return InputInterface + */ + public function getInput() + { + return $this->input; + } + + /** + * Returns the command about to be executed + * + * @return string + */ + public function getCommand() + { + return $this->command; + } +} diff --git a/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php b/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php new file mode 100644 index 0000000..7ae6821 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php @@ -0,0 +1,78 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Plugin; + +use Composer\EventDispatcher\Event; +use Composer\Util\RemoteFilesystem; + +/** + * The pre file download event. + * + * @author Nils Adermann + */ +class PreFileDownloadEvent extends Event +{ + /** + * @var RemoteFilesystem + */ + private $rfs; + + /** + * @var string + */ + private $processedUrl; + + /** + * Constructor. + * + * @param string $name The event name + * @param RemoteFilesystem $rfs + * @param string $processedUrl + */ + public function __construct($name, RemoteFilesystem $rfs, $processedUrl) + { + parent::__construct($name); + $this->rfs = $rfs; + $this->processedUrl = $processedUrl; + } + + /** + * Returns the remote filesystem + * + * @return RemoteFilesystem + */ + public function getRemoteFilesystem() + { + return $this->rfs; + } + + /** + * Sets the remote filesystem + * + * @param RemoteFilesystem $rfs + */ + public function setRemoteFilesystem(RemoteFilesystem $rfs) + { + $this->rfs = $rfs; + } + + /** + * Retrieves the processed URL this remote filesystem will be used for + * + * @return string + */ + public function getProcessedUrl() + { + return $this->processedUrl; + } +} diff --git a/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php b/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php new file mode 100644 index 0000000..c64890b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php @@ -0,0 +1,94 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Question; + +use Symfony\Component\Console\Exception\InvalidArgumentException; +use Symfony\Component\Console\Question\Question; + +/** + * Represents a yes/no question + * Enforces strict responses rather than non-standard answers counting as default + * Based on Symfony\Component\Console\Question\ConfirmationQuestion + * + * @author Theo Tonge + */ +class StrictConfirmationQuestion extends Question +{ + private $trueAnswerRegex; + private $falseAnswerRegex; + + /** + * Constructor.s + * + * @param string $question The question to ask to the user + * @param bool $default The default answer to return, true or false + * @param string $trueAnswerRegex A regex to match the "yes" answer + * @param string $falseAnswerRegex A regex to match the "no" answer + */ + public function __construct($question, $default = true, $trueAnswerRegex = '/^y(?:es)?$/i', $falseAnswerRegex = '/^no?$/i') + { + parent::__construct($question, (bool) $default); + + $this->trueAnswerRegex = $trueAnswerRegex; + $this->falseAnswerRegex = $falseAnswerRegex; + $this->setNormalizer($this->getDefaultNormalizer()); + $this->setValidator($this->getDefaultValidator()); + } + + /** + * Returns the default answer normalizer. + * + * @return callable + */ + private function getDefaultNormalizer() + { + $default = $this->getDefault(); + $trueRegex = $this->trueAnswerRegex; + $falseRegex = $this->falseAnswerRegex; + + return function ($answer) use ($default, $trueRegex, $falseRegex) { + if (is_bool($answer)) { + return $answer; + } + if (empty($answer) && !empty($default)) { + return $default; + } + + if (preg_match($trueRegex, $answer)) { + return true; + } + + if (preg_match($falseRegex, $answer)) { + return false; + } + + return null; + }; + } + + /** + * Returns the default answer validator. + * + * @return callable + */ + private function getDefaultValidator() + { + return function ($answer) { + if (!is_bool($answer)) { + throw new InvalidArgumentException('Please answer yes, y, no, or n.'); + } + + return $answer; + }; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php b/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php new file mode 100644 index 0000000..4f0409a --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php @@ -0,0 +1,208 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\AliasPackage; +use Composer\Package\PackageInterface; +use Composer\Package\CompletePackageInterface; +use Composer\Package\Version\VersionParser; +use Composer\Semver\Constraint\ConstraintInterface; +use Composer\Semver\Constraint\Constraint; + +/** + * A repository implementation that simply stores packages in an array + * + * @author Nils Adermann + */ +class ArrayRepository extends BaseRepository +{ + /** @var PackageInterface[] */ + protected $packages; + + public function __construct(array $packages = array()) + { + foreach ($packages as $package) { + $this->addPackage($package); + } + } + + /** + * {@inheritDoc} + */ + public function findPackage($name, $constraint) + { + $name = strtolower($name); + + if (!$constraint instanceof ConstraintInterface) { + $versionParser = new VersionParser(); + $constraint = $versionParser->parseConstraints($constraint); + } + + foreach ($this->getPackages() as $package) { + if ($name === $package->getName()) { + $pkgConstraint = new Constraint('==', $package->getVersion()); + if ($constraint->matches($pkgConstraint)) { + return $package; + } + } + } + + return null; + } + + /** + * {@inheritDoc} + */ + public function findPackages($name, $constraint = null) + { + // normalize name + $name = strtolower($name); + $packages = array(); + + if (null !== $constraint && !$constraint instanceof ConstraintInterface) { + $versionParser = new VersionParser(); + $constraint = $versionParser->parseConstraints($constraint); + } + + foreach ($this->getPackages() as $package) { + if ($name === $package->getName()) { + $pkgConstraint = new Constraint('==', $package->getVersion()); + if (null === $constraint || $constraint->matches($pkgConstraint)) { + $packages[] = $package; + } + } + } + + return $packages; + } + + /** + * {@inheritDoc} + */ + public function search($query, $mode = 0, $type = null) + { + $regex = '{(?:'.implode('|', preg_split('{\s+}', $query)).')}i'; + + $matches = array(); + foreach ($this->getPackages() as $package) { + $name = $package->getName(); + if (isset($matches[$name])) { + continue; + } + if (preg_match($regex, $name) + || ($mode === self::SEARCH_FULLTEXT && $package instanceof CompletePackageInterface && preg_match($regex, implode(' ', (array) $package->getKeywords()) . ' ' . $package->getDescription())) + ) { + if (null !== $type && $package->getType() !== $type) { + continue; + } + + $matches[$name] = array( + 'name' => $package->getPrettyName(), + 'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : null, + ); + } + } + + return array_values($matches); + } + + /** + * {@inheritDoc} + */ + public function hasPackage(PackageInterface $package) + { + $packageId = $package->getUniqueName(); + + foreach ($this->getPackages() as $repoPackage) { + if ($packageId === $repoPackage->getUniqueName()) { + return true; + } + } + + return false; + } + + /** + * Adds a new package to the repository + * + * @param PackageInterface $package + */ + public function addPackage(PackageInterface $package) + { + if (null === $this->packages) { + $this->initialize(); + } + $package->setRepository($this); + $this->packages[] = $package; + + if ($package instanceof AliasPackage) { + $aliasedPackage = $package->getAliasOf(); + if (null === $aliasedPackage->getRepository()) { + $this->addPackage($aliasedPackage); + } + } + } + + protected function createAliasPackage(PackageInterface $package, $alias, $prettyAlias) + { + return new AliasPackage($package instanceof AliasPackage ? $package->getAliasOf() : $package, $alias, $prettyAlias); + } + + /** + * Removes package from repository. + * + * @param PackageInterface $package package instance + */ + public function removePackage(PackageInterface $package) + { + $packageId = $package->getUniqueName(); + + foreach ($this->getPackages() as $key => $repoPackage) { + if ($packageId === $repoPackage->getUniqueName()) { + array_splice($this->packages, $key, 1); + + return; + } + } + } + + /** + * {@inheritDoc} + */ + public function getPackages() + { + if (null === $this->packages) { + $this->initialize(); + } + + return $this->packages; + } + + /** + * Returns the number of packages in this repository + * + * @return int Number of packages + */ + public function count() + { + return count($this->packages); + } + + /** + * Initializes the packages array. Mostly meant as an extension point. + */ + protected function initialize() + { + $this->packages = array(); + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php b/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php new file mode 100644 index 0000000..aff80e4 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php @@ -0,0 +1,107 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\IO\IOInterface; +use Composer\Json\JsonFile; +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\Loader\LoaderInterface; +use Composer\Util\Zip; + +/** + * @author Serge Smertin + */ +class ArtifactRepository extends ArrayRepository implements ConfigurableRepositoryInterface +{ + /** @var LoaderInterface */ + protected $loader; + + protected $lookup; + protected $repoConfig; + private $io; + + public function __construct(array $repoConfig, IOInterface $io) + { + parent::__construct(); + if (!extension_loaded('zip')) { + throw new \RuntimeException('The artifact repository requires PHP\'s zip extension'); + } + + $this->loader = new ArrayLoader(); + $this->lookup = $repoConfig['url']; + $this->io = $io; + $this->repoConfig = $repoConfig; + } + + public function getRepoConfig() + { + return $this->repoConfig; + } + + protected function initialize() + { + parent::initialize(); + + $this->scanDirectory($this->lookup); + } + + private function scanDirectory($path) + { + $io = $this->io; + + $directory = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS); + $iterator = new \RecursiveIteratorIterator($directory); + $regex = new \RegexIterator($iterator, '/^.+\.(zip|phar)$/i'); + foreach ($regex as $file) { + /* @var $file \SplFileInfo */ + if (!$file->isFile()) { + continue; + } + + $package = $this->getComposerInformation($file); + if (!$package) { + $io->writeError("File {$file->getBasename()} doesn't seem to hold a package", true, IOInterface::VERBOSE); + continue; + } + + $template = 'Found package %s (%s) in file %s'; + $io->writeError(sprintf($template, $package->getName(), $package->getPrettyVersion(), $file->getBasename()), true, IOInterface::VERBOSE); + + $this->addPackage($package); + } + } + + private function getComposerInformation(\SplFileInfo $file) + { + $json = Zip::getComposerJson($file->getPathname()); + + if (null === $json) { + return false; + } + + $package = JsonFile::parseJson($json, $file->getPathname().'#composer.json'); + $package['dist'] = array( + 'type' => 'zip', + 'url' => strtr($file->getPathname(), '\\', '/'), + 'shasum' => sha1_file($file->getRealPath()), + ); + + try { + $package = $this->loader->load($package); + } catch (\UnexpectedValueException $e) { + throw new \UnexpectedValueException('Failed loading package in '.$file.': '.$e->getMessage(), 0, $e); + } + + return $package; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/BaseRepository.php b/vendor/composer/composer/src/Composer/Repository/BaseRepository.php new file mode 100644 index 0000000..d668f43 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/BaseRepository.php @@ -0,0 +1,178 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\RootPackageInterface; +use Composer\Semver\Constraint\ConstraintInterface; +use Composer\Semver\Constraint\Constraint; +use Composer\Package\Link; + +/** + * Common ancestor class for generic repository functionality. + * + * @author Niels Keurentjes + */ +abstract class BaseRepository implements RepositoryInterface +{ + /** + * Returns a list of links causing the requested needle packages to be installed, as an associative array with the + * dependent's name as key, and an array containing in order the PackageInterface and Link describing the relationship + * as values. If recursive lookup was requested a third value is returned containing an identically formed array up + * to the root package. That third value will be false in case a circular recursion was detected. + * + * @param string|string[] $needle The package name(s) to inspect. + * @param ConstraintInterface|null $constraint Optional constraint to filter by. + * @param bool $invert Whether to invert matches to discover reasons for the package *NOT* to be installed. + * @param bool $recurse Whether to recursively expand the requirement tree up to the root package. + * @param string[] $packagesFound Used internally when recurring + * @return array An associative array of arrays as described above. + */ + public function getDependents($needle, $constraint = null, $invert = false, $recurse = true, $packagesFound = null) + { + $needles = array_map('strtolower', (array) $needle); + $results = array(); + + // initialize the array with the needles before any recursion occurs + if (null === $packagesFound) { + $packagesFound = $needles; + } + + // locate root package for use below + $rootPackage = null; + foreach ($this->getPackages() as $package) { + if ($package instanceof RootPackageInterface) { + $rootPackage = $package; + break; + } + } + + // Loop over all currently installed packages. + foreach ($this->getPackages() as $package) { + $links = $package->getRequires(); + + // each loop needs its own "tree" as we want to show the complete dependent set of every needle + // without warning all the time about finding circular deps + $packagesInTree = $packagesFound; + + // Replacements are considered valid reasons for a package to be installed during forward resolution + if (!$invert) { + $links += $package->getReplaces(); + + // On forward search, check if any replaced package was required and add the replaced + // packages to the list of needles. Contrary to the cross-reference link check below, + // replaced packages are the target of links. + foreach ($package->getReplaces() as $link) { + foreach ($needles as $needle) { + if ($link->getSource() === $needle) { + if ($constraint === null || ($link->getConstraint()->matches($constraint) === !$invert)) { + // already displayed this node's dependencies, cutting short + if (in_array($link->getTarget(), $packagesInTree)) { + $results[] = array($package, $link, false); + continue; + } + $packagesInTree[] = $link->getTarget(); + $dependents = $recurse ? $this->getDependents($link->getTarget(), null, false, true, $packagesInTree) : array(); + $results[] = array($package, $link, $dependents); + $needles[] = $link->getTarget(); + } + } + } + } + } + + // Require-dev is only relevant for the root package + if ($package instanceof RootPackageInterface) { + $links += $package->getDevRequires(); + } + + // Cross-reference all discovered links to the needles + foreach ($links as $link) { + foreach ($needles as $needle) { + if ($link->getTarget() === $needle) { + if ($constraint === null || ($link->getConstraint()->matches($constraint) === !$invert)) { + // already displayed this node's dependencies, cutting short + if (in_array($link->getSource(), $packagesInTree)) { + $results[] = array($package, $link, false); + continue; + } + $packagesInTree[] = $link->getSource(); + $dependents = $recurse ? $this->getDependents($link->getSource(), null, false, true, $packagesInTree) : array(); + $results[] = array($package, $link, $dependents); + } + } + } + } + + // When inverting, we need to check for conflicts of the needles against installed packages + if ($invert && in_array($package->getName(), $needles)) { + foreach ($package->getConflicts() as $link) { + foreach ($this->findPackages($link->getTarget()) as $pkg) { + $version = new Constraint('=', $pkg->getVersion()); + if ($link->getConstraint()->matches($version) === $invert) { + $results[] = array($package, $link, false); + } + } + } + } + + // When inverting, we need to check for conflicts of the needles' requirements against installed packages + if ($invert && $constraint && in_array($package->getName(), $needles) && $constraint->matches(new Constraint('=', $package->getVersion()))) { + foreach ($package->getRequires() as $link) { + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) { + if ($this->findPackage($link->getTarget(), $link->getConstraint())) { + continue; + } + + $platformPkg = $this->findPackage($link->getTarget(), '*'); + $description = $platformPkg ? 'but '.$platformPkg->getPrettyVersion().' is installed' : 'but it is missing'; + $results[] = array($package, new Link($package->getName(), $link->getTarget(), null, 'requires', $link->getPrettyConstraint().' '.$description), false); + + continue; + } + + foreach ($this->getPackages() as $pkg) { + if (!in_array($link->getTarget(), $pkg->getNames())) { + continue; + } + + $version = new Constraint('=', $pkg->getVersion()); + if (!$link->getConstraint()->matches($version)) { + // if we have a root package (we should but can not guarantee..) we show + // the root requires as well to perhaps allow to find an issue there + if ($rootPackage) { + foreach (array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires()) as $rootReq) { + if (in_array($rootReq->getTarget(), $pkg->getNames()) && !$rootReq->getConstraint()->matches($link->getConstraint())) { + $results[] = array($package, $link, false); + $results[] = array($rootPackage, $rootReq, false); + continue 3; + } + } + $results[] = array($package, $link, false); + $results[] = array($rootPackage, new Link($rootPackage->getName(), $link->getTarget(), null, 'does not require', 'but ' . $pkg->getPrettyVersion() . ' is installed'), false); + } else { + // no root so let's just print whatever we found + $results[] = array($package, $link, false); + } + } + + continue 2; + } + } + } + } + + ksort($results); + + return $results; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php b/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php new file mode 100644 index 0000000..649c2f1 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php @@ -0,0 +1,841 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\PackageInterface; +use Composer\Package\AliasPackage; +use Composer\Package\Version\VersionParser; +use Composer\DependencyResolver\Pool; +use Composer\Json\JsonFile; +use Composer\Cache; +use Composer\Config; +use Composer\Composer; +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\Util\RemoteFilesystem; +use Composer\Plugin\PluginEvents; +use Composer\Plugin\PreFileDownloadEvent; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Downloader\TransportException; +use Composer\Semver\Constraint\ConstraintInterface; +use Composer\Semver\Constraint\Constraint; + +/** + * @author Jordi Boggiano + */ +class ComposerRepository extends ArrayRepository implements ConfigurableRepositoryInterface +{ + protected $config; + protected $repoConfig; + protected $options; + protected $url; + protected $baseUrl; + protected $io; + protected $rfs; + protected $cache; + protected $notifyUrl; + protected $searchUrl; + protected $hasProviders = false; + protected $providersUrl; + protected $lazyProvidersUrl; + protected $providerListing; + protected $providers = array(); + protected $providersByUid = array(); + protected $loader; + protected $rootAliases; + protected $allowSslDowngrade = false; + protected $eventDispatcher; + protected $sourceMirrors; + protected $distMirrors; + private $degradedMode = false; + private $rootData; + private $hasPartialPackages; + private $partialPackagesByName; + + public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, RemoteFilesystem $rfs = null) + { + parent::__construct(); + if (!preg_match('{^[\w.]+\??://}', $repoConfig['url'])) { + // assume http as the default protocol + $repoConfig['url'] = 'http://'.$repoConfig['url']; + } + $repoConfig['url'] = rtrim($repoConfig['url'], '/'); + + if ('https?' === substr($repoConfig['url'], 0, 6)) { + $repoConfig['url'] = (extension_loaded('openssl') ? 'https' : 'http') . substr($repoConfig['url'], 6); + } + + $urlBits = parse_url($repoConfig['url']); + if ($urlBits === false || empty($urlBits['scheme'])) { + throw new \UnexpectedValueException('Invalid url given for Composer repository: '.$repoConfig['url']); + } + + if (!isset($repoConfig['options'])) { + $repoConfig['options'] = array(); + } + if (isset($repoConfig['allow_ssl_downgrade']) && true === $repoConfig['allow_ssl_downgrade']) { + $this->allowSslDowngrade = true; + } + + $this->config = $config; + $this->options = $repoConfig['options']; + $this->url = $repoConfig['url']; + + // force url for packagist.org to repo.packagist.org + if (preg_match('{^(?Phttps?)://packagist\.org/?$}i', $this->url, $match)) { + $this->url = $match['proto'].'://repo.packagist.org'; + } + + $this->baseUrl = rtrim(preg_replace('{(?:/[^/\\\\]+\.json)?(?:[?#].*)?$}', '', $this->url), '/'); + $this->io = $io; + $this->cache = new Cache($io, $config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $this->url), 'a-z0-9.$'); + $this->loader = new ArrayLoader(); + if ($rfs && $this->options) { + $rfs = clone $rfs; + $rfs->setOptions($this->options); + } + $this->rfs = $rfs ?: Factory::createRemoteFilesystem($this->io, $this->config, $this->options); + $this->eventDispatcher = $eventDispatcher; + $this->repoConfig = $repoConfig; + } + + public function getRepoConfig() + { + return $this->repoConfig; + } + + public function setRootAliases(array $rootAliases) + { + $this->rootAliases = $rootAliases; + } + + /** + * {@inheritDoc} + */ + public function findPackage($name, $constraint) + { + if (!$this->hasProviders()) { + return parent::findPackage($name, $constraint); + } + + $name = strtolower($name); + if (!$constraint instanceof ConstraintInterface) { + $versionParser = new VersionParser(); + $constraint = $versionParser->parseConstraints($constraint); + } + + foreach ($this->getProviderNames() as $providerName) { + if ($name === $providerName) { + $packages = $this->whatProvides(new Pool('dev'), $providerName); + foreach ($packages as $package) { + if ($name === $package->getName()) { + $pkgConstraint = new Constraint('==', $package->getVersion()); + if ($constraint->matches($pkgConstraint)) { + return $package; + } + } + } + break; + } + } + } + + /** + * {@inheritDoc} + */ + public function findPackages($name, $constraint = null) + { + if (!$this->hasProviders()) { + return parent::findPackages($name, $constraint); + } + // normalize name + $name = strtolower($name); + + if (null !== $constraint && !$constraint instanceof ConstraintInterface) { + $versionParser = new VersionParser(); + $constraint = $versionParser->parseConstraints($constraint); + } + + $packages = array(); + + foreach ($this->getProviderNames() as $providerName) { + if ($name === $providerName) { + $candidates = $this->whatProvides(new Pool('dev'), $providerName); + foreach ($candidates as $package) { + if ($name === $package->getName()) { + $pkgConstraint = new Constraint('==', $package->getVersion()); + if (null === $constraint || $constraint->matches($pkgConstraint)) { + $packages[] = $package; + } + } + } + break; + } + } + + return $packages; + } + + public function getPackages() + { + if ($this->hasProviders()) { + throw new \LogicException('Composer repositories that have providers can not load the complete list of packages, use getProviderNames instead.'); + } + + return parent::getPackages(); + } + + /** + * {@inheritDoc} + */ + public function search($query, $mode = 0, $type = null) + { + $this->loadRootServerFile(); + + if ($this->searchUrl && $mode === self::SEARCH_FULLTEXT) { + $url = str_replace(array('%query%', '%type%'), array($query, $type), $this->searchUrl); + + $origin = RemoteFilesystem::getOrigin($url); + $json = $this->rfs->getContents($origin, $url, false); + $search = JsonFile::parseJson($json, $url); + + if (empty($search['results'])) { + return array(); + } + + $results = array(); + foreach ($search['results'] as $result) { + // do not show virtual packages in results as they are not directly useful from a composer perspective + if (empty($result['virtual'])) { + $results[] = $result; + } + } + + return $results; + } + + if ($this->hasProviders()) { + $results = array(); + $regex = '{(?:'.implode('|', preg_split('{\s+}', $query)).')}i'; + + foreach ($this->getProviderNames() as $name) { + if (preg_match($regex, $name)) { + $results[] = array('name' => $name); + } + } + + return $results; + } + + return parent::search($query, $mode); + } + + public function getProviderNames() + { + $this->loadRootServerFile(); + + if (null === $this->providerListing) { + $this->loadProviderListings($this->loadRootServerFile()); + } + + if ($this->hasPartialPackages) { + if (null === $this->partialPackagesByName) { + $this->initializePartialPackages(); + } + + return array_keys($this->partialPackagesByName); + } + + if ($this->lazyProvidersUrl) { + // Can not determine list of provided packages for lazy repositories + return array(); + } + + if ($this->providersUrl) { + return array_keys($this->providerListing); + } + + return array(); + } + + protected function configurePackageTransportOptions(PackageInterface $package) + { + foreach ($package->getDistUrls() as $url) { + if (strpos($url, $this->baseUrl) === 0) { + $package->setTransportOptions($this->options); + + return; + } + } + } + + public function hasProviders() + { + $this->loadRootServerFile(); + + return $this->hasProviders; + } + + public function resetPackageIds() + { + foreach ($this->providersByUid as $package) { + if ($package instanceof AliasPackage) { + $package->getAliasOf()->setId(-1); + } + $package->setId(-1); + } + } + + /** + * @param Pool $pool + * @param string $name package name + * @param bool $bypassFilters If set to true, this bypasses the stability filtering, and forces a recompute without cache + * @return array|mixed + */ + public function whatProvides(Pool $pool, $name, $bypassFilters = false) + { + if (isset($this->providers[$name]) && !$bypassFilters) { + return $this->providers[$name]; + } + + if ($this->hasPartialPackages && null === $this->partialPackagesByName) { + $this->initializePartialPackages(); + } + + if (!$this->hasPartialPackages || !isset($this->partialPackagesByName[$name])) { + // skip platform packages, root package and composer-plugin-api + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name) || '__root__' === $name || 'composer-plugin-api' === $name) { + return array(); + } + + if (null === $this->providerListing) { + $this->loadProviderListings($this->loadRootServerFile()); + } + + $useLastModifiedCheck = false; + if ($this->lazyProvidersUrl && !isset($this->providerListing[$name])) { + $hash = null; + $url = str_replace('%package%', $name, $this->lazyProvidersUrl); + $cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; + $useLastModifiedCheck = true; + } elseif ($this->providersUrl) { + // package does not exist in this repo + if (!isset($this->providerListing[$name])) { + return array(); + } + + $hash = $this->providerListing[$name]['sha256']; + $url = str_replace(array('%package%', '%hash%'), array($name, $hash), $this->providersUrl); + $cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; + } else { + return array(); + } + + $packages = null; + if ($cacheKey) { + if (!$useLastModifiedCheck && $hash && $this->cache->sha256($cacheKey) === $hash) { + $packages = json_decode($this->cache->read($cacheKey), true); + } elseif ($useLastModifiedCheck) { + if ($contents = $this->cache->read($cacheKey)) { + $contents = json_decode($contents, true); + if (isset($contents['last-modified'])) { + $response = $this->fetchFileIfLastModified($url, $cacheKey, $contents['last-modified']); + if (true === $response) { + $packages = $contents; + } elseif ($response) { + $packages = $response; + } + } + } + } + } + + if (!$packages) { + try { + $packages = $this->fetchFile($url, $cacheKey, $hash, $useLastModifiedCheck); + } catch (TransportException $e) { + // 404s are acceptable for lazy provider repos + if ($e->getStatusCode() === 404 && $this->lazyProvidersUrl) { + $packages = array('packages' => array()); + } else { + throw $e; + } + } + } + + $loadingPartialPackage = false; + } else { + $packages = array('packages' => array('versions' => $this->partialPackagesByName[$name])); + $loadingPartialPackage = true; + } + + $this->providers[$name] = array(); + foreach ($packages['packages'] as $versions) { + foreach ($versions as $version) { + if (!$loadingPartialPackage && $this->hasPartialPackages && isset($this->partialPackagesByName[$version['name']])) { + continue; + } + + // avoid loading the same objects twice + if (isset($this->providersByUid[$version['uid']])) { + // skip if already assigned + if (!isset($this->providers[$name][$version['uid']])) { + // expand alias in two packages + if ($this->providersByUid[$version['uid']] instanceof AliasPackage) { + $this->providers[$name][$version['uid']] = $this->providersByUid[$version['uid']]->getAliasOf(); + $this->providers[$name][$version['uid'].'-alias'] = $this->providersByUid[$version['uid']]; + } else { + $this->providers[$name][$version['uid']] = $this->providersByUid[$version['uid']]; + } + // check for root aliases + if (isset($this->providersByUid[$version['uid'].'-root'])) { + $this->providers[$name][$version['uid'].'-root'] = $this->providersByUid[$version['uid'].'-root']; + } + } + } else { + if (!$bypassFilters && !$pool->isPackageAcceptable(strtolower($version['name']), VersionParser::parseStability($version['version']))) { + continue; + } + + // load acceptable packages in the providers + $package = $this->createPackage($version, 'Composer\Package\CompletePackage'); + $package->setRepository($this); + + if ($package instanceof AliasPackage) { + $aliased = $package->getAliasOf(); + $aliased->setRepository($this); + + $this->providers[$name][$version['uid']] = $aliased; + $this->providers[$name][$version['uid'].'-alias'] = $package; + + // override provider with its alias so it can be expanded in the if block above + $this->providersByUid[$version['uid']] = $package; + } else { + $this->providers[$name][$version['uid']] = $package; + $this->providersByUid[$version['uid']] = $package; + } + + // handle root package aliases + unset($rootAliasData); + + if (isset($this->rootAliases[$package->getName()][$package->getVersion()])) { + $rootAliasData = $this->rootAliases[$package->getName()][$package->getVersion()]; + } elseif ($package instanceof AliasPackage && isset($this->rootAliases[$package->getName()][$package->getAliasOf()->getVersion()])) { + $rootAliasData = $this->rootAliases[$package->getName()][$package->getAliasOf()->getVersion()]; + } + + if (isset($rootAliasData)) { + $alias = $this->createAliasPackage($package, $rootAliasData['alias_normalized'], $rootAliasData['alias']); + $alias->setRepository($this); + + $this->providers[$name][$version['uid'].'-root'] = $alias; + $this->providersByUid[$version['uid'].'-root'] = $alias; + } + } + } + } + + $result = $this->providers[$name]; + + // clean up the cache because otherwise using this puts the repo in an inconsistent state with a polluted unfiltered cache + // which is likely not an issue but might cause hard to track behaviors depending on how the repo is used + if ($bypassFilters) { + foreach ($this->providers[$name] as $uid => $provider) { + unset($this->providersByUid[$uid]); + } + unset($this->providers[$name]); + } + + return $result; + } + + /** + * {@inheritDoc} + */ + protected function initialize() + { + parent::initialize(); + + $repoData = $this->loadDataFromServer(); + + foreach ($repoData as $package) { + $this->addPackage($this->createPackage($package, 'Composer\Package\CompletePackage')); + } + } + + /** + * Adds a new package to the repository + * + * @param PackageInterface $package + */ + public function addPackage(PackageInterface $package) + { + parent::addPackage($package); + $this->configurePackageTransportOptions($package); + } + + protected function loadRootServerFile() + { + if (null !== $this->rootData) { + return $this->rootData; + } + + if (!extension_loaded('openssl') && 'https' === substr($this->url, 0, 5)) { + throw new \RuntimeException('You must enable the openssl extension in your php.ini to load information from '.$this->url); + } + + $jsonUrlParts = parse_url($this->url); + + if (isset($jsonUrlParts['path']) && false !== strpos($jsonUrlParts['path'], '.json')) { + $jsonUrl = $this->url; + } else { + $jsonUrl = $this->url . '/packages.json'; + } + + $data = $this->fetchFile($jsonUrl, 'packages.json'); + + if (!empty($data['notify-batch'])) { + $this->notifyUrl = $this->canonicalizeUrl($data['notify-batch']); + } elseif (!empty($data['notify'])) { + $this->notifyUrl = $this->canonicalizeUrl($data['notify']); + } + + if (!empty($data['search'])) { + $this->searchUrl = $this->canonicalizeUrl($data['search']); + } + + if (!empty($data['mirrors'])) { + foreach ($data['mirrors'] as $mirror) { + if (!empty($mirror['git-url'])) { + $this->sourceMirrors['git'][] = array('url' => $mirror['git-url'], 'preferred' => !empty($mirror['preferred'])); + } + if (!empty($mirror['hg-url'])) { + $this->sourceMirrors['hg'][] = array('url' => $mirror['hg-url'], 'preferred' => !empty($mirror['preferred'])); + } + if (!empty($mirror['dist-url'])) { + $this->distMirrors[] = array( + 'url' => $this->canonicalizeUrl($mirror['dist-url']), + 'preferred' => !empty($mirror['preferred']), + ); + } + } + } + + if (!empty($data['providers-lazy-url'])) { + $this->lazyProvidersUrl = $this->canonicalizeUrl($data['providers-lazy-url']); + $this->hasProviders = true; + + $this->hasPartialPackages = !empty($data['packages']) && is_array($data['packages']); + } + + if ($this->allowSslDowngrade) { + $this->url = str_replace('https://', 'http://', $this->url); + $this->baseUrl = str_replace('https://', 'http://', $this->baseUrl); + } + + if (!empty($data['providers-url'])) { + $this->providersUrl = $this->canonicalizeUrl($data['providers-url']); + $this->hasProviders = true; + } + + if (!empty($data['providers']) || !empty($data['providers-includes'])) { + $this->hasProviders = true; + } + + // force values for packagist + if (preg_match('{^https?://repo\.packagist\.org/?$}i', $this->url) && !empty($this->repoConfig['force-lazy-providers'])) { + $this->url = 'https://repo.packagist.org'; + $this->baseUrl = 'https://repo.packagist.org'; + $this->lazyProvidersUrl = $this->canonicalizeUrl('https://repo.packagist.org/p/%package%.json'); + $this->providersUrl = null; + } elseif (!empty($this->repoConfig['force-lazy-providers'])) { + $this->lazyProvidersUrl = $this->canonicalizeUrl('/p/%package%.json'); + $this->providersUrl = null; + } + + return $this->rootData = $data; + } + + protected function canonicalizeUrl($url) + { + if ('/' === $url[0]) { + if (preg_match('{^[^:]++://[^/]*+}', $this->url, $matches)) { + return $matches[0] . $url; + } + + return $this->url; + } + + return $url; + } + + protected function loadDataFromServer() + { + $data = $this->loadRootServerFile(); + + return $this->loadIncludes($data); + } + + protected function loadProviderListings($data) + { + if (isset($data['providers'])) { + if (!is_array($this->providerListing)) { + $this->providerListing = array(); + } + $this->providerListing = array_merge($this->providerListing, $data['providers']); + } + + if ($this->providersUrl && isset($data['provider-includes'])) { + $includes = $data['provider-includes']; + foreach ($includes as $include => $metadata) { + $url = $this->baseUrl . '/' . str_replace('%hash%', $metadata['sha256'], $include); + $cacheKey = str_replace(array('%hash%','$'), '', $include); + if ($this->cache->sha256($cacheKey) === $metadata['sha256']) { + $includedData = json_decode($this->cache->read($cacheKey), true); + } else { + $includedData = $this->fetchFile($url, $cacheKey, $metadata['sha256']); + } + + $this->loadProviderListings($includedData); + } + } + } + + protected function loadIncludes($data) + { + $packages = array(); + + // legacy repo handling + if (!isset($data['packages']) && !isset($data['includes'])) { + foreach ($data as $pkg) { + foreach ($pkg['versions'] as $metadata) { + $packages[] = $metadata; + } + } + + return $packages; + } + + if (isset($data['packages'])) { + foreach ($data['packages'] as $package => $versions) { + foreach ($versions as $version => $metadata) { + $packages[] = $metadata; + } + } + } + + if (isset($data['includes'])) { + foreach ($data['includes'] as $include => $metadata) { + if ($this->cache->sha1($include) === $metadata['sha1']) { + $includedData = json_decode($this->cache->read($include), true); + } else { + $includedData = $this->fetchFile($include); + } + $packages = array_merge($packages, $this->loadIncludes($includedData)); + } + } + + return $packages; + } + + protected function createPackage(array $data, $class = 'Composer\Package\CompletePackage') + { + try { + if (!isset($data['notification-url'])) { + $data['notification-url'] = $this->notifyUrl; + } + + $package = $this->loader->load($data, $class); + if (isset($this->sourceMirrors[$package->getSourceType()])) { + $package->setSourceMirrors($this->sourceMirrors[$package->getSourceType()]); + } + $package->setDistMirrors($this->distMirrors); + $this->configurePackageTransportOptions($package); + + return $package; + } catch (\Exception $e) { + throw new \RuntimeException('Could not load package '.(isset($data['name']) ? $data['name'] : json_encode($data)).' in '.$this->url.': ['.get_class($e).'] '.$e->getMessage(), 0, $e); + } + } + + protected function fetchFile($filename, $cacheKey = null, $sha256 = null, $storeLastModifiedTime = false) + { + if (null === $cacheKey) { + $cacheKey = $filename; + $filename = $this->baseUrl.'/'.$filename; + } + + // url-encode $ signs in URLs as bad proxies choke on them + if (($pos = strpos($filename, '$')) && preg_match('{^https?://.*}i', $filename)) { + $filename = substr($filename, 0, $pos) . '%24' . substr($filename, $pos + 1); + } + + $retries = 3; + while ($retries--) { + try { + $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->rfs, $filename); + if ($this->eventDispatcher) { + $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); + } + + $origin = RemoteFilesystem::getOrigin($filename); + $rfs = $preFileDownloadEvent->getRemoteFilesystem(); + + $json = $rfs->getContents($origin, $filename, false); + if ($sha256 && $sha256 !== hash('sha256', $json)) { + // undo downgrade before trying again if http seems to be hijacked or modifying content somehow + if ($this->allowSslDowngrade) { + $this->url = str_replace('http://', 'https://', $this->url); + $this->baseUrl = str_replace('http://', 'https://', $this->baseUrl); + $filename = str_replace('http://', 'https://', $filename); + } + + if ($retries) { + usleep(100000); + + continue; + } + + // TODO use scarier wording once we know for sure it doesn't do false positives anymore + throw new RepositorySecurityException('The contents of '.$filename.' do not match its signature. This could indicate a man-in-the-middle attack or e.g. antivirus software corrupting files. Try running composer again and report this if you think it is a mistake.'); + } + + $data = JsonFile::parseJson($json, $filename); + RemoteFilesystem::outputWarnings($this->io, $this->url, $data); + + if ($cacheKey) { + if ($storeLastModifiedTime) { + $lastModifiedDate = $rfs->findHeaderValue($rfs->getLastHeaders(), 'last-modified'); + if ($lastModifiedDate) { + $data['last-modified'] = $lastModifiedDate; + $json = json_encode($data); + } + } + $this->cache->write($cacheKey, $json); + } + + break; + } catch (\Exception $e) { + if ($e instanceof TransportException && $e->getStatusCode() === 404) { + throw $e; + } + + if ($retries) { + usleep(100000); + continue; + } + + if ($e instanceof RepositorySecurityException) { + throw $e; + } + + if ($cacheKey && ($contents = $this->cache->read($cacheKey))) { + if (!$this->degradedMode) { + $this->io->writeError(''.$e->getMessage().''); + $this->io->writeError(''.$this->url.' could not be fully loaded, package information was loaded from the local cache and may be out of date'); + } + $this->degradedMode = true; + $data = JsonFile::parseJson($contents, $this->cache->getRoot().$cacheKey); + + break; + } + + throw $e; + } + } + + return $data; + } + + protected function fetchFileIfLastModified($filename, $cacheKey, $lastModifiedTime) + { + $retries = 3; + while ($retries--) { + try { + $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->rfs, $filename); + if ($this->eventDispatcher) { + $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); + } + + $origin = RemoteFilesystem::getOrigin($filename); + $rfs = $preFileDownloadEvent->getRemoteFilesystem(); + $options = array('http' => array('header' => array('If-Modified-Since: '.$lastModifiedTime))); + $json = $rfs->getContents($origin, $filename, false, $options); + if ($json === '' && $rfs->findStatusCode($rfs->getLastHeaders()) === 304) { + return true; + } + + $data = JsonFile::parseJson($json, $filename); + RemoteFilesystem::outputWarnings($this->io, $this->url, $data); + + $lastModifiedDate = $rfs->findHeaderValue($rfs->getLastHeaders(), 'last-modified'); + if ($lastModifiedDate) { + $data['last-modified'] = $lastModifiedDate; + $json = json_encode($data); + } + $this->cache->write($cacheKey, $json); + + return $data; + } catch (\Exception $e) { + if ($e instanceof TransportException && $e->getStatusCode() === 404) { + throw $e; + } + + if ($retries) { + usleep(100000); + continue; + } + + if (!$this->degradedMode) { + $this->io->writeError(''.$e->getMessage().''); + $this->io->writeError(''.$this->url.' could not be fully loaded, package information was loaded from the local cache and may be out of date'); + } + $this->degradedMode = true; + + return true; + } + } + } + + /** + * This initializes the packages key of a partial packages.json that contain some packages inlined + a providers-lazy-url + * + * This should only be called once + */ + private function initializePartialPackages() + { + $rootData = $this->loadRootServerFile(); + + $this->partialPackagesByName = array(); + foreach ($rootData['packages'] as $package => $versions) { + $package = strtolower($package); + foreach ($versions as $version) { + $this->partialPackagesByName[$package][] = $version; + if (!empty($version['provide']) && is_array($version['provide'])) { + foreach ($version['provide'] as $provided => $providedVersion) { + $this->partialPackagesByName[strtolower($provided)][] = $version; + } + } + if (!empty($version['replace']) && is_array($version['replace'])) { + foreach ($version['replace'] as $provided => $providedVersion) { + $this->partialPackagesByName[strtolower($provided)][] = $version; + } + } + } + } + + // wipe rootData as it is fully consumed at this point and this saves some memory + $this->rootData = true; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php b/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php new file mode 100644 index 0000000..ce57504 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php @@ -0,0 +1,164 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\PackageInterface; + +/** + * Composite repository. + * + * @author Beau Simensen + */ +class CompositeRepository extends BaseRepository +{ + /** + * List of repositories + * @var array + */ + private $repositories; + + /** + * Constructor + * @param array $repositories + */ + public function __construct(array $repositories) + { + $this->repositories = array(); + foreach ($repositories as $repo) { + $this->addRepository($repo); + } + } + + /** + * Returns all the wrapped repositories + * + * @return array + */ + public function getRepositories() + { + return $this->repositories; + } + + /** + * {@inheritdoc} + */ + public function hasPackage(PackageInterface $package) + { + foreach ($this->repositories as $repository) { + /* @var $repository RepositoryInterface */ + if ($repository->hasPackage($package)) { + return true; + } + } + + return false; + } + + /** + * {@inheritdoc} + */ + public function findPackage($name, $constraint) + { + foreach ($this->repositories as $repository) { + /* @var $repository RepositoryInterface */ + $package = $repository->findPackage($name, $constraint); + if (null !== $package) { + return $package; + } + } + + return null; + } + + /** + * {@inheritdoc} + */ + public function findPackages($name, $constraint = null) + { + $packages = array(); + foreach ($this->repositories as $repository) { + /* @var $repository RepositoryInterface */ + $packages[] = $repository->findPackages($name, $constraint); + } + + return $packages ? call_user_func_array('array_merge', $packages) : array(); + } + + /** + * {@inheritdoc} + */ + public function search($query, $mode = 0, $type = null) + { + $matches = array(); + foreach ($this->repositories as $repository) { + /* @var $repository RepositoryInterface */ + $matches[] = $repository->search($query, $mode, $type); + } + + return $matches ? call_user_func_array('array_merge', $matches) : array(); + } + + /** + * {@inheritdoc} + */ + public function getPackages() + { + $packages = array(); + foreach ($this->repositories as $repository) { + /* @var $repository RepositoryInterface */ + $packages[] = $repository->getPackages(); + } + + return $packages ? call_user_func_array('array_merge', $packages) : array(); + } + + /** + * {@inheritdoc} + */ + public function removePackage(PackageInterface $package) + { + foreach ($this->repositories as $repository) { + /* @var $repository RepositoryInterface */ + $repository->removePackage($package); + } + } + + /** + * {@inheritdoc} + */ + public function count() + { + $total = 0; + foreach ($this->repositories as $repository) { + /* @var $repository RepositoryInterface */ + $total += $repository->count(); + } + + return $total; + } + + /** + * Add a repository. + * @param RepositoryInterface $repository + */ + public function addRepository(RepositoryInterface $repository) + { + if ($repository instanceof self) { + foreach ($repository->getRepositories() as $repo) { + $this->addRepository($repo); + } + } else { + $this->repositories[] = $repository; + } + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php b/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php new file mode 100644 index 0000000..ff202dc --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php @@ -0,0 +1,23 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +/** + * Configurable repository interface. + * + * @author Lukas Homza + */ +interface ConfigurableRepositoryInterface +{ + public function getRepoConfig(); +} diff --git a/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php b/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php new file mode 100644 index 0000000..204aa09 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php @@ -0,0 +1,97 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Json\JsonFile; +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\Dumper\ArrayDumper; + +/** + * Filesystem repository. + * + * @author Konstantin Kudryashov + * @author Jordi Boggiano + */ +class FilesystemRepository extends WritableArrayRepository +{ + private $file; + + /** + * Initializes filesystem repository. + * + * @param JsonFile $repositoryFile repository json file + */ + public function __construct(JsonFile $repositoryFile) + { + parent::__construct(); + $this->file = $repositoryFile; + } + + /** + * Initializes repository (reads file, or remote address). + */ + protected function initialize() + { + parent::initialize(); + + if (!$this->file->exists()) { + return; + } + + try { + $packages = $this->file->read(); + + // forward compatibility for composer v2 installed.json + if (isset($packages['packages'])) { + $packages = $packages['packages']; + } + + if (!is_array($packages)) { + throw new \UnexpectedValueException('Could not parse package list from the repository'); + } + } catch (\Exception $e) { + throw new InvalidRepositoryException('Invalid repository data in '.$this->file->getPath().', packages could not be loaded: ['.get_class($e).'] '.$e->getMessage()); + } + + $loader = new ArrayLoader(null, true); + foreach ($packages as $packageData) { + $package = $loader->load($packageData); + $this->addPackage($package); + } + } + + public function reload() + { + $this->packages = null; + $this->initialize(); + } + + /** + * Writes writable repository. + */ + public function write() + { + $data = array(); + $dumper = new ArrayDumper(); + + foreach ($this->getCanonicalPackages() as $package) { + $data[] = $dumper->dump($package); + } + + usort($data, function ($a, $b) { + return strcmp($a['name'], $b['name']); + }); + + $this->file->write($data); + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php b/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php new file mode 100644 index 0000000..c801d49 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +/** + * Installed array repository. + * + * This is used for serving the RootPackage inside an in-memory InstalledRepository + * + * @author Jordi Boggiano + */ +class InstalledArrayRepository extends WritableArrayRepository implements InstalledRepositoryInterface +{ +} diff --git a/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php b/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php new file mode 100644 index 0000000..1ff8a0a --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php @@ -0,0 +1,22 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +/** + * Installed filesystem repository. + * + * @author Jordi Boggiano + */ +class InstalledFilesystemRepository extends FilesystemRepository implements InstalledRepositoryInterface +{ +} diff --git a/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php b/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php new file mode 100644 index 0000000..19b095b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +/** + * Installable repository interface. + * + * Just used to tag installed repositories so the base classes can act differently on Alias packages + * + * @author Jordi Boggiano + */ +interface InstalledRepositoryInterface extends WritableRepositoryInterface +{ +} diff --git a/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php b/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php new file mode 100644 index 0000000..061a504 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php @@ -0,0 +1,22 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +/** + * Exception thrown when a package repository is utterly broken + * + * @author Jordi Boggiano + */ +class InvalidRepositoryException extends \Exception +{ +} diff --git a/vendor/composer/composer/src/Composer/Repository/PackageRepository.php b/vendor/composer/composer/src/Composer/Repository/PackageRepository.php new file mode 100644 index 0000000..52b9a0f --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/PackageRepository.php @@ -0,0 +1,61 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\Loader\ValidatingArrayLoader; + +/** + * Package repository. + * + * @author Jordi Boggiano + */ +class PackageRepository extends ArrayRepository +{ + private $config; + + /** + * Initializes filesystem repository. + * + * @param array $config package definition + */ + public function __construct(array $config) + { + parent::__construct(); + $this->config = $config['package']; + + // make sure we have an array of package definitions + if (!is_numeric(key($this->config))) { + $this->config = array($this->config); + } + } + + /** + * Initializes repository (reads file, or remote address). + */ + protected function initialize() + { + parent::initialize(); + + $loader = new ValidatingArrayLoader(new ArrayLoader(null, true), false); + foreach ($this->config as $package) { + try { + $package = $loader->load($package); + } catch (\Exception $e) { + throw new InvalidRepositoryException('A repository of type "package" contains an invalid package definition: '.$e->getMessage()."\n\nInvalid package definition:\n".json_encode($package)); + } + + $this->addPackage($package); + } + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/PathRepository.php b/vendor/composer/composer/src/Composer/Repository/PathRepository.php new file mode 100644 index 0000000..4e6bb05 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/PathRepository.php @@ -0,0 +1,201 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Config; +use Composer\IO\IOInterface; +use Composer\Json\JsonFile; +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\Version\VersionGuesser; +use Composer\Package\Version\VersionParser; +use Composer\Util\Platform; +use Composer\Util\ProcessExecutor; + +/** + * This repository allows installing local packages that are not necessarily under their own VCS. + * + * The local packages will be symlinked when possible, else they will be copied. + * + * @code + * "require": { + * "/": "*" + * }, + * "repositories": [ + * { + * "type": "path", + * "url": "../../relative/path/to/package/" + * }, + * { + * "type": "path", + * "url": "/absolute/path/to/package/" + * }, + * { + * "type": "path", + * "url": "/absolute/path/to/several/packages/*" + * }, + * { + * "type": "path", + * "url": "../../relative/path/to/package/", + * "options": { + * "symlink": false + * } + * }, + * ] + * @endcode + * + * @author Samuel Roze + * @author Johann Reinke + */ +class PathRepository extends ArrayRepository implements ConfigurableRepositoryInterface +{ + /** + * @var ArrayLoader + */ + private $loader; + + /** + * @var VersionGuesser + */ + private $versionGuesser; + + /** + * @var string + */ + private $url; + + /** + * @var array + */ + private $repoConfig; + + /** + * @var ProcessExecutor + */ + private $process; + + /** + * @var array + */ + private $options; + + /** + * Initializes path repository. + * + * @param array $repoConfig + * @param IOInterface $io + * @param Config $config + */ + public function __construct(array $repoConfig, IOInterface $io, Config $config) + { + if (!isset($repoConfig['url'])) { + throw new \RuntimeException('You must specify the `url` configuration for the path repository'); + } + + $this->loader = new ArrayLoader(null, true); + $this->url = Platform::expandPath($repoConfig['url']); + $this->process = new ProcessExecutor($io); + $this->versionGuesser = new VersionGuesser($config, $this->process, new VersionParser()); + $this->repoConfig = $repoConfig; + $this->options = isset($repoConfig['options']) ? $repoConfig['options'] : array(); + + parent::__construct(); + } + + public function getRepoConfig() + { + return $this->repoConfig; + } + + /** + * Initializes path repository. + * + * This method will basically read the folder and add the found package. + */ + protected function initialize() + { + parent::initialize(); + + foreach ($this->getUrlMatches() as $url) { + $path = realpath($url) . DIRECTORY_SEPARATOR; + $composerFilePath = $path.'composer.json'; + + if (!file_exists($composerFilePath)) { + continue; + } + + $json = file_get_contents($composerFilePath); + $package = JsonFile::parseJson($json, $composerFilePath); + $package['dist'] = array( + 'type' => 'path', + 'url' => $url, + 'reference' => sha1($json . serialize($this->options)), + ); + $package['transport-options'] = $this->options; + + // carry over the root package version if this path repo is in the same git repository as root package + if (!isset($package['version']) && ($rootVersion = getenv('COMPOSER_ROOT_VERSION'))) { + if ( + 0 === $this->process->execute('git rev-parse HEAD', $ref1, $path) + && 0 === $this->process->execute('git rev-parse HEAD', $ref2) + && $ref1 === $ref2 + ) { + $package['version'] = $rootVersion; + } + } + + $output = ''; + if (is_dir($path . DIRECTORY_SEPARATOR . '.git') && 0 === $this->process->execute('git log -n1 --pretty=%H', $output, $path)) { + $package['dist']['reference'] = trim($output); + } + + if (!isset($package['version'])) { + $versionData = $this->versionGuesser->guessVersion($package, $path); + if (is_array($versionData) && $versionData['pretty_version']) { + // if there is a feature branch detected, we add a second packages with the feature branch version + if (!empty($versionData['feature_pretty_version'])) { + $package['version'] = $versionData['feature_pretty_version']; + $this->addPackage($this->loader->load($package)); + } + + $package['version'] = $versionData['pretty_version']; + } else { + $package['version'] = 'dev-master'; + } + } + + $package = $this->loader->load($package); + $this->addPackage($package); + } + } + + /** + * Get a list of all (possibly relative) path names matching given url (supports globbing). + * + * @return string[] + */ + private function getUrlMatches() + { + $flags = GLOB_MARK | GLOB_ONLYDIR; + + if (defined('GLOB_BRACE')) { + $flags |= GLOB_BRACE; + } elseif (strpos($this->url, '{') !== false || strpos($this->url, '}') !== false) { + throw new \RuntimeException('The operating system does not support GLOB_BRACE which is required for the url '. $this->url); + } + + // Ensure environment-specific path separators are normalized to URL separators + return array_map(function ($val) { + return rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $val), '/'); + }, glob($this->url, $flags)); + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php b/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php new file mode 100644 index 0000000..9b26eb9 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php @@ -0,0 +1,82 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +use Composer\Util\RemoteFilesystem; + +/** + * Base PEAR Channel reader. + * + * Provides xml namespaces and red + * + * @author Alexey Prilipko + */ +abstract class BaseChannelReader +{ + /** + * PEAR REST Interface namespaces + */ + const CHANNEL_NS = 'http://pear.php.net/channel-1.0'; + const ALL_CATEGORIES_NS = 'http://pear.php.net/dtd/rest.allcategories'; + const CATEGORY_PACKAGES_INFO_NS = 'http://pear.php.net/dtd/rest.categorypackageinfo'; + const ALL_PACKAGES_NS = 'http://pear.php.net/dtd/rest.allpackages'; + const ALL_RELEASES_NS = 'http://pear.php.net/dtd/rest.allreleases'; + const PACKAGE_INFO_NS = 'http://pear.php.net/dtd/rest.package'; + + /** @var RemoteFilesystem */ + private $rfs; + + protected function __construct(RemoteFilesystem $rfs) + { + $this->rfs = $rfs; + } + + /** + * Read content from remote filesystem. + * + * @param string $origin server + * @param string $path relative path to content + * @throws \UnexpectedValueException + * @return \SimpleXMLElement + */ + protected function requestContent($origin, $path) + { + $url = rtrim($origin, '/') . '/' . ltrim($path, '/'); + $content = $this->rfs->getContents($origin, $url, false); + if (!$content) { + throw new \UnexpectedValueException('The PEAR channel at ' . $url . ' did not respond.'); + } + + return str_replace('http://pear.php.net/rest/', 'https://pear.php.net/rest/', $content); + } + + /** + * Read xml content from remote filesystem + * + * @param string $origin server + * @param string $path relative path to content + * @throws \UnexpectedValueException + * @return \SimpleXMLElement + */ + protected function requestXml($origin, $path) + { + // http://components.ez.no/p/packages.xml is malformed. to read it we must ignore parsing errors. + $xml = simplexml_load_string($this->requestContent($origin, $path), "SimpleXMLElement", LIBXML_NOERROR); + + if (false === $xml) { + throw new \UnexpectedValueException(sprintf('The PEAR channel at ' . $origin . ' is broken. (Invalid XML at file `%s`)', $path)); + } + + return $xml; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php new file mode 100644 index 0000000..69e33b8 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php @@ -0,0 +1,67 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +/** + * PEAR channel info + * + * @author Alexey Prilipko + */ +class ChannelInfo +{ + private $name; + private $alias; + private $packages; + + /** + * @param string $name + * @param string $alias + * @param PackageInfo[] $packages + */ + public function __construct($name, $alias, array $packages) + { + $this->name = $name; + $this->alias = $alias; + $this->packages = $packages; + } + + /** + * Name of the channel + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Alias of the channel + * + * @return string + */ + public function getAlias() + { + return $this->alias; + } + + /** + * List of channel packages + * + * @return PackageInfo[] + */ + public function getPackages() + { + return $this->packages; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php new file mode 100644 index 0000000..73cc915 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php @@ -0,0 +1,101 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +use Composer\Util\RemoteFilesystem; + +/** + * PEAR Channel package reader. + * + * Reads channel packages info from and builds Package's + * + * @author Alexey Prilipko + */ +class ChannelReader extends BaseChannelReader +{ + /** @var array of ('xpath test' => 'rest implementation') */ + private $readerMap; + + public function __construct(RemoteFilesystem $rfs) + { + parent::__construct($rfs); + + $rest10reader = new ChannelRest10Reader($rfs); + $rest11reader = new ChannelRest11Reader($rfs); + + $this->readerMap = array( + 'REST1.3' => $rest11reader, + 'REST1.2' => $rest11reader, + 'REST1.1' => $rest11reader, + 'REST1.0' => $rest10reader, + ); + } + + /** + * Reads PEAR channel through REST interface and builds list of packages + * + * @param string $url PEAR Channel url + * @throws \UnexpectedValueException + * @return ChannelInfo + */ + public function read($url) + { + $xml = $this->requestXml($url, "/channel.xml"); + + $channelName = (string) $xml->name; + $channelAlias = (string) $xml->suggestedalias; + + $supportedVersions = array_keys($this->readerMap); + $selectedRestVersion = $this->selectRestVersion($xml, $supportedVersions); + if (!$selectedRestVersion) { + throw new \UnexpectedValueException(sprintf('PEAR repository %s does not supports any of %s protocols.', $url, implode(', ', $supportedVersions))); + } + + $reader = $this->readerMap[$selectedRestVersion['version']]; + $packageDefinitions = $reader->read($selectedRestVersion['baseUrl']); + + return new ChannelInfo($channelName, $channelAlias, $packageDefinitions); + } + + /** + * Reads channel supported REST interfaces and selects one of them + * + * @param \SimpleXMLElement $channelXml + * @param string[] $supportedVersions supported PEAR REST protocols + * @return array|null hash with selected version and baseUrl + */ + private function selectRestVersion($channelXml, $supportedVersions) + { + $channelXml->registerXPathNamespace('ns', self::CHANNEL_NS); + + foreach ($supportedVersions as $version) { + $xpathTest = "ns:servers/ns:*/ns:rest/ns:baseurl[@type='{$version}']"; + $testResult = $channelXml->xpath($xpathTest); + + foreach ($testResult as $result) { + // Choose first https:// option. + $result = (string) $result; + if (preg_match('{^https://}i', $result)) { + return array('version' => $version, 'baseUrl' => $result); + } + } + + // Fallback to non-https if it does not exist. + if (count($testResult) > 0) { + return array('version' => $version, 'baseUrl' => (string) $testResult[0]); + } + } + + return null; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php new file mode 100644 index 0000000..489914d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php @@ -0,0 +1,164 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +use Composer\Downloader\TransportException; + +/** + * Read PEAR packages using REST 1.0 interface + * + * At version 1.0 package descriptions read from: + * {baseUrl}/p/packages.xml + * {baseUrl}/p/{package}/info.xml + * {baseUrl}/p/{package}/allreleases.xml + * {baseUrl}/p/{package}/deps.{version}.txt + * + * @author Alexey Prilipko + */ +class ChannelRest10Reader extends BaseChannelReader +{ + private $dependencyReader; + + public function __construct($rfs) + { + parent::__construct($rfs); + + $this->dependencyReader = new PackageDependencyParser(); + } + + /** + * Reads package descriptions using PEAR Rest 1.0 interface + * + * @param string $baseUrl base Url interface + * + * @return PackageInfo[] + */ + public function read($baseUrl) + { + return $this->readPackages($baseUrl); + } + + /** + * Read list of packages from + * {baseUrl}/p/packages.xml + * + * @param string $baseUrl + * @return PackageInfo[] + */ + private function readPackages($baseUrl) + { + $result = array(); + + $xmlPath = '/p/packages.xml'; + $xml = $this->requestXml($baseUrl, $xmlPath); + $xml->registerXPathNamespace('ns', self::ALL_PACKAGES_NS); + foreach ($xml->xpath('ns:p') as $node) { + $packageName = (string) $node; + $packageInfo = $this->readPackage($baseUrl, $packageName); + $result[] = $packageInfo; + } + + return $result; + } + + /** + * Read package info from + * {baseUrl}/p/{package}/info.xml + * + * @param string $baseUrl + * @param string $packageName + * @return PackageInfo + */ + private function readPackage($baseUrl, $packageName) + { + $xmlPath = '/p/' . strtolower($packageName) . '/info.xml'; + $xml = $this->requestXml($baseUrl, $xmlPath); + $xml->registerXPathNamespace('ns', self::PACKAGE_INFO_NS); + + $channelName = (string) $xml->c; + $packageName = (string) $xml->n; + $license = (string) $xml->l; + $shortDescription = (string) $xml->s; + $description = (string) $xml->d; + + return new PackageInfo( + $channelName, + $packageName, + $license, + $shortDescription, + $description, + $this->readPackageReleases($baseUrl, $packageName) + ); + } + + /** + * Read package releases from + * {baseUrl}/p/{package}/allreleases.xml + * + * @param string $baseUrl + * @param string $packageName + * @throws \Composer\Downloader\TransportException|\Exception + * @return ReleaseInfo[] hash array with keys as version numbers + */ + private function readPackageReleases($baseUrl, $packageName) + { + $result = array(); + + try { + $xmlPath = '/r/' . strtolower($packageName) . '/allreleases.xml'; + $xml = $this->requestXml($baseUrl, $xmlPath); + $xml->registerXPathNamespace('ns', self::ALL_RELEASES_NS); + foreach ($xml->xpath('ns:r') as $node) { + $releaseVersion = (string) $node->v; + $releaseStability = (string) $node->s; + + try { + $result[$releaseVersion] = new ReleaseInfo( + $releaseStability, + $this->readPackageReleaseDependencies($baseUrl, $packageName, $releaseVersion) + ); + } catch (TransportException $exception) { + if ($exception->getCode() != 404) { + throw $exception; + } + } + } + } catch (TransportException $exception) { + if ($exception->getCode() != 404) { + throw $exception; + } + } + + return $result; + } + + /** + * Read package dependencies from + * {baseUrl}/p/{package}/deps.{version}.txt + * + * @param string $baseUrl + * @param string $packageName + * @param string $version + * @return DependencyInfo[] + */ + private function readPackageReleaseDependencies($baseUrl, $packageName, $version) + { + $dependencyReader = new PackageDependencyParser(); + + $depthPath = '/r/' . strtolower($packageName) . '/deps.' . $version . '.txt'; + $content = $this->requestContent($baseUrl, $depthPath); + $dependencyArray = unserialize($content); + + return $dependencyReader->buildDependencyInfo($dependencyArray); + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php new file mode 100644 index 0000000..f9e05f5 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php @@ -0,0 +1,139 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +/** + * Read PEAR packages using REST 1.1 interface + * + * At version 1.1 package descriptions read from: + * {baseUrl}/c/categories.xml + * {baseUrl}/c/{category}/packagesinfo.xml + * + * @author Alexey Prilipko + */ +class ChannelRest11Reader extends BaseChannelReader +{ + private $dependencyReader; + + public function __construct($rfs) + { + parent::__construct($rfs); + + $this->dependencyReader = new PackageDependencyParser(); + } + + /** + * Reads package descriptions using PEAR Rest 1.1 interface + * + * @param string $baseUrl base Url interface + * + * @return PackageInfo[] + */ + public function read($baseUrl) + { + return $this->readChannelPackages($baseUrl); + } + + /** + * Read list of channel categories from + * {baseUrl}/c/categories.xml + * + * @param string $baseUrl + * @return PackageInfo[] + */ + private function readChannelPackages($baseUrl) + { + $result = array(); + + $xml = $this->requestXml($baseUrl, "/c/categories.xml"); + $xml->registerXPathNamespace('ns', self::ALL_CATEGORIES_NS); + foreach ($xml->xpath('ns:c') as $node) { + $categoryName = (string) $node; + $categoryPackages = $this->readCategoryPackages($baseUrl, $categoryName); + $result = array_merge($result, $categoryPackages); + } + + return $result; + } + + /** + * Read packages from + * {baseUrl}/c/{category}/packagesinfo.xml + * + * @param string $baseUrl + * @param string $categoryName + * @return PackageInfo[] + */ + private function readCategoryPackages($baseUrl, $categoryName) + { + $result = array(); + + $categoryPath = '/c/'.urlencode($categoryName).'/packagesinfo.xml'; + $xml = $this->requestXml($baseUrl, $categoryPath); + $xml->registerXPathNamespace('ns', self::CATEGORY_PACKAGES_INFO_NS); + foreach ($xml->xpath('ns:pi') as $node) { + $packageInfo = $this->parsePackage($node); + $result[] = $packageInfo; + } + + return $result; + } + + /** + * Parses package node. + * + * @param \SimpleXMLElement $packageInfo xml element describing package + * @return PackageInfo + */ + private function parsePackage($packageInfo) + { + $packageInfo->registerXPathNamespace('ns', self::CATEGORY_PACKAGES_INFO_NS); + $channelName = (string) $packageInfo->p->c; + $packageName = (string) $packageInfo->p->n; + $license = (string) $packageInfo->p->l; + $shortDescription = (string) $packageInfo->p->s; + $description = (string) $packageInfo->p->d; + + $dependencies = array(); + foreach ($packageInfo->xpath('ns:deps') as $node) { + $dependencyVersion = (string) $node->v; + $dependencyArray = unserialize((string) $node->d); + + $dependencyInfo = $this->dependencyReader->buildDependencyInfo($dependencyArray); + + $dependencies[$dependencyVersion] = $dependencyInfo; + } + + $releases = array(); + $releasesInfo = $packageInfo->xpath('ns:a/ns:r'); + if ($releasesInfo) { + foreach ($releasesInfo as $node) { + $releaseVersion = (string) $node->v; + $releaseStability = (string) $node->s; + $releases[$releaseVersion] = new ReleaseInfo( + $releaseStability, + isset($dependencies[$releaseVersion]) ? $dependencies[$releaseVersion] : new DependencyInfo(array(), array()) + ); + } + } + + return new PackageInfo( + $channelName, + $packageName, + $license, + $shortDescription, + $description, + $releases + ); + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php b/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php new file mode 100644 index 0000000..13a7900 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php @@ -0,0 +1,60 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +/** + * PEAR package release dependency info + * + * @author Alexey Prilipko + */ +class DependencyConstraint +{ + private $type; + private $constraint; + private $channelName; + private $packageName; + + /** + * @param string $type + * @param string $constraint + * @param string $channelName + * @param string $packageName + */ + public function __construct($type, $constraint, $channelName, $packageName) + { + $this->type = $type; + $this->constraint = $constraint; + $this->channelName = $channelName; + $this->packageName = $packageName; + } + + public function getChannelName() + { + return $this->channelName; + } + + public function getConstraint() + { + return $this->constraint; + } + + public function getPackageName() + { + return $this->packageName; + } + + public function getType() + { + return $this->type; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php b/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php new file mode 100644 index 0000000..c6b266e --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php @@ -0,0 +1,50 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +/** + * PEAR package release dependency info + * + * @author Alexey Prilipko + */ +class DependencyInfo +{ + private $requires; + private $optionals; + + /** + * @param DependencyConstraint[] $requires list of requires/conflicts/replaces + * @param array $optionals [groupName => DependencyConstraint[]] list of optional groups + */ + public function __construct($requires, $optionals) + { + $this->requires = $requires; + $this->optionals = $optionals; + } + + /** + * @return DependencyConstraint[] list of requires/conflicts/replaces + */ + public function getRequires() + { + return $this->requires; + } + + /** + * @return array [groupName => DependencyConstraint[]] list of optional groups + */ + public function getOptionals() + { + return $this->optionals; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php b/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php new file mode 100644 index 0000000..24f8fb9 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php @@ -0,0 +1,317 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +/** + * Read PEAR packages using REST 1.0 interface + * + * @author Alexey Prilipko + */ +class PackageDependencyParser +{ + /** + * Builds dependency information. It detects used package.xml format. + * + * @param array $depArray + * @return DependencyInfo + */ + public function buildDependencyInfo($depArray) + { + if (!is_array($depArray)) { + return new DependencyInfo(array(), array()); + } + if (!$this->isHash($depArray)) { + return new DependencyInfo($this->buildDependency10Info($depArray), array()); + } + + return $this->buildDependency20Info($depArray); + } + + /** + * Builds dependency information from package.xml 1.0 format + * + * https://pear.php.net/manual/en/guide.developers.package2.dependencies.php + * + * package.xml 1.0 format consists of array of + * { type="php|os|sapi|ext|pkg" rel="has|not|eq|ge|gt|le|lt" optional="yes" + * channel="channelName" name="extName|packageName" } + * + * @param array $depArray Dependency data in package.xml 1.0 format + * @return DependencyConstraint[] + */ + private function buildDependency10Info($depArray) + { + static $dep10toOperatorMap = array('has' => '==', 'eq' => '==', 'ge' => '>=', 'gt' => '>', 'le' => '<=', 'lt' => '<', 'not' => '!='); + + $result = array(); + + foreach ($depArray as $depItem) { + if (empty($depItem['rel']) || !array_key_exists($depItem['rel'], $dep10toOperatorMap)) { + // 'unknown rel type:' . $depItem['rel']; + continue; + } + + $depType = !empty($depItem['optional']) && 'yes' == $depItem['optional'] + ? 'optional' + : 'required'; + $depType = 'not' == $depItem['rel'] + ? 'conflicts' + : $depType; + + $depVersion = !empty($depItem['version']) ? $this->parseVersion($depItem['version']) : '*'; + + // has & not are special operators that does not requires version + $depVersionConstraint = ('has' == $depItem['rel'] || 'not' == $depItem['rel']) && '*' == $depVersion + ? '*' + : $dep10toOperatorMap[$depItem['rel']] . $depVersion; + + switch ($depItem['type']) { + case 'php': + $depChannelName = 'php'; + $depPackageName = ''; + break; + case 'pkg': + $depChannelName = !empty($depItem['channel']) ? $depItem['channel'] : 'pear.php.net'; + $depPackageName = $depItem['name']; + break; + case 'ext': + $depChannelName = 'ext'; + $depPackageName = $depItem['name']; + break; + case 'os': + case 'sapi': + $depChannelName = ''; + $depPackageName = ''; + break; + default: + $depChannelName = ''; + $depPackageName = ''; + break; + } + + if ('' != $depChannelName) { + $result[] = new DependencyConstraint( + $depType, + $depVersionConstraint, + $depChannelName, + $depPackageName + ); + } + } + + return $result; + } + + /** + * Builds dependency information from package.xml 2.0 format + * + * @param array $depArray Dependency data in package.xml 1.0 format + * @return DependencyInfo + */ + private function buildDependency20Info($depArray) + { + $result = array(); + $optionals = array(); + $defaultOptionals = array(); + foreach ($depArray as $depType => $depTypeGroup) { + if (!is_array($depTypeGroup)) { + continue; + } + if ('required' == $depType || 'optional' == $depType) { + foreach ($depTypeGroup as $depItemType => $depItem) { + switch ($depItemType) { + case 'php': + $result[] = new DependencyConstraint( + $depType, + $this->parse20VersionConstraint($depItem), + 'php', + '' + ); + break; + case 'package': + $deps = $this->buildDepPackageConstraints($depItem, $depType); + $result = array_merge($result, $deps); + break; + case 'extension': + $deps = $this->buildDepExtensionConstraints($depItem, $depType); + $result = array_merge($result, $deps); + break; + case 'subpackage': + $deps = $this->buildDepPackageConstraints($depItem, 'replaces'); + $defaultOptionals += $deps; + break; + case 'os': + case 'pearinstaller': + break; + default: + break; + } + } + } elseif ('group' == $depType) { + if ($this->isHash($depTypeGroup)) { + $depTypeGroup = array($depTypeGroup); + } + + foreach ($depTypeGroup as $depItem) { + $groupName = $depItem['attribs']['name']; + if (!isset($optionals[$groupName])) { + $optionals[$groupName] = array(); + } + + if (isset($depItem['subpackage'])) { + $optionals[$groupName] += $this->buildDepPackageConstraints($depItem['subpackage'], 'replaces'); + } else { + $result += $this->buildDepPackageConstraints($depItem['package'], 'optional'); + } + } + } + } + + if (count($defaultOptionals) > 0) { + $optionals['*'] = $defaultOptionals; + } + + return new DependencyInfo($result, $optionals); + } + + /** + * Builds dependency constraint of 'extension' type + * + * @param array $depItem dependency constraint or array of dependency constraints + * @param string $depType target type of building constraint. + * @return DependencyConstraint[] + */ + private function buildDepExtensionConstraints($depItem, $depType) + { + if ($this->isHash($depItem)) { + $depItem = array($depItem); + } + + $result = array(); + foreach ($depItem as $subDepItem) { + $depChannelName = 'ext'; + $depPackageName = $subDepItem['name']; + $depVersionConstraint = $this->parse20VersionConstraint($subDepItem); + + $result[] = new DependencyConstraint( + $depType, + $depVersionConstraint, + $depChannelName, + $depPackageName + ); + } + + return $result; + } + + /** + * Builds dependency constraint of 'package' type + * + * @param array $depItem dependency constraint or array of dependency constraints + * @param string $depType target type of building constraint. + * @return DependencyConstraint[] + */ + private function buildDepPackageConstraints($depItem, $depType) + { + if ($this->isHash($depItem)) { + $depItem = array($depItem); + } + + $result = array(); + foreach ($depItem as $subDepItem) { + if (!array_key_exists('channel', $subDepItem)) { + $subDepItem['channel'] = $subDepItem['uri']; + } + $depChannelName = $subDepItem['channel']; + $depPackageName = $subDepItem['name']; + $depVersionConstraint = $this->parse20VersionConstraint($subDepItem); + if (isset($subDepItem['conflicts'])) { + $depType = 'conflicts'; + } + + $result[] = new DependencyConstraint( + $depType, + $depVersionConstraint, + $depChannelName, + $depPackageName + ); + } + + return $result; + } + + /** + * Parses version constraint + * + * @param array $data array containing several 'min', 'max', 'has', 'exclude' and other keys. + * @return string + */ + private function parse20VersionConstraint(array $data) + { + static $dep20toOperatorMap = array('has' => '==', 'min' => '>=', 'max' => '<=', 'exclude' => '!='); + + $versions = array(); + $values = array_intersect_key($data, $dep20toOperatorMap); + if (0 == count($values)) { + return '*'; + } + if (isset($values['min']) && isset($values['exclude']) && $data['min'] == $data['exclude']) { + $versions[] = '>' . $this->parseVersion($values['min']); + } elseif (isset($values['max']) && isset($values['exclude']) && $data['max'] == $data['exclude']) { + $versions[] = '<' . $this->parseVersion($values['max']); + } else { + foreach ($values as $op => $version) { + if ('exclude' == $op && is_array($version)) { + foreach ($version as $versionPart) { + $versions[] = $dep20toOperatorMap[$op] . $this->parseVersion($versionPart); + } + } else { + $versions[] = $dep20toOperatorMap[$op] . $this->parseVersion($version); + } + } + } + + return implode(',', $versions); + } + + /** + * Softened version parser + * + * @param string $version + * @return null|string + */ + private function parseVersion($version) + { + if (preg_match('{^v?(\d{1,3})(\.\d+)?(\.\d+)?(\.\d+)?}i', $version, $matches)) { + $version = $matches[1] + .(!empty($matches[2]) ? $matches[2] : '.0') + .(!empty($matches[3]) ? $matches[3] : '.0') + .(!empty($matches[4]) ? $matches[4] : '.0'); + + return $version; + } + + return null; + } + + /** + * Test if array is associative or hash type + * + * @param array $array + * @return bool + */ + private function isHash(array $array) + { + return !array_key_exists(1, $array) && !array_key_exists(0, $array); + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php b/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php new file mode 100644 index 0000000..3b2eb6d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php @@ -0,0 +1,94 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +/** + * PEAR Package info + * + * @author Alexey Prilipko + */ +class PackageInfo +{ + private $channelName; + private $packageName; + private $license; + private $shortDescription; + private $description; + private $releases; + + /** + * @param string $channelName + * @param string $packageName + * @param string $license + * @param string $shortDescription + * @param string $description + * @param ReleaseInfo[] $releases associative array maps release version to release info + */ + public function __construct($channelName, $packageName, $license, $shortDescription, $description, $releases) + { + $this->channelName = $channelName; + $this->packageName = $packageName; + $this->license = $license; + $this->shortDescription = $shortDescription; + $this->description = $description; + $this->releases = $releases; + } + + /** + * @return string the package channel name + */ + public function getChannelName() + { + return $this->channelName; + } + + /** + * @return string the package name + */ + public function getPackageName() + { + return $this->packageName; + } + + /** + * @return string the package description + */ + public function getDescription() + { + return $this->description; + } + + /** + * @return string the package short description + */ + public function getShortDescription() + { + return $this->shortDescription; + } + + /** + * @return string the package license + */ + public function getLicense() + { + return $this->license; + } + + /** + * @return ReleaseInfo[] + */ + public function getReleases() + { + return $this->releases; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php b/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php new file mode 100644 index 0000000..39d6e1e --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php @@ -0,0 +1,50 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Pear; + +/** + * PEAR package release info + * + * @author Alexey Prilipko + */ +class ReleaseInfo +{ + private $stability; + private $dependencyInfo; + + /** + * @param string $stability + * @param DependencyInfo $dependencyInfo + */ + public function __construct($stability, $dependencyInfo) + { + $this->stability = $stability; + $this->dependencyInfo = $dependencyInfo; + } + + /** + * @return DependencyInfo release dependencies + */ + public function getDependencyInfo() + { + return $this->dependencyInfo; + } + + /** + * @return string release stability + */ + public function getStability() + { + return $this->stability; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/PearRepository.php b/vendor/composer/composer/src/Composer/Repository/PearRepository.php new file mode 100644 index 0000000..c4f0b83 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/PearRepository.php @@ -0,0 +1,198 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\IO\IOInterface; +use Composer\Semver\VersionParser as SemverVersionParser; +use Composer\Package\Version\VersionParser; +use Composer\Repository\Pear\ChannelReader; +use Composer\Package\CompletePackage; +use Composer\Repository\Pear\ChannelInfo; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Package\Link; +use Composer\Semver\Constraint\Constraint; +use Composer\Util\RemoteFilesystem; +use Composer\Config; +use Composer\Factory; + +/** + * Builds list of package from PEAR channel. + * + * Packages read from channel are named as 'pear-{channelName}/{packageName}' + * and has aliased as 'pear-{channelAlias}/{packageName}' + * + * @author Benjamin Eberlei + * @author Jordi Boggiano + */ +class PearRepository extends ArrayRepository implements ConfigurableRepositoryInterface +{ + private $url; + private $io; + private $rfs; + private $versionParser; + private $repoConfig; + + /** @var string vendor makes additional alias for each channel as {prefix}/{packagename}. It allows smoother + * package transition to composer-like repositories. + */ + private $vendorAlias; + + public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $dispatcher = null, RemoteFilesystem $rfs = null) + { + parent::__construct(); + if (!preg_match('{^https?://}', $repoConfig['url'])) { + $repoConfig['url'] = 'http://'.$repoConfig['url']; + } + + $urlBits = parse_url($repoConfig['url']); + if (empty($urlBits['scheme']) || empty($urlBits['host'])) { + throw new \UnexpectedValueException('Invalid url given for PEAR repository: '.$repoConfig['url']); + } + + $this->url = rtrim($repoConfig['url'], '/'); + $this->io = $io; + $this->rfs = $rfs ?: Factory::createRemoteFilesystem($this->io, $config); + $this->vendorAlias = isset($repoConfig['vendor-alias']) ? $repoConfig['vendor-alias'] : null; + $this->versionParser = new VersionParser(); + $this->repoConfig = $repoConfig; + } + + public function getRepoConfig() + { + return $this->repoConfig; + } + + protected function initialize() + { + parent::initialize(); + + $this->io->writeError('Initializing PEAR repository '.$this->url); + + $reader = new ChannelReader($this->rfs); + try { + $channelInfo = $reader->read($this->url); + } catch (\Exception $e) { + $this->io->writeError('PEAR repository from '.$this->url.' could not be loaded. '.$e->getMessage().''); + + return; + } + $packages = $this->buildComposerPackages($channelInfo, $this->versionParser); + foreach ($packages as $package) { + $this->addPackage($package); + } + } + + /** + * Builds CompletePackages from PEAR package definition data. + * + * @param ChannelInfo $channelInfo + * @param SemverVersionParser $versionParser + * @return CompletePackage + */ + private function buildComposerPackages(ChannelInfo $channelInfo, SemverVersionParser $versionParser) + { + $result = array(); + foreach ($channelInfo->getPackages() as $packageDefinition) { + foreach ($packageDefinition->getReleases() as $version => $releaseInfo) { + try { + $normalizedVersion = $versionParser->normalize($version); + } catch (\UnexpectedValueException $e) { + $this->io->writeError('Could not load '.$packageDefinition->getPackageName().' '.$version.': '.$e->getMessage(), true, IOInterface::VERBOSE); + continue; + } + + $composerPackageName = $this->buildComposerPackageName($packageDefinition->getChannelName(), $packageDefinition->getPackageName()); + + // distribution url must be read from /r/{packageName}/{version}.xml::/r/g:text() + // but this location is 'de-facto' standard + $urlBits = parse_url($this->url); + $scheme = (isset($urlBits['scheme']) && 'https' === $urlBits['scheme'] && extension_loaded('openssl')) ? 'https' : 'http'; + $distUrl = "{$scheme}://{$packageDefinition->getChannelName()}/get/{$packageDefinition->getPackageName()}-{$version}.tgz"; + + $requires = array(); + $suggests = array(); + $conflicts = array(); + $replaces = array(); + + // alias package only when its channel matches repository channel, + // cause we've know only repository channel alias + if ($channelInfo->getName() == $packageDefinition->getChannelName()) { + $composerPackageAlias = $this->buildComposerPackageName($channelInfo->getAlias(), $packageDefinition->getPackageName()); + $aliasConstraint = new Constraint('==', $normalizedVersion); + $replaces[] = new Link($composerPackageName, $composerPackageAlias, $aliasConstraint, 'replaces', (string) $aliasConstraint); + } + + // alias package with user-specified prefix. it makes private pear channels looks like composer's. + if (!empty($this->vendorAlias) + && ($this->vendorAlias != 'pear-'.$channelInfo->getAlias() || $channelInfo->getName() != $packageDefinition->getChannelName()) + ) { + $composerPackageAlias = "{$this->vendorAlias}/{$packageDefinition->getPackageName()}"; + $aliasConstraint = new Constraint('==', $normalizedVersion); + $replaces[] = new Link($composerPackageName, $composerPackageAlias, $aliasConstraint, 'replaces', (string) $aliasConstraint); + } + + foreach ($releaseInfo->getDependencyInfo()->getRequires() as $dependencyConstraint) { + $dependencyPackageName = $this->buildComposerPackageName($dependencyConstraint->getChannelName(), $dependencyConstraint->getPackageName()); + $constraint = $versionParser->parseConstraints($dependencyConstraint->getConstraint()); + $link = new Link($composerPackageName, $dependencyPackageName, $constraint, $dependencyConstraint->getType(), $dependencyConstraint->getConstraint()); + switch ($dependencyConstraint->getType()) { + case 'required': + $requires[] = $link; + break; + case 'conflicts': + $conflicts[] = $link; + break; + case 'replaces': + $replaces[] = $link; + break; + } + } + + foreach ($releaseInfo->getDependencyInfo()->getOptionals() as $group => $dependencyConstraints) { + foreach ($dependencyConstraints as $dependencyConstraint) { + $dependencyPackageName = $this->buildComposerPackageName($dependencyConstraint->getChannelName(), $dependencyConstraint->getPackageName()); + $suggests[$group.'-'.$dependencyPackageName] = $dependencyConstraint->getConstraint(); + } + } + + $package = new CompletePackage($composerPackageName, $normalizedVersion, $version); + $package->setType('pear-library'); + $package->setDescription($packageDefinition->getDescription()); + $package->setLicense(array($packageDefinition->getLicense())); + $package->setDistType('file'); + $package->setDistUrl($distUrl); + $package->setAutoload(array('classmap' => array(''))); + $package->setIncludePaths(array('/')); + $package->setRequires($requires); + $package->setConflicts($conflicts); + $package->setSuggests($suggests); + $package->setReplaces($replaces); + $result[] = $package; + } + } + + return $result; + } + + private function buildComposerPackageName($channelName, $packageName) + { + if ('php' === $channelName) { + return "php"; + } + if ('ext' === $channelName) { + return "ext-{$packageName}"; + } + + return "pear-{$channelName}/{$packageName}"; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php b/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php new file mode 100644 index 0000000..3126f86 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php @@ -0,0 +1,342 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\CompletePackage; +use Composer\Package\PackageInterface; +use Composer\Package\Version\VersionParser; +use Composer\Plugin\PluginInterface; +use Composer\Util\ProcessExecutor; +use Composer\Util\Silencer; +use Composer\Util\Platform; +use Composer\XdebugHandler\XdebugHandler; +use Symfony\Component\Process\ExecutableFinder; + +/** + * @author Jordi Boggiano + */ +class PlatformRepository extends ArrayRepository +{ + const PLATFORM_PACKAGE_REGEX = '{^(?:php(?:-64bit|-ipv6|-zts|-debug)?|hhvm|(?:ext|lib)-[a-z0-9](?:[_.-]?[a-z0-9]+)*|composer-plugin-api)$}iD'; + + private $versionParser; + + /** + * Defines overrides so that the platform can be mocked + * + * Should be an array of package name => version number mappings + * + * @var array + */ + private $overrides = array(); + + private $process; + + public function __construct(array $packages = array(), array $overrides = array(), ProcessExecutor $process = null) + { + $this->process = $process === null ? (new ProcessExecutor()) : $process; + foreach ($overrides as $name => $version) { + $this->overrides[strtolower($name)] = array('name' => $name, 'version' => $version); + } + parent::__construct($packages); + } + + protected function initialize() + { + parent::initialize(); + + $this->versionParser = new VersionParser(); + + // Add each of the override versions as options. + // Later we might even replace the extensions instead. + foreach ($this->overrides as $override) { + // Check that it's a platform package. + if (!preg_match(self::PLATFORM_PACKAGE_REGEX, $override['name'])) { + throw new \InvalidArgumentException('Invalid platform package name in config.platform: '.$override['name']); + } + + $this->addOverriddenPackage($override); + } + + $prettyVersion = PluginInterface::PLUGIN_API_VERSION; + $version = $this->versionParser->normalize($prettyVersion); + $composerPluginApi = new CompletePackage('composer-plugin-api', $version, $prettyVersion); + $composerPluginApi->setDescription('The Composer Plugin API'); + $this->addPackage($composerPluginApi); + + try { + $prettyVersion = PHP_VERSION; + $version = $this->versionParser->normalize($prettyVersion); + } catch (\UnexpectedValueException $e) { + $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', PHP_VERSION); + $version = $this->versionParser->normalize($prettyVersion); + } + + $php = new CompletePackage('php', $version, $prettyVersion); + $php->setDescription('The PHP interpreter'); + $this->addPackage($php); + + if (PHP_DEBUG) { + $phpdebug = new CompletePackage('php-debug', $version, $prettyVersion); + $phpdebug->setDescription('The PHP interpreter, with debugging symbols'); + $this->addPackage($phpdebug); + } + + if (defined('PHP_ZTS') && PHP_ZTS) { + $phpzts = new CompletePackage('php-zts', $version, $prettyVersion); + $phpzts->setDescription('The PHP interpreter, with Zend Thread Safety'); + $this->addPackage($phpzts); + } + + if (PHP_INT_SIZE === 8) { + $php64 = new CompletePackage('php-64bit', $version, $prettyVersion); + $php64->setDescription('The PHP interpreter, 64bit'); + $this->addPackage($php64); + } + + // The AF_INET6 constant is only defined if ext-sockets is available but + // IPv6 support might still be available. + if (defined('AF_INET6') || Silencer::call('inet_pton', '::') !== false) { + $phpIpv6 = new CompletePackage('php-ipv6', $version, $prettyVersion); + $phpIpv6->setDescription('The PHP interpreter, with IPv6 support'); + $this->addPackage($phpIpv6); + } + + $loadedExtensions = get_loaded_extensions(); + + // Extensions scanning + foreach ($loadedExtensions as $name) { + if (in_array($name, array('standard', 'Core'))) { + continue; + } + + $reflExt = new \ReflectionExtension($name); + $prettyVersion = $reflExt->getVersion(); + $this->addExtension($name, $prettyVersion); + } + + // Check for xdebug in a restarted process + if (!in_array('xdebug', $loadedExtensions, true) && ($prettyVersion = XdebugHandler::getSkippedVersion())) { + $this->addExtension('xdebug', $prettyVersion); + } + + // Another quick loop, just for possible libraries + // Doing it this way to know that functions or constants exist before + // relying on them. + foreach ($loadedExtensions as $name) { + $prettyVersion = null; + $description = 'The '.$name.' PHP library'; + switch ($name) { + case 'curl': + $curlVersion = curl_version(); + $prettyVersion = $curlVersion['version']; + break; + + case 'iconv': + $prettyVersion = ICONV_VERSION; + break; + + case 'intl': + $name = 'ICU'; + if (defined('INTL_ICU_VERSION')) { + $prettyVersion = INTL_ICU_VERSION; + } else { + $reflector = new \ReflectionExtension('intl'); + + ob_start(); + $reflector->info(); + $output = ob_get_clean(); + + preg_match('/^ICU version => (.*)$/m', $output, $matches); + $prettyVersion = $matches[1]; + } + + break; + + case 'imagick': + $imagick = new \Imagick(); + $imageMagickVersion = $imagick->getVersion(); + // 6.x: ImageMagick 6.2.9 08/24/06 Q16 http://www.imagemagick.org + // 7.x: ImageMagick 7.0.8-34 Q16 x86_64 2019-03-23 https://imagemagick.org + preg_match('/^ImageMagick ([\d.]+)(?:-(\d+))?/', $imageMagickVersion['versionString'], $matches); + if (isset($matches[2])) { + $prettyVersion = "{$matches[1]}.{$matches[2]}"; + } else { + $prettyVersion = $matches[1]; + } + break; + + case 'libxml': + $prettyVersion = LIBXML_DOTTED_VERSION; + break; + + case 'openssl': + $prettyVersion = preg_replace_callback('{^(?:OpenSSL|LibreSSL)?\s*([0-9.]+)([a-z]*).*}i', function ($match) { + if (empty($match[2])) { + return $match[1]; + } + + // OpenSSL versions add another letter when they reach Z. + // e.g. OpenSSL 0.9.8zh 3 Dec 2015 + + if (!preg_match('{^z*[a-z]$}', $match[2])) { + // 0.9.8abc is garbage + return 0; + } + + $len = strlen($match[2]); + $patchVersion = ($len - 1) * 26; // All Z + $patchVersion += ord($match[2][$len - 1]) - 96; + + return $match[1].'.'.$patchVersion; + }, OPENSSL_VERSION_TEXT); + + $description = OPENSSL_VERSION_TEXT; + break; + + case 'pcre': + $prettyVersion = preg_replace('{^(\S+).*}', '$1', PCRE_VERSION); + break; + + case 'uuid': + $prettyVersion = phpversion('uuid'); + break; + + case 'xsl': + $prettyVersion = LIBXSLT_DOTTED_VERSION; + break; + + default: + // None handled extensions have no special cases, skip + continue 2; + } + + try { + $version = $this->versionParser->normalize($prettyVersion); + } catch (\UnexpectedValueException $e) { + continue; + } + + $lib = new CompletePackage('lib-'.$name, $version, $prettyVersion); + $lib->setDescription($description); + $this->addPackage($lib); + } + + $hhvmVersion = defined('HHVM_VERSION') ? HHVM_VERSION : null; + if ($hhvmVersion === null && !Platform::isWindows()) { + $finder = new ExecutableFinder(); + $hhvm = $finder->find('hhvm'); + if ($hhvm !== null) { + $exitCode = $this->process->execute( + ProcessExecutor::escape($hhvm). + ' --php -d hhvm.jit=0 -r "echo HHVM_VERSION;" 2>/dev/null', + $hhvmVersion + ); + if ($exitCode !== 0) { + $hhvmVersion = null; + } + } + } + if ($hhvmVersion) { + try { + $prettyVersion = $hhvmVersion; + $version = $this->versionParser->normalize($prettyVersion); + } catch (\UnexpectedValueException $e) { + $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', $hhvmVersion); + $version = $this->versionParser->normalize($prettyVersion); + } + + $hhvm = new CompletePackage('hhvm', $version, $prettyVersion); + $hhvm->setDescription('The HHVM Runtime (64bit)'); + $this->addPackage($hhvm); + } + } + + /** + * {@inheritDoc} + */ + public function addPackage(PackageInterface $package) + { + // Skip if overridden + if (isset($this->overrides[$package->getName()])) { + $overrider = $this->findPackage($package->getName(), '*'); + if ($package->getVersion() === $overrider->getVersion()) { + $actualText = 'same as actual'; + } else { + $actualText = 'actual: '.$package->getPrettyVersion(); + } + $overrider->setDescription($overrider->getDescription().' ('.$actualText.')'); + + return; + } + + // Skip if PHP is overridden and we are adding a php-* package + if (isset($this->overrides['php']) && 0 === strpos($package->getName(), 'php-')) { + $overrider = $this->addOverriddenPackage($this->overrides['php'], $package->getPrettyName()); + if ($package->getVersion() === $overrider->getVersion()) { + $actualText = 'same as actual'; + } else { + $actualText = 'actual: '.$package->getPrettyVersion(); + } + $overrider->setDescription($overrider->getDescription().' ('.$actualText.')'); + + return; + } + + parent::addPackage($package); + } + + private function addOverriddenPackage(array $override, $name = null) + { + $version = $this->versionParser->normalize($override['version']); + $package = new CompletePackage($name ?: $override['name'], $version, $override['version']); + $package->setDescription('Package overridden via config.platform'); + $package->setExtra(array('config.platform' => true)); + parent::addPackage($package); + + return $package; + } + + /** + * Parses the version and adds a new package to the repository + * + * @param string $name + * @param null|string $prettyVersion + */ + private function addExtension($name, $prettyVersion) + { + $extraDescription = null; + + try { + $version = $this->versionParser->normalize($prettyVersion); + } catch (\UnexpectedValueException $e) { + $extraDescription = ' (actual version: '.$prettyVersion.')'; + if (preg_match('{^(\d+\.\d+\.\d+(?:\.\d+)?)}', $prettyVersion, $match)) { + $prettyVersion = $match[1]; + } else { + $prettyVersion = '0'; + } + $version = $this->versionParser->normalize($prettyVersion); + } + + $packageName = $this->buildPackageName($name); + $ext = new CompletePackage($packageName, $version, $prettyVersion); + $ext->setDescription('The '.$name.' PHP extension'.$extraDescription); + $this->addPackage($ext); + } + + private function buildPackageName($name) + { + return 'ext-' . str_replace(' ', '-', $name); + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php b/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php new file mode 100644 index 0000000..5d3a2a6 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php @@ -0,0 +1,169 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\Config; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Util\RemoteFilesystem; +use Composer\Json\JsonFile; + +/** + * @author Jordi Boggiano + */ +class RepositoryFactory +{ + /** + * @param IOInterface $io + * @param Config $config + * @param string $repository + * @param bool $allowFilesystem + * @return array|mixed + */ + public static function configFromString(IOInterface $io, Config $config, $repository, $allowFilesystem = false) + { + if (0 === strpos($repository, 'http')) { + $repoConfig = array('type' => 'composer', 'url' => $repository); + } elseif ("json" === pathinfo($repository, PATHINFO_EXTENSION)) { + $json = new JsonFile($repository, Factory::createRemoteFilesystem($io, $config)); + $data = $json->read(); + if (!empty($data['packages']) || !empty($data['includes']) || !empty($data['provider-includes'])) { + $repoConfig = array('type' => 'composer', 'url' => 'file://' . strtr(realpath($repository), '\\', '/')); + } elseif ($allowFilesystem) { + $repoConfig = array('type' => 'filesystem', 'json' => $json); + } else { + throw new \InvalidArgumentException("Invalid repository URL ($repository) given. This file does not contain a valid composer repository."); + } + } elseif ('{' === substr($repository, 0, 1)) { + // assume it is a json object that makes a repo config + $repoConfig = JsonFile::parseJson($repository); + } else { + throw new \InvalidArgumentException("Invalid repository url ($repository) given. Has to be a .json file, an http url or a JSON object."); + } + + return $repoConfig; + } + + /** + * @param IOInterface $io + * @param Config $config + * @param string $repository + * @param bool $allowFilesystem + * @return RepositoryInterface + */ + public static function fromString(IOInterface $io, Config $config, $repository, $allowFilesystem = false) + { + $repoConfig = static::configFromString($io, $config, $repository, $allowFilesystem); + + return static::createRepo($io, $config, $repoConfig); + } + + /** + * @param IOInterface $io + * @param Config $config + * @param array $repoConfig + * @return RepositoryInterface + */ + public static function createRepo(IOInterface $io, Config $config, array $repoConfig) + { + $rm = static::manager($io, $config, null, Factory::createRemoteFilesystem($io, $config)); + $repos = static::createRepos($rm, array($repoConfig)); + + return reset($repos); + } + + /** + * @param IOInterface|null $io + * @param Config|null $config + * @param RepositoryManager|null $rm + * @return RepositoryInterface[] + */ + public static function defaultRepos(IOInterface $io = null, Config $config = null, RepositoryManager $rm = null) + { + if (!$config) { + $config = Factory::createConfig($io); + } + if ($io) { + $io->loadConfiguration($config); + } + if (!$rm) { + if (!$io) { + throw new \InvalidArgumentException('This function requires either an IOInterface or a RepositoryManager'); + } + $rm = static::manager($io, $config, null, Factory::createRemoteFilesystem($io, $config)); + } + + return static::createRepos($rm, $config->getRepositories()); + } + + /** + * @param IOInterface $io + * @param Config $config + * @param EventDispatcher $eventDispatcher + * @param RemoteFilesystem $rfs + * @return RepositoryManager + */ + public static function manager(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, RemoteFilesystem $rfs = null) + { + $rm = new RepositoryManager($io, $config, $eventDispatcher, $rfs); + $rm->setRepositoryClass('composer', 'Composer\Repository\ComposerRepository'); + $rm->setRepositoryClass('vcs', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('package', 'Composer\Repository\PackageRepository'); + $rm->setRepositoryClass('pear', 'Composer\Repository\PearRepository'); + $rm->setRepositoryClass('git', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('git-bitbucket', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('github', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('gitlab', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('svn', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('fossil', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('perforce', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('hg', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('hg-bitbucket', 'Composer\Repository\VcsRepository'); + $rm->setRepositoryClass('artifact', 'Composer\Repository\ArtifactRepository'); + $rm->setRepositoryClass('path', 'Composer\Repository\PathRepository'); + + return $rm; + } + + /** + * @return RepositoryInterface[] + */ + private static function createRepos(RepositoryManager $rm, array $repoConfigs) + { + $repos = array(); + + foreach ($repoConfigs as $index => $repo) { + if (is_string($repo)) { + throw new \UnexpectedValueException('"repositories" should be an array of repository definitions, only a single repository was given'); + } + if (!is_array($repo)) { + throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') should be an array, '.gettype($repo).' given'); + } + if (!isset($repo['type'])) { + throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') must have a type defined'); + } + $name = is_int($index) && isset($repo['url']) ? preg_replace('{^https?://}i', '', $repo['url']) : $index; + while (isset($repos[$name])) { + $name .= '2'; + } + if ($repo['type'] === 'filesystem') { + $repos[$name] = new FilesystemRepository($repo['json']); + } else { + $repos[$name] = $rm->createRepository($repo['type'], $repo, $index); + } + } + + return $repos; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php b/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php new file mode 100644 index 0000000..9a2aaf3 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php @@ -0,0 +1,74 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\PackageInterface; + +/** + * Repository interface. + * + * @author Nils Adermann + * @author Konstantin Kudryashov + * @author Jordi Boggiano + */ +interface RepositoryInterface extends \Countable +{ + const SEARCH_FULLTEXT = 0; + const SEARCH_NAME = 1; + + /** + * Checks if specified package registered (installed). + * + * @param PackageInterface $package package instance + * + * @return bool + */ + public function hasPackage(PackageInterface $package); + + /** + * Searches for the first match of a package by name and version. + * + * @param string $name package name + * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against + * + * @return PackageInterface|null + */ + public function findPackage($name, $constraint); + + /** + * Searches for all packages matching a name and optionally a version. + * + * @param string $name package name + * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against + * + * @return PackageInterface[] + */ + public function findPackages($name, $constraint = null); + + /** + * Returns list of registered packages. + * + * @return PackageInterface[] + */ + public function getPackages(); + + /** + * Searches the repository for packages containing the query + * + * @param string $query search query + * @param int $mode a set of SEARCH_* constants to search on, implementations should do a best effort only + * + * @return array[] an array of array('name' => '...', 'description' => '...') + */ + public function search($query, $mode = 0); +} diff --git a/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php b/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php new file mode 100644 index 0000000..87b82d1 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php @@ -0,0 +1,177 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\IO\IOInterface; +use Composer\Config; +use Composer\EventDispatcher\EventDispatcher; +use Composer\Package\PackageInterface; +use Composer\Util\RemoteFilesystem; + +/** + * Repositories manager. + * + * @author Jordi Boggiano + * @author Konstantin Kudryashov + * @author François Pluchino + */ +class RepositoryManager +{ + private $localRepository; + private $repositories = array(); + private $repositoryClasses = array(); + private $io; + private $config; + private $eventDispatcher; + private $rfs; + + public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, RemoteFilesystem $rfs = null) + { + $this->io = $io; + $this->config = $config; + $this->eventDispatcher = $eventDispatcher; + $this->rfs = $rfs; + } + + /** + * Searches for a package by it's name and version in managed repositories. + * + * @param string $name package name + * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against + * + * @return PackageInterface|null + */ + public function findPackage($name, $constraint) + { + foreach ($this->repositories as $repository) { + /** @var RepositoryInterface $repository */ + if ($package = $repository->findPackage($name, $constraint)) { + return $package; + } + } + + return null; + } + + /** + * Searches for all packages matching a name and optionally a version in managed repositories. + * + * @param string $name package name + * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against + * + * @return PackageInterface[] + */ + public function findPackages($name, $constraint) + { + $packages = array(); + + foreach ($this->getRepositories() as $repository) { + $packages = array_merge($packages, $repository->findPackages($name, $constraint)); + } + + return $packages; + } + + /** + * Adds repository + * + * @param RepositoryInterface $repository repository instance + */ + public function addRepository(RepositoryInterface $repository) + { + $this->repositories[] = $repository; + } + + /** + * Adds a repository to the beginning of the chain + * + * This is useful when injecting additional repositories that should trump Packagist, e.g. from a plugin. + * + * @param RepositoryInterface $repository repository instance + */ + public function prependRepository(RepositoryInterface $repository) + { + array_unshift($this->repositories, $repository); + } + + /** + * Returns a new repository for a specific installation type. + * + * @param string $type repository type + * @param array $config repository configuration + * @param string $name repository name + * @throws \InvalidArgumentException if repository for provided type is not registered + * @return RepositoryInterface + */ + public function createRepository($type, $config, $name = null) + { + if (!isset($this->repositoryClasses[$type])) { + throw new \InvalidArgumentException('Repository type is not registered: '.$type); + } + + if (isset($config['packagist']) && false === $config['packagist']) { + $this->io->writeError('Repository "'.$name.'" ('.json_encode($config).') has a packagist key which should be in its own repository definition'); + } + + $class = $this->repositoryClasses[$type]; + + $reflMethod = new \ReflectionMethod($class, '__construct'); + $params = $reflMethod->getParameters(); + if (isset($params[4]) && $params[4]->getClass() && $params[4]->getClass()->getName() === 'Composer\Util\RemoteFilesystem') { + return new $class($config, $this->io, $this->config, $this->eventDispatcher, $this->rfs); + } + + return new $class($config, $this->io, $this->config, $this->eventDispatcher); + } + + /** + * Stores repository class for a specific installation type. + * + * @param string $type installation type + * @param string $class class name of the repo implementation + */ + public function setRepositoryClass($type, $class) + { + $this->repositoryClasses[$type] = $class; + } + + /** + * Returns all repositories, except local one. + * + * @return RepositoryInterface[] + */ + public function getRepositories() + { + return $this->repositories; + } + + /** + * Sets local repository for the project. + * + * @param WritableRepositoryInterface $repository repository instance + */ + public function setLocalRepository(WritableRepositoryInterface $repository) + { + $this->localRepository = $repository; + } + + /** + * Returns local repository for the project. + * + * @return WritableRepositoryInterface + */ + public function getLocalRepository() + { + return $this->localRepository; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php b/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php new file mode 100644 index 0000000..b115d9c --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php @@ -0,0 +1,22 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +/** + * Thrown when a security problem, like a broken or missing signature + * + * @author Eric Daspet + */ +class RepositorySecurityException extends \Exception +{ +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php new file mode 100644 index 0000000..c360bad --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php @@ -0,0 +1,452 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Cache; +use Composer\Downloader\TransportException; +use Composer\Json\JsonFile; +use Composer\Util\Bitbucket; + +abstract class BitbucketDriver extends VcsDriver +{ + /** @var Cache */ + protected $cache; + protected $owner; + protected $repository; + protected $hasIssues; + protected $rootIdentifier; + protected $tags; + protected $branches; + protected $infoCache = array(); + protected $branchesUrl = ''; + protected $tagsUrl = ''; + protected $homeUrl = ''; + protected $website = ''; + protected $cloneHttpsUrl = ''; + + /** + * @var VcsDriver + */ + protected $fallbackDriver; + /** @var string|null if set either git or hg */ + protected $vcsType; + + /** + * {@inheritDoc} + */ + public function initialize() + { + preg_match('#^https?://bitbucket\.org/([^/]+)/([^/]+?)(\.git|/?)$#i', $this->url, $match); + $this->owner = $match[1]; + $this->repository = $match[2]; + $this->originUrl = 'bitbucket.org'; + $this->cache = new Cache( + $this->io, + implode('/', array( + $this->config->get('cache-repo-dir'), + $this->originUrl, + $this->owner, + $this->repository, + )) + ); + } + + /** + * {@inheritDoc} + */ + public function getUrl() + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getUrl(); + } + + return $this->cloneHttpsUrl; + } + + /** + * Attempts to fetch the repository data via the BitBucket API and + * sets some parameters which are used in other methods + * + * @return bool + */ + protected function getRepoData() + { + $resource = sprintf( + 'https://api.bitbucket.org/2.0/repositories/%s/%s?%s', + $this->owner, + $this->repository, + http_build_query( + array('fields' => '-project,-owner'), + null, + '&' + ) + ); + + $repoData = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource, true), $resource); + if ($this->fallbackDriver) { + return false; + } + $this->parseCloneUrls($repoData['links']['clone']); + + $this->hasIssues = !empty($repoData['has_issues']); + $this->branchesUrl = $repoData['links']['branches']['href']; + $this->tagsUrl = $repoData['links']['tags']['href']; + $this->homeUrl = $repoData['links']['html']['href']; + $this->website = $repoData['website']; + $this->vcsType = $repoData['scm']; + + return true; + } + + /** + * {@inheritDoc} + */ + public function getComposerInformation($identifier) + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getComposerInformation($identifier); + } + + if (!isset($this->infoCache[$identifier])) { + if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { + return $this->infoCache[$identifier] = JsonFile::parseJson($res); + } + + $composer = $this->getBaseComposerInformation($identifier); + + if ($composer) { + // specials for bitbucket + if (!isset($composer['support']['source'])) { + $label = array_search( + $identifier, + $this->getTags() + ) ?: array_search( + $identifier, + $this->getBranches() + ) ?: $identifier; + + if (array_key_exists($label, $tags = $this->getTags())) { + $hash = $tags[$label]; + } elseif (array_key_exists($label, $branches = $this->getBranches())) { + $hash = $branches[$label]; + } + + if (! isset($hash)) { + $composer['support']['source'] = sprintf( + 'https://%s/%s/%s/src', + $this->originUrl, + $this->owner, + $this->repository + ); + } else { + $composer['support']['source'] = sprintf( + 'https://%s/%s/%s/src/%s/?at=%s', + $this->originUrl, + $this->owner, + $this->repository, + $hash, + $label + ); + } + } + if (!isset($composer['support']['issues']) && $this->hasIssues) { + $composer['support']['issues'] = sprintf( + 'https://%s/%s/%s/issues', + $this->originUrl, + $this->owner, + $this->repository + ); + } + if (!isset($composer['homepage'])) { + $composer['homepage'] = empty($this->website) ? $this->homeUrl : $this->website; + } + } + + $this->infoCache[$identifier] = $composer; + + if ($this->shouldCache($identifier)) { + $this->cache->write($identifier, json_encode($composer)); + } + } + + return $this->infoCache[$identifier]; + } + + /** + * {@inheritdoc} + */ + public function getFileContent($file, $identifier) + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getFileContent($file, $identifier); + } + + if (strpos($identifier, '/') !== false) { + $branches = $this->getBranches(); + if (isset($branches[$identifier])) { + $identifier = $branches[$identifier]; + } + } + + $resource = sprintf( + 'https://api.bitbucket.org/2.0/repositories/%s/%s/src/%s/%s', + $this->owner, + $this->repository, + $identifier, + $file + ); + + return $this->getContentsWithOAuthCredentials($resource); + } + + /** + * {@inheritdoc} + */ + public function getChangeDate($identifier) + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getChangeDate($identifier); + } + + if (strpos($identifier, '/') !== false) { + $branches = $this->getBranches(); + if (isset($branches[$identifier])) { + $identifier = $branches[$identifier]; + } + } + + $resource = sprintf( + 'https://api.bitbucket.org/2.0/repositories/%s/%s/commit/%s?fields=date', + $this->owner, + $this->repository, + $identifier + ); + $commit = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource); + + return new \DateTime($commit['date']); + } + + /** + * {@inheritDoc} + */ + public function getSource($identifier) + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getSource($identifier); + } + + return array('type' => $this->vcsType, 'url' => $this->getUrl(), 'reference' => $identifier); + } + + /** + * {@inheritDoc} + */ + public function getDist($identifier) + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getDist($identifier); + } + + $url = sprintf( + 'https://bitbucket.org/%s/%s/get/%s.zip', + $this->owner, + $this->repository, + $identifier + ); + + return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); + } + + /** + * {@inheritDoc} + */ + public function getTags() + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getTags(); + } + + if (null === $this->tags) { + $this->tags = array(); + $resource = sprintf( + '%s?%s', + $this->tagsUrl, + http_build_query( + array( + 'pagelen' => 100, + 'fields' => 'values.name,values.target.hash,next', + 'sort' => '-target.date', + ), + null, + '&' + ) + ); + $hasNext = true; + while ($hasNext) { + $tagsData = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource); + foreach ($tagsData['values'] as $data) { + $this->tags[$data['name']] = $data['target']['hash']; + } + if (empty($tagsData['next'])) { + $hasNext = false; + } else { + $resource = $tagsData['next']; + } + } + if ($this->vcsType === 'hg') { + unset($this->tags['tip']); + } + } + + return $this->tags; + } + + /** + * {@inheritDoc} + */ + public function getBranches() + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getBranches(); + } + + if (null === $this->branches) { + $this->branches = array(); + $resource = sprintf( + '%s?%s', + $this->branchesUrl, + http_build_query( + array( + 'pagelen' => 100, + 'fields' => 'values.name,values.target.hash,values.heads,next', + 'sort' => '-target.date', + ), + null, + '&' + ) + ); + $hasNext = true; + while ($hasNext) { + $branchData = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource); + foreach ($branchData['values'] as $data) { + // skip headless branches which seem to be deleted branches that bitbucket nevertheless returns in the API + if ($this->vcsType === 'hg' && empty($data['heads'])) { + continue; + } + + $this->branches[$data['name']] = $data['target']['hash']; + } + if (empty($branchData['next'])) { + $hasNext = false; + } else { + $resource = $branchData['next']; + } + } + } + + return $this->branches; + } + + /** + * Get the remote content. + * + * @param string $url The URL of content + * @param bool $fetchingRepoData + * + * @return mixed The result + */ + protected function getContentsWithOAuthCredentials($url, $fetchingRepoData = false) + { + try { + return parent::getContents($url); + } catch (TransportException $e) { + $bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process, $this->remoteFilesystem); + + if (403 === $e->getCode() || (401 === $e->getCode() && strpos($e->getMessage(), 'Could not authenticate against') === 0)) { + if (!$this->io->hasAuthentication($this->originUrl) + && $bitbucketUtil->authorizeOAuth($this->originUrl) + ) { + return parent::getContents($url); + } + + if (!$this->io->isInteractive() && $fetchingRepoData) { + return $this->attemptCloneFallback(); + } + } + + throw $e; + } + } + + /** + * Generate an SSH URL + * + * @return string + */ + abstract protected function generateSshUrl(); + + protected function attemptCloneFallback() + { + try { + $this->setupFallbackDriver($this->generateSshUrl()); + } catch (\RuntimeException $e) { + $this->fallbackDriver = null; + + $this->io->writeError( + 'Failed to clone the ' . $this->generateSshUrl() . ' repository, try running in interactive mode' + . ' so that you can enter your Bitbucket OAuth consumer credentials' + ); + throw $e; + } + } + + /** + * @param string $url + * @return void + */ + abstract protected function setupFallbackDriver($url); + + /** + * @param array $cloneLinks + * @return void + */ + protected function parseCloneUrls(array $cloneLinks) + { + foreach ($cloneLinks as $cloneLink) { + if ($cloneLink['name'] === 'https') { + // Format: https://(user@)bitbucket.org/{user}/{repo} + // Strip username from URL (only present in clone URL's for private repositories) + $this->cloneHttpsUrl = preg_replace('/https:\/\/([^@]+@)?/', 'https://', $cloneLink['href']); + } + } + } + + /** + * @return array|null + */ + protected function getMainBranchData() + { + $resource = sprintf( + 'https://api.bitbucket.org/2.0/repositories/%s/%s?fields=mainbranch', + $this->owner, + $this->repository + ); + + $data = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource); + if (isset($data['mainbranch'])) { + return $data['mainbranch']; + } + + return null; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php new file mode 100644 index 0000000..491fafa --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php @@ -0,0 +1,243 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Cache; +use Composer\Config; +use Composer\Util\ProcessExecutor; +use Composer\Util\Filesystem; +use Composer\IO\IOInterface; + +/** + * @author BohwaZ + */ +class FossilDriver extends VcsDriver +{ + protected $tags; + protected $branches; + protected $rootIdentifier; + protected $repoFile; + protected $checkoutDir; + protected $infoCache = array(); + + /** + * {@inheritDoc} + */ + public function initialize() + { + // Make sure fossil is installed and reachable. + $this->checkFossil(); + + // Ensure we are allowed to use this URL by config. + $this->config->prohibitUrlByConfig($this->url, $this->io); + + // Only if url points to a locally accessible directory, assume it's the checkout directory. + // Otherwise, it should be something fossil can clone from. + if (Filesystem::isLocalPath($this->url) && is_dir($this->url)) { + $this->checkoutDir = $this->url; + } else { + if (!Cache::isUsable($this->config->get('cache-repo-dir')) || !Cache::isUsable($this->config->get('cache-vcs-dir'))) { + throw new \RuntimeException('FossilDriver requires a usable cache directory, and it looks like you set it to be disabled'); + } + + $localName = preg_replace('{[^a-z0-9]}i', '-', $this->url); + $this->repoFile = $this->config->get('cache-repo-dir') . '/' . $localName . '.fossil'; + $this->checkoutDir = $this->config->get('cache-vcs-dir') . '/' . $localName . '/'; + + $this->updateLocalRepo(); + } + + $this->getTags(); + $this->getBranches(); + } + + /** + * Check that fossil can be invoked via command line. + */ + protected function checkFossil() + { + if (0 !== $this->process->execute('fossil version', $ignoredOutput)) { + throw new \RuntimeException("fossil was not found, check that it is installed and in your PATH env.\n\n" . $this->process->getErrorOutput()); + } + } + + /** + * Clone or update existing local fossil repository. + */ + protected function updateLocalRepo() + { + $fs = new Filesystem(); + $fs->ensureDirectoryExists($this->checkoutDir); + + if (!is_writable(dirname($this->checkoutDir))) { + throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$this->checkoutDir.'" directory is not writable by the current user.'); + } + + // update the repo if it is a valid fossil repository + if (is_file($this->repoFile) && is_dir($this->checkoutDir) && 0 === $this->process->execute('fossil info', $output, $this->checkoutDir)) { + if (0 !== $this->process->execute('fossil pull', $output, $this->checkoutDir)) { + $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); + } + } else { + // clean up directory and do a fresh clone into it + $fs->removeDirectory($this->checkoutDir); + $fs->remove($this->repoFile); + + $fs->ensureDirectoryExists($this->checkoutDir); + + if (0 !== $this->process->execute(sprintf('fossil clone %s %s', ProcessExecutor::escape($this->url), ProcessExecutor::escape($this->repoFile)), $output)) { + $output = $this->process->getErrorOutput(); + + throw new \RuntimeException('Failed to clone '.$this->url.' to repository ' . $this->repoFile . "\n\n" .$output); + } + + if (0 !== $this->process->execute(sprintf('fossil open %s --nested', ProcessExecutor::escape($this->repoFile)), $output, $this->checkoutDir)) { + $output = $this->process->getErrorOutput(); + + throw new \RuntimeException('Failed to open repository '.$this->repoFile.' in ' . $this->checkoutDir . "\n\n" .$output); + } + } + } + + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + if (null === $this->rootIdentifier) { + $this->rootIdentifier = 'trunk'; + } + + return $this->rootIdentifier; + } + + /** + * {@inheritDoc} + */ + public function getUrl() + { + return $this->url; + } + + /** + * {@inheritDoc} + */ + public function getSource($identifier) + { + return array('type' => 'fossil', 'url' => $this->getUrl(), 'reference' => $identifier); + } + + /** + * {@inheritDoc} + */ + public function getDist($identifier) + { + return null; + } + + /** + * {@inheritdoc} + */ + public function getFileContent($file, $identifier) + { + $command = sprintf('fossil cat -r %s %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); + $this->process->execute($command, $content, $this->checkoutDir); + + if (!trim($content)) { + return null; + } + + return $content; + } + + /** + * {@inheritdoc} + */ + public function getChangeDate($identifier) + { + $this->process->execute('fossil finfo -b -n 1 composer.json', $output, $this->checkoutDir); + list($ckout, $date, $message) = explode(' ', trim($output), 3); + + return new \DateTime($date, new \DateTimeZone('UTC')); + } + + /** + * {@inheritDoc} + */ + public function getTags() + { + if (null === $this->tags) { + $tags = array(); + + $this->process->execute('fossil tag list', $output, $this->checkoutDir); + foreach ($this->process->splitLines($output) as $tag) { + $tags[$tag] = $tag; + } + + $this->tags = $tags; + } + + return $this->tags; + } + + /** + * {@inheritDoc} + */ + public function getBranches() + { + if (null === $this->branches) { + $branches = array(); + $bookmarks = array(); + + $this->process->execute('fossil branch list', $output, $this->checkoutDir); + foreach ($this->process->splitLines($output) as $branch) { + $branch = trim(preg_replace('/^\*/', '', trim($branch))); + $branches[$branch] = $branch; + } + + $this->branches = $branches; + } + + return $this->branches; + } + + /** + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?(?:chiselapp\.com|fossil\.))#i', $url)) { + return true; + } + + if (preg_match('!/fossil/|\.fossil!', $url)) { + return true; + } + + // local filesystem + if (Filesystem::isLocalPath($url)) { + $url = Filesystem::getPlatformPath($url); + if (!is_dir($url)) { + return false; + } + + $process = new ProcessExecutor($io); + // check whether there is a fossil repo in that path + if ($process->execute('fossil info', $output, $url) === 0) { + return true; + } + } + + return false; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php new file mode 100644 index 0000000..82d934b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php @@ -0,0 +1,91 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Config; +use Composer\IO\IOInterface; + +/** + * @author Per Bernhardt + */ +class GitBitbucketDriver extends BitbucketDriver +{ + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getRootIdentifier(); + } + + if (null === $this->rootIdentifier) { + if (! $this->getRepoData()) { + return $this->fallbackDriver->getRootIdentifier(); + } + + if ($this->vcsType !== 'git') { + throw new \RuntimeException( + $this->url.' does not appear to be a git repository, use '. + $this->cloneHttpsUrl.' if this is a mercurial bitbucket repository' + ); + } + + $mainBranchData = $this->getMainBranchData(); + $this->rootIdentifier = !empty($mainBranchData['name']) ? $mainBranchData['name'] : 'master'; + } + + return $this->rootIdentifier; + } + + /** + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + if (!preg_match('#^https?://bitbucket\.org/([^/]+)/(.+?)\.git$#i', $url)) { + return false; + } + + if (!extension_loaded('openssl')) { + $io->writeError('Skipping Bitbucket git driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); + + return false; + } + + return true; + } + + /** + * {@inheritdoc} + */ + protected function setupFallbackDriver($url) + { + $this->fallbackDriver = new GitDriver( + array('url' => $url), + $this->io, + $this->config, + $this->process, + $this->remoteFilesystem + ); + $this->fallbackDriver->initialize(); + } + + /** + * {@inheritdoc} + */ + protected function generateSshUrl() + { + return 'git@' . $this->originUrl . ':' . $this->owner.'/'.$this->repository.'.git'; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php new file mode 100644 index 0000000..cc6e3ed --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php @@ -0,0 +1,226 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Util\ProcessExecutor; +use Composer\Util\Filesystem; +use Composer\Util\Git as GitUtil; +use Composer\IO\IOInterface; +use Composer\Cache; +use Composer\Config; + +/** + * @author Jordi Boggiano + */ +class GitDriver extends VcsDriver +{ + protected $cache; + protected $tags; + protected $branches; + protected $rootIdentifier; + protected $repoDir; + protected $infoCache = array(); + + /** + * {@inheritDoc} + */ + public function initialize() + { + if (Filesystem::isLocalPath($this->url)) { + $this->url = preg_replace('{[\\/]\.git/?$}', '', $this->url); + $this->repoDir = $this->url; + $cacheUrl = realpath($this->url); + } else { + if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { + throw new \RuntimeException('GitDriver requires a usable cache directory, and it looks like you set it to be disabled'); + } + + $this->repoDir = $this->config->get('cache-vcs-dir') . '/' . preg_replace('{[^a-z0-9.]}i', '-', $this->url) . '/'; + + GitUtil::cleanEnv(); + + $fs = new Filesystem(); + $fs->ensureDirectoryExists(dirname($this->repoDir)); + + if (!is_writable(dirname($this->repoDir))) { + throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.dirname($this->repoDir).'" directory is not writable by the current user.'); + } + + if (preg_match('{^ssh://[^@]+@[^:]+:[^0-9]+}', $this->url)) { + throw new \InvalidArgumentException('The source URL '.$this->url.' is invalid, ssh URLs should have a port number after ":".'."\n".'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); + } + + $gitUtil = new GitUtil($this->io, $this->config, $this->process, $fs); + if (!$gitUtil->syncMirror($this->url, $this->repoDir)) { + $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated'); + } + + $cacheUrl = $this->url; + } + + $this->getTags(); + $this->getBranches(); + + $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $cacheUrl)); + } + + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + if (null === $this->rootIdentifier) { + $this->rootIdentifier = 'master'; + + // select currently checked out branch if master is not available + $this->process->execute('git branch --no-color', $output, $this->repoDir); + $branches = $this->process->splitLines($output); + if (!in_array('* master', $branches)) { + foreach ($branches as $branch) { + if ($branch && preg_match('{^\* +(\S+)}', $branch, $match)) { + $this->rootIdentifier = $match[1]; + break; + } + } + } + } + + return $this->rootIdentifier; + } + + /** + * {@inheritDoc} + */ + public function getUrl() + { + return $this->url; + } + + /** + * {@inheritDoc} + */ + public function getSource($identifier) + { + return array('type' => 'git', 'url' => $this->getUrl(), 'reference' => $identifier); + } + + /** + * {@inheritDoc} + */ + public function getDist($identifier) + { + return null; + } + + /** + * {@inheritdoc} + */ + public function getFileContent($file, $identifier) + { + $resource = sprintf('%s:%s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); + $this->process->execute(sprintf('git show %s', $resource), $content, $this->repoDir); + + if (!trim($content)) { + return null; + } + + return $content; + } + + /** + * {@inheritdoc} + */ + public function getChangeDate($identifier) + { + $this->process->execute(sprintf( + 'git -c log.showSignature=false log -1 --format=%%at %s', + ProcessExecutor::escape($identifier) + ), $output, $this->repoDir); + + return new \DateTime('@'.trim($output), new \DateTimeZone('UTC')); + } + + /** + * {@inheritDoc} + */ + public function getTags() + { + if (null === $this->tags) { + $this->tags = array(); + + $this->process->execute('git show-ref --tags --dereference', $output, $this->repoDir); + foreach ($output = $this->process->splitLines($output) as $tag) { + if ($tag && preg_match('{^([a-f0-9]{40}) refs/tags/(\S+?)(\^\{\})?$}', $tag, $match)) { + $this->tags[$match[2]] = $match[1]; + } + } + } + + return $this->tags; + } + + /** + * {@inheritDoc} + */ + public function getBranches() + { + if (null === $this->branches) { + $branches = array(); + + $this->process->execute('git branch --no-color --no-abbrev -v', $output, $this->repoDir); + foreach ($this->process->splitLines($output) as $branch) { + if ($branch && !preg_match('{^ *[^/]+/HEAD }', $branch)) { + if (preg_match('{^(?:\* )? *(\S+) *([a-f0-9]+)(?: .*)?$}', $branch, $match)) { + $branches[$match[1]] = $match[2]; + } + } + } + + $this->branches = $branches; + } + + return $this->branches; + } + + /** + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + if (preg_match('#(^git://|\.git/?$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) { + return true; + } + + // local filesystem + if (Filesystem::isLocalPath($url)) { + $url = Filesystem::getPlatformPath($url); + if (!is_dir($url)) { + return false; + } + + $process = new ProcessExecutor($io); + // check whether there is a git repo in that path + if ($process->execute('git tag', $output, $url) === 0) { + return true; + } + } + + if (!$deep) { + return false; + } + + $process = new ProcessExecutor($io); + + return $process->execute('git ls-remote --heads ' . ProcessExecutor::escape($url), $output) === 0; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php new file mode 100644 index 0000000..e44dd87 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php @@ -0,0 +1,476 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Config; +use Composer\Downloader\TransportException; +use Composer\Json\JsonFile; +use Composer\Cache; +use Composer\IO\IOInterface; +use Composer\Util\GitHub; + +/** + * @author Jordi Boggiano + */ +class GitHubDriver extends VcsDriver +{ + protected $cache; + protected $owner; + protected $repository; + protected $tags; + protected $branches; + protected $rootIdentifier; + protected $repoData; + protected $hasIssues; + protected $infoCache = array(); + protected $isPrivate = false; + + /** + * Git Driver + * + * @var GitDriver + */ + protected $gitDriver; + + /** + * {@inheritDoc} + */ + public function initialize() + { + preg_match('#^(?:(?:https?|git)://([^/]+)/|git@([^:]+):/?)([^/]+)/(.+?)(?:\.git|/)?$#', $this->url, $match); + $this->owner = $match[3]; + $this->repository = $match[4]; + $this->originUrl = strtolower(!empty($match[1]) ? $match[1] : $match[2]); + if ($this->originUrl === 'www.github.com') { + $this->originUrl = 'github.com'; + } + $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->owner.'/'.$this->repository); + + if ( $this->config->get('use-github-api') === false || (isset($this->repoConfig['no-api']) && $this->repoConfig['no-api'] ) ){ + $this->setupGitDriver($this->url); + + return; + } + + $this->fetchRootIdentifier(); + } + + public function getRepositoryUrl() + { + return 'https://'.$this->originUrl.'/'.$this->owner.'/'.$this->repository; + } + + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + if ($this->gitDriver) { + return $this->gitDriver->getRootIdentifier(); + } + + return $this->rootIdentifier; + } + + /** + * {@inheritDoc} + */ + public function getUrl() + { + if ($this->gitDriver) { + return $this->gitDriver->getUrl(); + } + + return 'https://' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; + } + + /** + * {@inheritDoc} + */ + protected function getApiUrl() + { + if ('github.com' === $this->originUrl) { + $apiUrl = 'api.github.com'; + } else { + $apiUrl = $this->originUrl . '/api/v3'; + } + + return 'https://' . $apiUrl; + } + + /** + * {@inheritDoc} + */ + public function getSource($identifier) + { + if ($this->gitDriver) { + return $this->gitDriver->getSource($identifier); + } + if ($this->isPrivate) { + // Private GitHub repositories should be accessed using the + // SSH version of the URL. + $url = $this->generateSshUrl(); + } else { + $url = $this->getUrl(); + } + + return array('type' => 'git', 'url' => $url, 'reference' => $identifier); + } + + /** + * {@inheritDoc} + */ + public function getDist($identifier) + { + $url = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/zipball/'.$identifier; + + return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); + } + + /** + * {@inheritDoc} + */ + public function getComposerInformation($identifier) + { + if ($this->gitDriver) { + return $this->gitDriver->getComposerInformation($identifier); + } + + if (!isset($this->infoCache[$identifier])) { + if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { + return $this->infoCache[$identifier] = JsonFile::parseJson($res); + } + + $composer = $this->getBaseComposerInformation($identifier); + + if ($composer) { + // specials for github + if (!isset($composer['support']['source'])) { + $label = array_search($identifier, $this->getTags()) ?: array_search($identifier, $this->getBranches()) ?: $identifier; + $composer['support']['source'] = sprintf('https://%s/%s/%s/tree/%s', $this->originUrl, $this->owner, $this->repository, $label); + } + if (!isset($composer['support']['issues']) && $this->hasIssues) { + $composer['support']['issues'] = sprintf('https://%s/%s/%s/issues', $this->originUrl, $this->owner, $this->repository); + } + } + + if ($this->shouldCache($identifier)) { + $this->cache->write($identifier, json_encode($composer)); + } + + $this->infoCache[$identifier] = $composer; + } + + return $this->infoCache[$identifier]; + } + + /** + * {@inheritdoc} + */ + public function getFileContent($file, $identifier) + { + if ($this->gitDriver) { + return $this->gitDriver->getFileContent($file, $identifier); + } + + $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/contents/' . $file . '?ref='.urlencode($identifier); + $resource = JsonFile::parseJson($this->getContents($resource)); + if (empty($resource['content']) || $resource['encoding'] !== 'base64' || !($content = base64_decode($resource['content']))) { + throw new \RuntimeException('Could not retrieve ' . $file . ' for '.$identifier); + } + + return $content; + } + + /** + * {@inheritdoc} + */ + public function getChangeDate($identifier) + { + if ($this->gitDriver) { + return $this->gitDriver->getChangeDate($identifier); + } + + $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/commits/'.urlencode($identifier); + $commit = JsonFile::parseJson($this->getContents($resource), $resource); + + return new \DateTime($commit['commit']['committer']['date']); + } + + /** + * {@inheritDoc} + */ + public function getTags() + { + if ($this->gitDriver) { + return $this->gitDriver->getTags(); + } + if (null === $this->tags) { + $this->tags = array(); + $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/tags?per_page=100'; + + do { + $tagsData = JsonFile::parseJson($this->getContents($resource), $resource); + foreach ($tagsData as $tag) { + $this->tags[$tag['name']] = $tag['commit']['sha']; + } + + $resource = $this->getNextPage(); + } while ($resource); + } + + return $this->tags; + } + + /** + * {@inheritDoc} + */ + public function getBranches() + { + if ($this->gitDriver) { + return $this->gitDriver->getBranches(); + } + if (null === $this->branches) { + $this->branches = array(); + $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/git/refs/heads?per_page=100'; + + $branchBlacklist = array('gh-pages'); + + do { + $branchData = JsonFile::parseJson($this->getContents($resource), $resource); + foreach ($branchData as $branch) { + $name = substr($branch['ref'], 11); + if (!in_array($name, $branchBlacklist)) { + $this->branches[$name] = $branch['object']['sha']; + } + } + + $resource = $this->getNextPage(); + } while ($resource); + } + + return $this->branches; + } + + /** + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + if (!preg_match('#^((?:https?|git)://([^/]+)/|git@([^:]+):/?)([^/]+)/(.+?)(?:\.git|/)?$#', $url, $matches)) { + return false; + } + + $originUrl = !empty($matches[2]) ? $matches[2] : $matches[3]; + if (!in_array(strtolower(preg_replace('{^www\.}i', '', $originUrl)), $config->get('github-domains'))) { + return false; + } + + if (!extension_loaded('openssl')) { + $io->writeError('Skipping GitHub driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); + + return false; + } + + return true; + } + + /** + * Gives back the loaded /repos// result + * + * @return array|null + */ + public function getRepoData() + { + $this->fetchRootIdentifier(); + + return $this->repoData; + } + + /** + * Generate an SSH URL + * + * @return string + */ + protected function generateSshUrl() + { + if (false !== strpos($this->originUrl, ':')) { + return 'ssh://git@' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; + } + + return 'git@' . $this->originUrl . ':'.$this->owner.'/'.$this->repository.'.git'; + } + + /** + * {@inheritDoc} + */ + protected function getContents($url, $fetchingRepoData = false) + { + try { + return parent::getContents($url); + } catch (TransportException $e) { + $gitHubUtil = new GitHub($this->io, $this->config, $this->process, $this->remoteFilesystem); + + switch ($e->getCode()) { + case 401: + case 404: + // try to authorize only if we are fetching the main /repos/foo/bar data, otherwise it must be a real 404 + if (!$fetchingRepoData) { + throw $e; + } + + if ($gitHubUtil->authorizeOAuth($this->originUrl)) { + return parent::getContents($url); + } + + if (!$this->io->isInteractive()) { + return $this->attemptCloneFallback(); + } + + $scopesIssued = array(); + $scopesNeeded = array(); + if ($headers = $e->getHeaders()) { + if ($scopes = $this->remoteFilesystem->findHeaderValue($headers, 'X-OAuth-Scopes')) { + $scopesIssued = explode(' ', $scopes); + } + if ($scopes = $this->remoteFilesystem->findHeaderValue($headers, 'X-Accepted-OAuth-Scopes')) { + $scopesNeeded = explode(' ', $scopes); + } + } + $scopesFailed = array_diff($scopesNeeded, $scopesIssued); + // non-authenticated requests get no scopesNeeded, so ask for credentials + // authenticated requests which failed some scopes should ask for new credentials too + if (!$headers || !count($scopesNeeded) || count($scopesFailed)) { + $gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'Your GitHub credentials are required to fetch private repository metadata ('.$this->url.')'); + } + + return parent::getContents($url); + + case 403: + if (!$this->io->hasAuthentication($this->originUrl) && $gitHubUtil->authorizeOAuth($this->originUrl)) { + return parent::getContents($url); + } + + if (!$this->io->isInteractive() && $fetchingRepoData) { + return $this->attemptCloneFallback(); + } + + $rateLimited = $gitHubUtil->isRateLimited($e->getHeaders()); + + if (!$this->io->hasAuthentication($this->originUrl)) { + if (!$this->io->isInteractive()) { + $this->io->writeError('GitHub API limit exhausted. Failed to get metadata for the '.$this->url.' repository, try running in interactive mode so that you can enter your GitHub credentials to increase the API limit'); + throw $e; + } + + $gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'API limit exhausted. Enter your GitHub credentials to get a larger API limit ('.$this->url.')'); + + return parent::getContents($url); + } + + if ($rateLimited) { + $rateLimit = $gitHubUtil->getRateLimit($e->getHeaders()); + $this->io->writeError(sprintf( + 'GitHub API limit (%d calls/hr) is exhausted. You are already authorized so you have to wait until %s before doing more requests', + $rateLimit['limit'], + $rateLimit['reset'] + )); + } + + throw $e; + + default: + throw $e; + } + } + } + + /** + * Fetch root identifier from GitHub + * + * @throws TransportException + */ + protected function fetchRootIdentifier() + { + if ($this->repoData) { + return; + } + + $repoDataUrl = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository; + + $this->repoData = JsonFile::parseJson($this->getContents($repoDataUrl, true), $repoDataUrl); + if (null === $this->repoData && null !== $this->gitDriver) { + return; + } + + $this->owner = $this->repoData['owner']['login']; + $this->repository = $this->repoData['name']; + + $this->isPrivate = !empty($this->repoData['private']); + if (isset($this->repoData['default_branch'])) { + $this->rootIdentifier = $this->repoData['default_branch']; + } elseif (isset($this->repoData['master_branch'])) { + $this->rootIdentifier = $this->repoData['master_branch']; + } else { + $this->rootIdentifier = 'master'; + } + $this->hasIssues = !empty($this->repoData['has_issues']); + } + + protected function attemptCloneFallback() + { + $this->isPrivate = true; + + try { + // If this repository may be private (hard to say for sure, + // GitHub returns 404 for private repositories) and we + // cannot ask for authentication credentials (because we + // are not interactive) then we fallback to GitDriver. + $this->setupGitDriver($this->generateSshUrl()); + + return; + } catch (\RuntimeException $e) { + $this->gitDriver = null; + + $this->io->writeError('Failed to clone the '.$this->generateSshUrl().' repository, try running in interactive mode so that you can enter your GitHub credentials'); + throw $e; + } + } + + protected function setupGitDriver($url) + { + $this->gitDriver = new GitDriver( + array('url' => $url), + $this->io, + $this->config, + $this->process, + $this->remoteFilesystem + ); + $this->gitDriver->initialize(); + } + + protected function getNextPage() + { + $headers = $this->remoteFilesystem->getLastHeaders(); + foreach ($headers as $header) { + if (preg_match('{^link:\s*(.+?)\s*$}i', $header, $match)) { + $links = explode(',', $match[1]); + foreach ($links as $link) { + if (preg_match('{<(.+?)>; *rel="next"}', $link, $match)) { + return $match[1]; + } + } + } + } + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php new file mode 100644 index 0000000..e346b03 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php @@ -0,0 +1,520 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Config; +use Composer\Cache; +use Composer\IO\IOInterface; +use Composer\Json\JsonFile; +use Composer\Downloader\TransportException; +use Composer\Util\RemoteFilesystem; +use Composer\Util\GitLab; + +/** + * Driver for GitLab API, use the Git driver for local checkouts. + * + * @author Henrik Bjørnskov + * @author Jérôme Tamarelle + */ +class GitLabDriver extends VcsDriver +{ + private $scheme; + private $namespace; + private $repository; + + /** + * @var array Project data returned by GitLab API + */ + private $project; + + /** + * @var array Keeps commits returned by GitLab API + */ + private $commits = array(); + + /** + * @var array List of tag => reference + */ + private $tags; + + /** + * @var array List of branch => reference + */ + private $branches; + + /** + * Git Driver + * + * @var GitDriver + */ + protected $gitDriver; + + /** + * Defaults to true unless we can make sure it is public + * + * @var bool defines whether the repo is private or not + */ + private $isPrivate = true; + + /** + * @var bool true if the origin has a port number or a path component in it + */ + private $hasNonstandardOrigin = false; + + const URL_REGEX = '#^(?:(?Phttps?)://(?P.+?)(?::(?P[0-9]+))?/|git@(?P[^:]+):)(?P.+)/(?P[^/]+?)(?:\.git|/)?$#'; + + /** + * Extracts information from the repository url. + * + * SSH urls use https by default. Set "secure-http": false on the repository config to use http instead. + * + * {@inheritDoc} + */ + public function initialize() + { + if (!preg_match(self::URL_REGEX, $this->url, $match)) { + throw new \InvalidArgumentException('The URL provided is invalid. It must be the HTTP URL of a GitLab project.'); + } + + $guessedDomain = !empty($match['domain']) ? $match['domain'] : $match['domain2']; + $configuredDomains = $this->config->get('gitlab-domains'); + $urlParts = explode('/', $match['parts']); + + $this->scheme = !empty($match['scheme']) + ? $match['scheme'] + : (isset($this->repoConfig['secure-http']) && $this->repoConfig['secure-http'] === false ? 'http' : 'https') + ; + $this->originUrl = $this->determineOrigin($configuredDomains, $guessedDomain, $urlParts, $match['port']); + + if (false !== strpos($this->originUrl, ':') || false !== strpos($this->originUrl, '/')) { + $this->hasNonstandardOrigin = true; + } + + $this->namespace = implode('/', $urlParts); + $this->repository = preg_replace('#(\.git)$#', '', $match['repo']); + + $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository); + + $this->fetchProject(); + } + + /** + * Updates the RemoteFilesystem instance. + * Mainly useful for tests. + * + * @internal + */ + public function setRemoteFilesystem(RemoteFilesystem $remoteFilesystem) + { + $this->remoteFilesystem = $remoteFilesystem; + } + + /** + * {@inheritdoc} + */ + public function getFileContent($file, $identifier) + { + if ($this->gitDriver) { + return $this->gitDriver->getFileContent($file, $identifier); + } + + // Convert the root identifier to a cacheable commit id + if (!preg_match('{[a-f0-9]{40}}i', $identifier)) { + $branches = $this->getBranches(); + if (isset($branches[$identifier])) { + $identifier = $branches[$identifier]; + } + } + + $resource = $this->getApiUrl().'/repository/files/'.$this->urlEncodeAll($file).'/raw?ref='.$identifier; + + try { + $content = $this->getContents($resource); + } catch (TransportException $e) { + if ($e->getCode() !== 404) { + throw $e; + } + + return null; + } + + return $content; + } + + /** + * {@inheritdoc} + */ + public function getChangeDate($identifier) + { + if ($this->gitDriver) { + return $this->gitDriver->getChangeDate($identifier); + } + + if (isset($this->commits[$identifier])) { + return new \DateTime($this->commits[$identifier]['committed_date']); + } + + return new \DateTime(); + } + + /** + * {@inheritDoc} + */ + public function getRepositoryUrl() + { + return $this->isPrivate ? $this->project['ssh_url_to_repo'] : $this->project['http_url_to_repo']; + } + + /** + * {@inheritDoc} + */ + public function getUrl() + { + if ($this->gitDriver) { + return $this->gitDriver->getUrl(); + } + + return $this->project['web_url']; + } + + /** + * {@inheritDoc} + */ + public function getDist($identifier) + { + $url = $this->getApiUrl().'/repository/archive.zip?sha='.$identifier; + + return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); + } + + /** + * {@inheritDoc} + */ + public function getSource($identifier) + { + if ($this->gitDriver) { + return $this->gitDriver->getSource($identifier); + } + + return array('type' => 'git', 'url' => $this->getRepositoryUrl(), 'reference' => $identifier); + } + + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + if ($this->gitDriver) { + return $this->gitDriver->getRootIdentifier(); + } + + return $this->project['default_branch']; + } + + /** + * {@inheritDoc} + */ + public function getBranches() + { + if ($this->gitDriver) { + return $this->gitDriver->getBranches(); + } + + if (!$this->branches) { + $this->branches = $this->getReferences('branches'); + } + + return $this->branches; + } + + /** + * {@inheritDoc} + */ + public function getTags() + { + if ($this->gitDriver) { + return $this->gitDriver->getTags(); + } + + if (!$this->tags) { + $this->tags = $this->getReferences('tags'); + } + + return $this->tags; + } + + /** + * @return string Base URL for GitLab API v3 + */ + public function getApiUrl() + { + return $this->scheme.'://'.$this->originUrl.'/api/v4/projects/'.$this->urlEncodeAll($this->namespace).'%2F'.$this->urlEncodeAll($this->repository); + } + + /** + * Urlencode all non alphanumeric characters. rawurlencode() can not be used as it does not encode `.` + * + * @param string $string + * @return string + */ + private function urlEncodeAll($string) + { + $encoded = ''; + for ($i = 0; isset($string[$i]); $i++) { + $character = $string[$i]; + if (!ctype_alnum($character) && !in_array($character, array('-', '_'), true)) { + $character = '%' . sprintf('%02X', ord($character)); + } + $encoded .= $character; + } + + return $encoded; + } + + /** + * @param string $type + * + * @return string[] where keys are named references like tags or branches and the value a sha + */ + protected function getReferences($type) + { + $perPage = 100; + $resource = $this->getApiUrl().'/repository/'.$type.'?per_page='.$perPage; + + $references = array(); + do { + $data = JsonFile::parseJson($this->getContents($resource), $resource); + + foreach ($data as $datum) { + $references[$datum['name']] = $datum['commit']['id']; + + // Keep the last commit date of a reference to avoid + // unnecessary API call when retrieving the composer file. + $this->commits[$datum['commit']['id']] = $datum['commit']; + } + + if (count($data) >= $perPage) { + $resource = $this->getNextPage(); + } else { + $resource = false; + } + } while ($resource); + + return $references; + } + + protected function fetchProject() + { + // we need to fetch the default branch from the api + $resource = $this->getApiUrl(); + $this->project = JsonFile::parseJson($this->getContents($resource, true), $resource); + if (isset($this->project['visibility'])) { + $this->isPrivate = $this->project['visibility'] !== 'public'; + } else { + // client is not authendicated, therefore repository has to be public + $this->isPrivate = false; + } + } + + protected function attemptCloneFallback() + { + try { + if ($this->isPrivate === false) { + $url = $this->generatePublicUrl(); + } else { + $url = $this->generateSshUrl(); + } + + // If this repository may be private and we + // cannot ask for authentication credentials (because we + // are not interactive) then we fallback to GitDriver. + $this->setupGitDriver($url); + + return; + } catch (\RuntimeException $e) { + $this->gitDriver = null; + + $this->io->writeError('Failed to clone the '.$url.' repository, try running in interactive mode so that you can enter your credentials'); + throw $e; + } + } + + /** + * Generate an SSH URL + * + * @return string + */ + protected function generateSshUrl() + { + if ($this->hasNonstandardOrigin) { + return 'ssh://git@'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository.'.git'; + } + + return 'git@' . $this->originUrl . ':'.$this->namespace.'/'.$this->repository.'.git'; + } + + protected function generatePublicUrl() + { + return $this->scheme . '://' . $this->originUrl . '/'.$this->namespace.'/'.$this->repository.'.git'; + } + + protected function setupGitDriver($url) + { + $this->gitDriver = new GitDriver( + array('url' => $url), + $this->io, + $this->config, + $this->process, + $this->remoteFilesystem + ); + $this->gitDriver->initialize(); + } + + /** + * {@inheritDoc} + */ + protected function getContents($url, $fetchingRepoData = false) + { + try { + $res = parent::getContents($url); + + if ($fetchingRepoData) { + $json = JsonFile::parseJson($res, $url); + + // force auth as the unauthenticated version of the API is broken + if (!isset($json['default_branch'])) { + if (!empty($json['id'])) { + $this->isPrivate = false; + } + + throw new TransportException('GitLab API seems to not be authenticated as it did not return a default_branch', 401); + } + } + + return $res; + } catch (TransportException $e) { + $gitLabUtil = new GitLab($this->io, $this->config, $this->process, $this->remoteFilesystem); + + switch ($e->getCode()) { + case 401: + case 404: + // try to authorize only if we are fetching the main /repos/foo/bar data, otherwise it must be a real 404 + if (!$fetchingRepoData) { + throw $e; + } + + if ($gitLabUtil->authorizeOAuth($this->originUrl)) { + return parent::getContents($url); + } + + if (!$this->io->isInteractive()) { + return $this->attemptCloneFallback(); + } + $this->io->writeError('Failed to download ' . $this->namespace . '/' . $this->repository . ':' . $e->getMessage() . ''); + $gitLabUtil->authorizeOAuthInteractively($this->scheme, $this->originUrl, 'Your credentials are required to fetch private repository metadata ('.$this->url.')'); + + return parent::getContents($url); + + case 403: + if (!$this->io->hasAuthentication($this->originUrl) && $gitLabUtil->authorizeOAuth($this->originUrl)) { + return parent::getContents($url); + } + + if (!$this->io->isInteractive() && $fetchingRepoData) { + return $this->attemptCloneFallback(); + } + + throw $e; + + default: + throw $e; + } + } + } + + /** + * Uses the config `gitlab-domains` to see if the driver supports the url for the + * repository given. + * + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + if (!preg_match(self::URL_REGEX, $url, $match)) { + return false; + } + + $scheme = !empty($match['scheme']) ? $match['scheme'] : null; + $guessedDomain = !empty($match['domain']) ? $match['domain'] : $match['domain2']; + $urlParts = explode('/', $match['parts']); + + if (false === self::determineOrigin((array) $config->get('gitlab-domains'), $guessedDomain, $urlParts, $match['port'])) { + return false; + } + + if ('https' === $scheme && !extension_loaded('openssl')) { + $io->writeError('Skipping GitLab driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); + + return false; + } + + return true; + } + + private function getNextPage() + { + $headers = $this->remoteFilesystem->getLastHeaders(); + foreach ($headers as $header) { + if (preg_match('{^link:\s*(.+?)\s*$}i', $header, $match)) { + $links = explode(',', $match[1]); + foreach ($links as $link) { + if (preg_match('{<(.+?)>; *rel="next"}', $link, $match)) { + return $match[1]; + } + } + } + } + } + + /** + * @param array $configuredDomains + * @param string $guessedDomain + * @param array $urlParts + * @return bool|string + */ + private static function determineOrigin(array $configuredDomains, $guessedDomain, array &$urlParts, $portNumber) + { + $guessedDomain = strtolower($guessedDomain); + + if (in_array($guessedDomain, $configuredDomains) || ($portNumber && in_array($guessedDomain.':'.$portNumber, $configuredDomains))) { + if ($portNumber) { + return $guessedDomain.':'.$portNumber; + } + return $guessedDomain; + } + + if ($portNumber) { + $guessedDomain .= ':'.$portNumber; + } + + while (null !== ($part = array_shift($urlParts))) { + $guessedDomain .= '/' . $part; + + if (in_array($guessedDomain, $configuredDomains) || ($portNumber && in_array(preg_replace('{:\d+}', '', $guessedDomain), $configuredDomains))) { + return $guessedDomain; + } + } + + return false; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php new file mode 100644 index 0000000..1cf630d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php @@ -0,0 +1,91 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Config; +use Composer\IO\IOInterface; + +/** + * @author Per Bernhardt + */ +class HgBitbucketDriver extends BitbucketDriver +{ + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + if ($this->fallbackDriver) { + return $this->fallbackDriver->getRootIdentifier(); + } + + if (null === $this->rootIdentifier) { + if (! $this->getRepoData()) { + return $this->fallbackDriver->getRootIdentifier(); + } + + if ($this->vcsType !== 'hg') { + throw new \RuntimeException( + $this->url.' does not appear to be a mercurial repository, use '. + $this->cloneHttpsUrl.' if this is a git bitbucket repository' + ); + } + + $mainBranchData = $this->getMainBranchData(); + $this->rootIdentifier = !empty($mainBranchData['name']) ? $mainBranchData['name'] : 'default'; + } + + return $this->rootIdentifier; + } + + /** + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + if (!preg_match('#^https?://bitbucket\.org/([^/]+)/([^/]+)/?$#i', $url)) { + return false; + } + + if (!extension_loaded('openssl')) { + $io->writeError('Skipping Bitbucket hg driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); + + return false; + } + + return true; + } + + /** + * {@inheritdoc} + */ + protected function setupFallbackDriver($url) + { + $this->fallbackDriver = new HgDriver( + array('url' => $url), + $this->io, + $this->config, + $this->process, + $this->remoteFilesystem + ); + $this->fallbackDriver->initialize(); + } + + /** + * {@inheritdoc} + */ + protected function generateSshUrl() + { + return 'ssh://hg@' . $this->originUrl . '/' . $this->owner.'/'.$this->repository; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php new file mode 100644 index 0000000..04a3634 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php @@ -0,0 +1,236 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Config; +use Composer\Cache; +use Composer\Util\Hg as HgUtils; +use Composer\Util\ProcessExecutor; +use Composer\Util\Filesystem; +use Composer\IO\IOInterface; + +/** + * @author Per Bernhardt + */ +class HgDriver extends VcsDriver +{ + protected $tags; + protected $branches; + protected $rootIdentifier; + protected $repoDir; + protected $infoCache = array(); + + /** + * {@inheritDoc} + */ + public function initialize() + { + if (Filesystem::isLocalPath($this->url)) { + $this->repoDir = $this->url; + } else { + if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { + throw new \RuntimeException('HgDriver requires a usable cache directory, and it looks like you set it to be disabled'); + } + + $cacheDir = $this->config->get('cache-vcs-dir'); + $this->repoDir = $cacheDir . '/' . preg_replace('{[^a-z0-9]}i', '-', $this->url) . '/'; + + $fs = new Filesystem(); + $fs->ensureDirectoryExists($cacheDir); + + if (!is_writable(dirname($this->repoDir))) { + throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$cacheDir.'" directory is not writable by the current user.'); + } + + // Ensure we are allowed to use this URL by config + $this->config->prohibitUrlByConfig($this->url, $this->io); + + $hgUtils = new HgUtils($this->io, $this->config, $this->process); + + // update the repo if it is a valid hg repository + if (is_dir($this->repoDir) && 0 === $this->process->execute('hg summary', $output, $this->repoDir)) { + if (0 !== $this->process->execute('hg pull', $output, $this->repoDir)) { + $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); + } + } else { + // clean up directory and do a fresh clone into it + $fs->removeDirectory($this->repoDir); + + $repoDir = $this->repoDir; + $command = function ($url) use ($repoDir) { + return sprintf('hg clone --noupdate %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($repoDir)); + }; + + $hgUtils->runCommand($command, $this->url, null); + } + } + + $this->getTags(); + $this->getBranches(); + } + + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + if (null === $this->rootIdentifier) { + $this->process->execute(sprintf('hg tip --template "{node}"'), $output, $this->repoDir); + $output = $this->process->splitLines($output); + $this->rootIdentifier = $output[0]; + } + + return $this->rootIdentifier; + } + + /** + * {@inheritDoc} + */ + public function getUrl() + { + return $this->url; + } + + /** + * {@inheritDoc} + */ + public function getSource($identifier) + { + return array('type' => 'hg', 'url' => $this->getUrl(), 'reference' => $identifier); + } + + /** + * {@inheritDoc} + */ + public function getDist($identifier) + { + return null; + } + + /** + * {@inheritdoc} + */ + public function getFileContent($file, $identifier) + { + $resource = sprintf('hg cat -r %s %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); + $this->process->execute($resource, $content, $this->repoDir); + + if (!trim($content)) { + return; + } + + return $content; + } + + /** + * {@inheritdoc} + */ + public function getChangeDate($identifier) + { + $this->process->execute( + sprintf( + 'hg log --template "{date|rfc3339date}" -r %s', + ProcessExecutor::escape($identifier) + ), + $output, + $this->repoDir + ); + + return new \DateTime(trim($output), new \DateTimeZone('UTC')); + } + + /** + * {@inheritDoc} + */ + public function getTags() + { + if (null === $this->tags) { + $tags = array(); + + $this->process->execute('hg tags', $output, $this->repoDir); + foreach ($this->process->splitLines($output) as $tag) { + if ($tag && preg_match('(^([^\s]+)\s+\d+:(.*)$)', $tag, $match)) { + $tags[$match[1]] = $match[2]; + } + } + unset($tags['tip']); + + $this->tags = $tags; + } + + return $this->tags; + } + + /** + * {@inheritDoc} + */ + public function getBranches() + { + if (null === $this->branches) { + $branches = array(); + $bookmarks = array(); + + $this->process->execute('hg branches', $output, $this->repoDir); + foreach ($this->process->splitLines($output) as $branch) { + if ($branch && preg_match('(^([^\s]+)\s+\d+:([a-f0-9]+))', $branch, $match)) { + $branches[$match[1]] = $match[2]; + } + } + + $this->process->execute('hg bookmarks', $output, $this->repoDir); + foreach ($this->process->splitLines($output) as $branch) { + if ($branch && preg_match('(^(?:[\s*]*)([^\s]+)\s+\d+:(.*)$)', $branch, $match)) { + $bookmarks[$match[1]] = $match[2]; + } + } + + // Branches will have preference over bookmarks + $this->branches = array_merge($bookmarks, $branches); + } + + return $this->branches; + } + + /** + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + if (preg_match('#(^(?:https?|ssh)://(?:[^@]+@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { + return true; + } + + // local filesystem + if (Filesystem::isLocalPath($url)) { + $url = Filesystem::getPlatformPath($url); + if (!is_dir($url)) { + return false; + } + + $process = new ProcessExecutor($io); + // check whether there is a hg repo in that path + if ($process->execute('hg summary', $output, $url) === 0) { + return true; + } + } + + if (!$deep) { + return false; + } + + $processExecutor = new ProcessExecutor($io); + $exit = $processExecutor->execute(sprintf('hg identify %s', ProcessExecutor::escape($url)), $ignored); + + return $exit === 0; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php new file mode 100644 index 0000000..09b5d4b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php @@ -0,0 +1,186 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Config; +use Composer\Cache; +use Composer\IO\IOInterface; +use Composer\Util\ProcessExecutor; +use Composer\Util\Perforce; + +/** + * @author Matt Whittom + */ +class PerforceDriver extends VcsDriver +{ + protected $depot; + protected $branch; + /** @var Perforce */ + protected $perforce; + + /** + * {@inheritDoc} + */ + public function initialize() + { + $this->depot = $this->repoConfig['depot']; + $this->branch = ''; + if (!empty($this->repoConfig['branch'])) { + $this->branch = $this->repoConfig['branch']; + } + + $this->initPerforce($this->repoConfig); + $this->perforce->p4Login(); + $this->perforce->checkStream(); + + $this->perforce->writeP4ClientSpec(); + $this->perforce->connectClient(); + + return true; + } + + private function initPerforce($repoConfig) + { + if (!empty($this->perforce)) { + return; + } + + if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { + throw new \RuntimeException('PerforceDriver requires a usable cache directory, and it looks like you set it to be disabled'); + } + + $repoDir = $this->config->get('cache-vcs-dir') . '/' . $this->depot; + $this->perforce = Perforce::create($repoConfig, $this->getUrl(), $repoDir, $this->process, $this->io); + } + + /** + * {@inheritdoc} + */ + public function getFileContent($file, $identifier) + { + return $this->perforce->getFileContent($file, $identifier); + } + + /** + * {@inheritdoc} + */ + public function getChangeDate($identifier) + { + return null; + } + + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + return $this->branch; + } + + /** + * {@inheritDoc} + */ + public function getBranches() + { + return $this->perforce->getBranches(); + } + + /** + * {@inheritDoc} + */ + public function getTags() + { + return $this->perforce->getTags(); + } + + /** + * {@inheritDoc} + */ + public function getDist($identifier) + { + return null; + } + + /** + * {@inheritDoc} + */ + public function getSource($identifier) + { + $source = array( + 'type' => 'perforce', + 'url' => $this->repoConfig['url'], + 'reference' => $identifier, + 'p4user' => $this->perforce->getUser(), + ); + + return $source; + } + + /** + * {@inheritDoc} + */ + public function getUrl() + { + return $this->url; + } + + /** + * {@inheritDoc} + */ + public function hasComposerFile($identifier) + { + $composerInfo = $this->perforce->getComposerInformation('//' . $this->depot . '/' . $identifier); + $composerInfoIdentifier = $identifier; + + return !empty($composerInfo); + } + + /** + * {@inheritDoc} + */ + public function getContents($url) + { + return false; + } + + /** + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + if ($deep || preg_match('#\b(perforce|p4)\b#i', $url)) { + return Perforce::checkServerExists($url, new ProcessExecutor($io)); + } + + return false; + } + + /** + * {@inheritDoc} + */ + public function cleanup() + { + $this->perforce->cleanupClientSpec(); + $this->perforce = null; + } + + public function getDepot() + { + return $this->depot; + } + + public function getBranch() + { + return $this->branch; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php new file mode 100644 index 0000000..a8f0c4a --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php @@ -0,0 +1,397 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Cache; +use Composer\Config; +use Composer\Json\JsonFile; +use Composer\Util\ProcessExecutor; +use Composer\Util\Filesystem; +use Composer\Util\Svn as SvnUtil; +use Composer\IO\IOInterface; +use Composer\Downloader\TransportException; + +/** + * @author Jordi Boggiano + * @author Till Klampaeckel + */ +class SvnDriver extends VcsDriver +{ + /** + * @var Cache + */ + protected $cache; + protected $baseUrl; + protected $tags; + protected $branches; + protected $rootIdentifier; + protected $infoCache = array(); + + protected $trunkPath = 'trunk'; + protected $branchesPath = 'branches'; + protected $tagsPath = 'tags'; + protected $packagePath = ''; + protected $cacheCredentials = true; + + /** + * @var \Composer\Util\Svn + */ + private $util; + + /** + * {@inheritDoc} + */ + public function initialize() + { + $this->url = $this->baseUrl = rtrim(self::normalizeUrl($this->url), '/'); + + SvnUtil::cleanEnv(); + + if (isset($this->repoConfig['trunk-path'])) { + $this->trunkPath = $this->repoConfig['trunk-path']; + } + if (isset($this->repoConfig['branches-path'])) { + $this->branchesPath = $this->repoConfig['branches-path']; + } + if (isset($this->repoConfig['tags-path'])) { + $this->tagsPath = $this->repoConfig['tags-path']; + } + if (array_key_exists('svn-cache-credentials', $this->repoConfig)) { + $this->cacheCredentials = (bool) $this->repoConfig['svn-cache-credentials']; + } + if (isset($this->repoConfig['package-path'])) { + $this->packagePath = '/' . trim($this->repoConfig['package-path'], '/'); + } + + if (false !== ($pos = strrpos($this->url, '/' . $this->trunkPath))) { + $this->baseUrl = substr($this->url, 0, $pos); + } + + $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $this->baseUrl)); + + $this->getBranches(); + $this->getTags(); + } + + /** + * {@inheritDoc} + */ + public function getRootIdentifier() + { + return $this->rootIdentifier ?: $this->trunkPath; + } + + /** + * {@inheritDoc} + */ + public function getUrl() + { + return $this->url; + } + + /** + * {@inheritDoc} + */ + public function getSource($identifier) + { + return array('type' => 'svn', 'url' => $this->baseUrl, 'reference' => $identifier); + } + + /** + * {@inheritDoc} + */ + public function getDist($identifier) + { + return null; + } + + /** + * {@inheritdoc} + */ + protected function shouldCache($identifier) + { + return $this->cache && preg_match('{@\d+$}', $identifier); + } + + /** + * {@inheritdoc} + */ + public function getComposerInformation($identifier) + { + if (!isset($this->infoCache[$identifier])) { + if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier.'.json')) { + return $this->infoCache[$identifier] = JsonFile::parseJson($res); + } + + try { + $composer = $this->getBaseComposerInformation($identifier); + } catch (TransportException $e) { + $message = $e->getMessage(); + if (stripos($message, 'path not found') === false && stripos($message, 'svn: warning: W160013') === false) { + throw $e; + } + // remember a not-existent composer.json + $composer = ''; + } + + if ($this->shouldCache($identifier)) { + $this->cache->write($identifier.'.json', json_encode($composer)); + } + + $this->infoCache[$identifier] = $composer; + } + + return $this->infoCache[$identifier]; + } + + /** + * @param string $file + * @param string $identifier + */ + public function getFileContent($file, $identifier) + { + $identifier = '/' . trim($identifier, '/') . '/'; + + preg_match('{^(.+?)(@\d+)?/$}', $identifier, $match); + if (!empty($match[2])) { + $path = $match[1]; + $rev = $match[2]; + } else { + $path = $identifier; + $rev = ''; + } + + try { + $resource = $path.$file; + $output = $this->execute('svn cat', $this->baseUrl . $resource . $rev); + if (!trim($output)) { + return null; + } + } catch (\RuntimeException $e) { + throw new TransportException($e->getMessage()); + } + + return $output; + } + + /** + * {@inheritdoc} + */ + public function getChangeDate($identifier) + { + $identifier = '/' . trim($identifier, '/') . '/'; + + preg_match('{^(.+?)(@\d+)?/$}', $identifier, $match); + if (!empty($match[2])) { + $path = $match[1]; + $rev = $match[2]; + } else { + $path = $identifier; + $rev = ''; + } + + $output = $this->execute('svn info', $this->baseUrl . $path . $rev); + foreach ($this->process->splitLines($output) as $line) { + if ($line && preg_match('{^Last Changed Date: ([^(]+)}', $line, $match)) { + return new \DateTime($match[1], new \DateTimeZone('UTC')); + } + } + + return null; + } + + /** + * {@inheritDoc} + */ + public function getTags() + { + if (null === $this->tags) { + $this->tags = array(); + + if ($this->tagsPath !== false) { + $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsPath); + if ($output) { + foreach ($this->process->splitLines($output) as $line) { + $line = trim($line); + if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { + if (isset($match[1]) && isset($match[2]) && $match[2] !== './') { + $this->tags[rtrim($match[2], '/')] = $this->buildIdentifier( + '/' . $this->tagsPath . '/' . $match[2], + $match[1] + ); + } + } + } + } + } + } + + return $this->tags; + } + + /** + * {@inheritDoc} + */ + public function getBranches() + { + if (null === $this->branches) { + $this->branches = array(); + + if (false === $this->trunkPath) { + $trunkParent = $this->baseUrl . '/'; + } else { + $trunkParent = $this->baseUrl . '/' . $this->trunkPath; + } + + $output = $this->execute('svn ls --verbose', $trunkParent); + if ($output) { + foreach ($this->process->splitLines($output) as $line) { + $line = trim($line); + if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { + if (isset($match[1]) && isset($match[2]) && $match[2] === './') { + $this->branches['trunk'] = $this->buildIdentifier( + '/' . $this->trunkPath, + $match[1] + ); + $this->rootIdentifier = $this->branches['trunk']; + break; + } + } + } + } + unset($output); + + if ($this->branchesPath !== false) { + $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesPath); + if ($output) { + foreach ($this->process->splitLines(trim($output)) as $line) { + $line = trim($line); + if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { + if (isset($match[1]) && isset($match[2]) && $match[2] !== './') { + $this->branches[rtrim($match[2], '/')] = $this->buildIdentifier( + '/' . $this->branchesPath . '/' . $match[2], + $match[1] + ); + } + } + } + } + } + } + + return $this->branches; + } + + /** + * {@inheritDoc} + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false) + { + $url = self::normalizeUrl($url); + if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) { + return true; + } + + // proceed with deep check for local urls since they are fast to process + if (!$deep && !Filesystem::isLocalPath($url)) { + return false; + } + + $processExecutor = new ProcessExecutor($io); + + $exit = $processExecutor->execute( + "svn info --non-interactive ".ProcessExecutor::escape($url), + $ignoredOutput + ); + + if ($exit === 0) { + // This is definitely a Subversion repository. + return true; + } + + // Subversion client 1.7 and older + if (false !== stripos($processExecutor->getErrorOutput(), 'authorization failed:')) { + // This is likely a remote Subversion repository that requires + // authentication. We will handle actual authentication later. + return true; + } + + // Subversion client 1.8 and newer + if (false !== stripos($processExecutor->getErrorOutput(), 'Authentication failed')) { + // This is likely a remote Subversion or newer repository that requires + // authentication. We will handle actual authentication later. + return true; + } + + return false; + } + + /** + * An absolute path (leading '/') is converted to a file:// url. + * + * @param string $url + * + * @return string + */ + protected static function normalizeUrl($url) + { + $fs = new Filesystem(); + if ($fs->isAbsolutePath($url)) { + return 'file://' . strtr($url, '\\', '/'); + } + + return $url; + } + + /** + * Execute an SVN command and try to fix up the process with credentials + * if necessary. + * + * @param string $command The svn command to run. + * @param string $url The SVN URL. + * @throws \RuntimeException + * @return string + */ + protected function execute($command, $url) + { + if (null === $this->util) { + $this->util = new SvnUtil($this->baseUrl, $this->io, $this->config, $this->process); + $this->util->setCacheCredentials($this->cacheCredentials); + } + + try { + return $this->util->execute($command, $url); + } catch (\RuntimeException $e) { + if (null === $this->util->binaryVersion()) { + throw new \RuntimeException('Failed to load '.$this->url.', svn was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput()); + } + + throw new \RuntimeException( + 'Repository '.$this->url.' could not be processed, '.$e->getMessage() + ); + } + } + + /** + * Build the identifier respecting "package-path" config option + * + * @param string $baseDir The path to trunk/branch/tag + * @param int $revision The revision mark to add to identifier + * + * @return string + */ + protected function buildIdentifier($baseDir, $revision) + { + return rtrim($baseDir, '/') . $this->packagePath . '/@' . $revision; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php new file mode 100644 index 0000000..5227630 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php @@ -0,0 +1,175 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Cache; +use Composer\Downloader\TransportException; +use Composer\Config; +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\Json\JsonFile; +use Composer\Util\ProcessExecutor; +use Composer\Util\RemoteFilesystem; +use Composer\Util\Filesystem; + +/** + * A driver implementation for driver with authentication interaction. + * + * @author François Pluchino + */ +abstract class VcsDriver implements VcsDriverInterface +{ + /** @var string */ + protected $url; + /** @var string */ + protected $originUrl; + /** @var array */ + protected $repoConfig; + /** @var IOInterface */ + protected $io; + /** @var Config */ + protected $config; + /** @var ProcessExecutor */ + protected $process; + /** @var RemoteFilesystem */ + protected $remoteFilesystem; + /** @var array */ + protected $infoCache = array(); + /** @var Cache */ + protected $cache; + + /** + * Constructor. + * + * @param array $repoConfig The repository configuration + * @param IOInterface $io The IO instance + * @param Config $config The composer configuration + * @param ProcessExecutor $process Process instance, injectable for mocking + * @param RemoteFilesystem $remoteFilesystem Remote Filesystem, injectable for mocking + */ + final public function __construct(array $repoConfig, IOInterface $io, Config $config, ProcessExecutor $process = null, RemoteFilesystem $remoteFilesystem = null) + { + if (Filesystem::isLocalPath($repoConfig['url'])) { + $repoConfig['url'] = Filesystem::getPlatformPath($repoConfig['url']); + } + + $this->url = $repoConfig['url']; + $this->originUrl = $repoConfig['url']; + $this->repoConfig = $repoConfig; + $this->io = $io; + $this->config = $config; + $this->process = $process ?: new ProcessExecutor($io); + $this->remoteFilesystem = $remoteFilesystem ?: Factory::createRemoteFilesystem($this->io, $config); + } + + /** + * Returns whether or not the given $identifier should be cached or not. + * + * @param string $identifier + * @return bool + */ + protected function shouldCache($identifier) + { + return $this->cache && preg_match('{[a-f0-9]{40}}i', $identifier); + } + + /** + * {@inheritdoc} + */ + public function getComposerInformation($identifier) + { + if (!isset($this->infoCache[$identifier])) { + if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { + return $this->infoCache[$identifier] = JsonFile::parseJson($res); + } + + $composer = $this->getBaseComposerInformation($identifier); + + if ($this->shouldCache($identifier)) { + $this->cache->write($identifier, json_encode($composer)); + } + + $this->infoCache[$identifier] = $composer; + } + + return $this->infoCache[$identifier]; + } + + protected function getBaseComposerInformation($identifier) + { + $composerFileContent = $this->getFileContent('composer.json', $identifier); + + if (!$composerFileContent) { + return null; + } + + $composer = JsonFile::parseJson($composerFileContent, $identifier . ':composer.json'); + + if (empty($composer['time']) && $changeDate = $this->getChangeDate($identifier)) { + $composer['time'] = $changeDate->format(DATE_RFC3339); + } + + return $composer; + } + + /** + * {@inheritDoc} + */ + public function hasComposerFile($identifier) + { + try { + return (bool) $this->getComposerInformation($identifier); + } catch (TransportException $e) { + } + + return false; + } + + /** + * Get the https or http protocol depending on SSL support. + * + * Call this only if you know that the server supports both. + * + * @return string The correct type of protocol + */ + protected function getScheme() + { + if (extension_loaded('openssl')) { + return 'https'; + } + + return 'http'; + } + + /** + * Get the remote content. + * + * @param string $url The URL of content + * + * @return mixed The result + */ + protected function getContents($url) + { + $options = isset($this->repoConfig['options']) ? $this->repoConfig['options'] : array(); + + return $this->remoteFilesystem->getContents($this->originUrl, $url, false, $options); + } + + /** + * {@inheritDoc} + */ + public function cleanup() + { + return; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php b/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php new file mode 100644 index 0000000..5e3bcec --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php @@ -0,0 +1,117 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository\Vcs; + +use Composer\Config; +use Composer\IO\IOInterface; + +/** + * @author Jordi Boggiano + */ +interface VcsDriverInterface +{ + /** + * Initializes the driver (git clone, svn checkout, fetch info etc) + */ + public function initialize(); + + /** + * Return the composer.json file information + * + * @param string $identifier Any identifier to a specific branch/tag/commit + * @return array containing all infos from the composer.json file + */ + public function getComposerInformation($identifier); + + /** + * Return the content of $file or null if the file does not exist. + * + * @param string $file + * @param string $identifier + * @return string + */ + public function getFileContent($file, $identifier); + + /** + * Get the changedate for $identifier. + * + * @param string $identifier + * @return \DateTime + */ + public function getChangeDate($identifier); + + /** + * Return the root identifier (trunk, master, default/tip ..) + * + * @return string Identifier + */ + public function getRootIdentifier(); + + /** + * Return list of branches in the repository + * + * @return array Branch names as keys, identifiers as values + */ + public function getBranches(); + + /** + * Return list of tags in the repository + * + * @return array Tag names as keys, identifiers as values + */ + public function getTags(); + + /** + * @param string $identifier Any identifier to a specific branch/tag/commit + * @return array With type, url reference and shasum keys. + */ + public function getDist($identifier); + + /** + * @param string $identifier Any identifier to a specific branch/tag/commit + * @return array With type, url and reference keys. + */ + public function getSource($identifier); + + /** + * Return the URL of the repository + * + * @return string + */ + public function getUrl(); + + /** + * Return true if the repository has a composer file for a given identifier, + * false otherwise. + * + * @param string $identifier Any identifier to a specific branch/tag/commit + * @return bool Whether the repository has a composer file for a given identifier. + */ + public function hasComposerFile($identifier); + + /** + * Performs any cleanup necessary as the driver is not longer needed + */ + public function cleanup(); + + /** + * Checks if this driver can handle a given url + * + * @param IOInterface $io IO instance + * @param Config $config current $config + * @param string $url URL to validate/check + * @param bool $deep unless true, only shallow checks (url matching typically) should be done + * @return bool + */ + public static function supports(IOInterface $io, Config $config, $url, $deep = false); +} diff --git a/vendor/composer/composer/src/Composer/Repository/VcsRepository.php b/vendor/composer/composer/src/Composer/Repository/VcsRepository.php new file mode 100644 index 0000000..8d8bcbd --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/VcsRepository.php @@ -0,0 +1,410 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Downloader\TransportException; +use Composer\Repository\Vcs\VcsDriverInterface; +use Composer\Package\Version\VersionParser; +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\Loader\ValidatingArrayLoader; +use Composer\Package\Loader\InvalidPackageException; +use Composer\Package\Loader\LoaderInterface; +use Composer\EventDispatcher\EventDispatcher; +use Composer\IO\IOInterface; +use Composer\Config; + +/** + * @author Jordi Boggiano + */ +class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInterface +{ + protected $url; + protected $packageName; + protected $isVerbose; + protected $isVeryVerbose; + protected $io; + protected $config; + protected $versionParser; + protected $type; + protected $loader; + protected $repoConfig; + protected $branchErrorOccurred = false; + private $drivers; + /** @var VcsDriverInterface */ + private $driver; + /** @var VersionCacheInterface */ + private $versionCache; + private $emptyReferences = array(); + + public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $dispatcher = null, array $drivers = null, VersionCacheInterface $versionCache = null) + { + parent::__construct(); + $this->drivers = $drivers ?: array( + 'github' => 'Composer\Repository\Vcs\GitHubDriver', + 'gitlab' => 'Composer\Repository\Vcs\GitLabDriver', + 'git-bitbucket' => 'Composer\Repository\Vcs\GitBitbucketDriver', + 'git' => 'Composer\Repository\Vcs\GitDriver', + 'hg-bitbucket' => 'Composer\Repository\Vcs\HgBitbucketDriver', + 'hg' => 'Composer\Repository\Vcs\HgDriver', + 'perforce' => 'Composer\Repository\Vcs\PerforceDriver', + 'fossil' => 'Composer\Repository\Vcs\FossilDriver', + // svn must be last because identifying a subversion server for sure is practically impossible + 'svn' => 'Composer\Repository\Vcs\SvnDriver', + ); + + $this->url = $repoConfig['url']; + $this->io = $io; + $this->type = isset($repoConfig['type']) ? $repoConfig['type'] : 'vcs'; + $this->isVerbose = $io->isVerbose(); + $this->isVeryVerbose = $io->isVeryVerbose(); + $this->config = $config; + $this->repoConfig = $repoConfig; + $this->versionCache = $versionCache; + } + + public function getRepoConfig() + { + return $this->repoConfig; + } + + public function setLoader(LoaderInterface $loader) + { + $this->loader = $loader; + } + + public function getDriver() + { + if ($this->driver) { + return $this->driver; + } + + if (isset($this->drivers[$this->type])) { + $class = $this->drivers[$this->type]; + $this->driver = new $class($this->repoConfig, $this->io, $this->config); + $this->driver->initialize(); + + return $this->driver; + } + + foreach ($this->drivers as $driver) { + if ($driver::supports($this->io, $this->config, $this->url)) { + $this->driver = new $driver($this->repoConfig, $this->io, $this->config); + $this->driver->initialize(); + + return $this->driver; + } + } + + foreach ($this->drivers as $driver) { + if ($driver::supports($this->io, $this->config, $this->url, true)) { + $this->driver = new $driver($this->repoConfig, $this->io, $this->config); + $this->driver->initialize(); + + return $this->driver; + } + } + } + + public function hadInvalidBranches() + { + return $this->branchErrorOccurred; + } + + public function getEmptyReferences() + { + return $this->emptyReferences; + } + + protected function initialize() + { + parent::initialize(); + + $isVerbose = $this->isVerbose; + $isVeryVerbose = $this->isVeryVerbose; + + $driver = $this->getDriver(); + if (!$driver) { + throw new \InvalidArgumentException('No driver found to handle VCS repository '.$this->url); + } + + $this->versionParser = new VersionParser; + if (!$this->loader) { + $this->loader = new ArrayLoader($this->versionParser); + } + + try { + if ($driver->hasComposerFile($driver->getRootIdentifier())) { + $data = $driver->getComposerInformation($driver->getRootIdentifier()); + $this->packageName = !empty($data['name']) ? $data['name'] : null; + } + } catch (\Exception $e) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped parsing '.$driver->getRootIdentifier().', '.$e->getMessage().''); + } + } + + foreach ($driver->getTags() as $tag => $identifier) { + $msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $tag . ')'; + if ($isVeryVerbose) { + $this->io->writeError($msg); + } elseif ($isVerbose) { + $this->io->overwriteError($msg, false); + } + + // strip the release- prefix from tags if present + $tag = str_replace('release-', '', $tag); + + $cachedPackage = $this->getCachedPackageVersion($tag, $identifier, $isVerbose, $isVeryVerbose); + if ($cachedPackage) { + $this->addPackage($cachedPackage); + + continue; + } elseif ($cachedPackage === false) { + $this->emptyReferences[] = $identifier; + + continue; + } + + if (!$parsedTag = $this->validateTag($tag)) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped tag '.$tag.', invalid tag name'); + } + continue; + } + + try { + if (!$data = $driver->getComposerInformation($identifier)) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped tag '.$tag.', no composer file'); + } + $this->emptyReferences[] = $identifier; + continue; + } + + // manually versioned package + if (isset($data['version'])) { + $data['version_normalized'] = $this->versionParser->normalize($data['version']); + } else { + // auto-versioned package, read value from tag + $data['version'] = $tag; + $data['version_normalized'] = $parsedTag; + } + + // make sure tag packages have no -dev flag + $data['version'] = preg_replace('{[.-]?dev$}i', '', $data['version']); + $data['version_normalized'] = preg_replace('{(^dev-|[.-]?dev$)}i', '', $data['version_normalized']); + + // broken package, version doesn't match tag + if ($data['version_normalized'] !== $parsedTag) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped tag '.$tag.', tag ('.$parsedTag.') does not match version ('.$data['version_normalized'].') in composer.json'); + } + continue; + } + + $tagPackageName = isset($data['name']) ? $data['name'] : $this->packageName; + if ($existingPackage = $this->findPackage($tagPackageName, $data['version_normalized'])) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped tag '.$tag.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$data['version_normalized'].' internally'); + } + continue; + } + + if ($isVeryVerbose) { + $this->io->writeError('Importing tag '.$tag.' ('.$data['version_normalized'].')'); + } + + $this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier))); + } catch (\Exception $e) { + if ($e instanceof TransportException && $e->getCode() === 404) { + $this->emptyReferences[] = $identifier; + } + if ($isVeryVerbose) { + $this->io->writeError('Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found' : $e->getMessage()).''); + } + continue; + } + } + + if (!$isVeryVerbose) { + $this->io->overwriteError('', false); + } + + $branches = $driver->getBranches(); + foreach ($branches as $branch => $identifier) { + $msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $branch . ')'; + if ($isVeryVerbose) { + $this->io->writeError($msg); + } elseif ($isVerbose) { + $this->io->overwriteError($msg, false); + } + + if ($branch === 'trunk' && isset($branches['master'])) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped branch '.$branch.', can not parse both master and trunk branches as they both resolve to 9999999-dev internally'); + } + continue; + } + + if (!$parsedBranch = $this->validateBranch($branch)) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped branch '.$branch.', invalid name'); + } + continue; + } + + // make sure branch packages have a dev flag + if ('dev-' === substr($parsedBranch, 0, 4) || '9999999-dev' === $parsedBranch) { + $version = 'dev-' . $branch; + } else { + $prefix = substr($branch, 0, 1) === 'v' ? 'v' : ''; + $version = $prefix . preg_replace('{(\.9{7})+}', '.x', $parsedBranch); + } + + $cachedPackage = $this->getCachedPackageVersion($version, $identifier, $isVerbose, $isVeryVerbose); + if ($cachedPackage) { + $this->addPackage($cachedPackage); + + continue; + } elseif ($cachedPackage === false) { + $this->emptyReferences[] = $identifier; + + continue; + } + + try { + if (!$data = $driver->getComposerInformation($identifier)) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped branch '.$branch.', no composer file'); + } + $this->emptyReferences[] = $identifier; + continue; + } + + // branches are always auto-versioned, read value from branch name + $data['version'] = $version; + $data['version_normalized'] = $parsedBranch; + + if ($isVeryVerbose) { + $this->io->writeError('Importing branch '.$branch.' ('.$data['version'].')'); + } + + $packageData = $this->preProcess($driver, $data, $identifier); + $package = $this->loader->load($packageData); + if ($this->loader instanceof ValidatingArrayLoader && $this->loader->getWarnings()) { + throw new InvalidPackageException($this->loader->getErrors(), $this->loader->getWarnings(), $packageData); + } + $this->addPackage($package); + } catch (TransportException $e) { + if ($e->getCode() === 404) { + $this->emptyReferences[] = $identifier; + } + if ($isVeryVerbose) { + $this->io->writeError('Skipped branch '.$branch.', no composer file was found'); + } + continue; + } catch (\Exception $e) { + if (!$isVeryVerbose) { + $this->io->writeError(''); + } + $this->branchErrorOccurred = true; + $this->io->writeError('Skipped branch '.$branch.', '.$e->getMessage().''); + $this->io->writeError(''); + continue; + } + } + $driver->cleanup(); + + if (!$isVeryVerbose) { + $this->io->overwriteError('', false); + } + + if (!$this->getPackages()) { + throw new InvalidRepositoryException('No valid composer.json was found in any branch or tag of '.$this->url.', could not load a package from it.'); + } + } + + protected function preProcess(VcsDriverInterface $driver, array $data, $identifier) + { + // keep the name of the main identifier for all packages + $dataPackageName = isset($data['name']) ? $data['name'] : null; + $data['name'] = $this->packageName ?: $dataPackageName; + + if (!isset($data['dist'])) { + $data['dist'] = $driver->getDist($identifier); + } + if (!isset($data['source'])) { + $data['source'] = $driver->getSource($identifier); + } + + return $data; + } + + private function validateBranch($branch) + { + try { + return $this->versionParser->normalizeBranch($branch); + } catch (\Exception $e) { + } + + return false; + } + + private function validateTag($version) + { + try { + return $this->versionParser->normalize($version); + } catch (\Exception $e) { + } + + return false; + } + + private function getCachedPackageVersion($version, $identifier, $isVerbose, $isVeryVerbose) + { + if (!$this->versionCache) { + return; + } + + $cachedPackage = $this->versionCache->getVersionPackage($version, $identifier); + if ($cachedPackage === false) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped '.$version.', no composer file (cached from ref '.$identifier.')'); + } + + return false; + } + + if ($cachedPackage) { + $msg = 'Found cached composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $version . ')'; + if ($isVeryVerbose) { + $this->io->writeError($msg); + } elseif ($isVerbose) { + $this->io->overwriteError($msg, false); + } + + if ($existingPackage = $this->findPackage($cachedPackage['name'], $cachedPackage['version_normalized'])) { + if ($isVeryVerbose) { + $this->io->writeError('Skipped cached version '.$version.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$cachedPackage['version_normalized'].' internally'); + } + $cachedPackage = null; + } + } + + if ($cachedPackage) { + return $this->loader->load($cachedPackage); + } + + return null; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php b/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php new file mode 100644 index 0000000..41d485c --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php @@ -0,0 +1,23 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +interface VersionCacheInterface +{ + /** + * @param string $version + * @param string $identifier + * @return array|null|false Package version data if found, false to indicate the identifier is known but has no package, null for an unknown identifier + */ + public function getVersionPackage($version, $identifier); +} diff --git a/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php b/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php new file mode 100644 index 0000000..041e405 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php @@ -0,0 +1,66 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\AliasPackage; + +/** + * Writable array repository. + * + * @author Jordi Boggiano + */ +class WritableArrayRepository extends ArrayRepository implements WritableRepositoryInterface +{ + /** + * {@inheritDoc} + */ + public function write() + { + } + + /** + * {@inheritDoc} + */ + public function reload() + { + } + + /** + * {@inheritDoc} + */ + public function getCanonicalPackages() + { + $packages = $this->getPackages(); + + // get at most one package of each name, preferring non-aliased ones + $packagesByName = array(); + foreach ($packages as $package) { + if (!isset($packagesByName[$package->getName()]) || $packagesByName[$package->getName()] instanceof AliasPackage) { + $packagesByName[$package->getName()] = $package; + } + } + + $canonicalPackages = array(); + + // unfold aliased packages + foreach ($packagesByName as $package) { + while ($package instanceof AliasPackage) { + $package = $package->getAliasOf(); + } + + $canonicalPackages[] = $package; + } + + return $canonicalPackages; + } +} diff --git a/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php b/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php new file mode 100644 index 0000000..4500005 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php @@ -0,0 +1,54 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\PackageInterface; + +/** + * Writable repository interface. + * + * @author Konstantin Kudryashov + */ +interface WritableRepositoryInterface extends RepositoryInterface +{ + /** + * Writes repository (f.e. to the disc). + */ + public function write(); + + /** + * Adds package to the repository. + * + * @param PackageInterface $package package instance + */ + public function addPackage(PackageInterface $package); + + /** + * Removes package from the repository. + * + * @param PackageInterface $package package instance + */ + public function removePackage(PackageInterface $package); + + /** + * Get unique packages (at most one package of each name), with aliases resolved and removed. + * + * @return PackageInterface[] + */ + public function getCanonicalPackages(); + + /** + * Forces a reload of all packages. + */ + public function reload(); +} diff --git a/vendor/composer/composer/src/Composer/Script/CommandEvent.php b/vendor/composer/composer/src/Composer/Script/CommandEvent.php new file mode 100644 index 0000000..84c5200 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Script/CommandEvent.php @@ -0,0 +1,22 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Script; + +/** + * The Command Event. + * + * @deprecated use Composer\Script\Event instead + */ +class CommandEvent extends Event +{ +} diff --git a/vendor/composer/composer/src/Composer/Script/Event.php b/vendor/composer/composer/src/Composer/Script/Event.php new file mode 100644 index 0000000..5fab172 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Script/Event.php @@ -0,0 +1,133 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Script; + +use Composer\Composer; +use Composer\IO\IOInterface; +use Composer\EventDispatcher\Event as BaseEvent; + +/** + * The script event class + * + * @author François Pluchino + * @author Nils Adermann + */ +class Event extends BaseEvent +{ + /** + * @var Composer The composer instance + */ + private $composer; + + /** + * @var IOInterface The IO instance + */ + private $io; + + /** + * @var bool Dev mode flag + */ + private $devMode; + + /** + * @var BaseEvent + */ + private $originatingEvent; + + /** + * Constructor. + * + * @param string $name The event name + * @param Composer $composer The composer object + * @param IOInterface $io The IOInterface object + * @param bool $devMode Whether or not we are in dev mode + * @param array $args Arguments passed by the user + * @param array $flags Optional flags to pass data not as argument + */ + public function __construct($name, Composer $composer, IOInterface $io, $devMode = false, array $args = array(), array $flags = array()) + { + parent::__construct($name, $args, $flags); + $this->composer = $composer; + $this->io = $io; + $this->devMode = $devMode; + $this->originatingEvent = null; + } + + /** + * Returns the composer instance. + * + * @return Composer + */ + public function getComposer() + { + return $this->composer; + } + + /** + * Returns the IO instance. + * + * @return IOInterface + */ + public function getIO() + { + return $this->io; + } + + /** + * Return the dev mode flag + * + * @return bool + */ + public function isDevMode() + { + return $this->devMode; + } + + /** + * Set the originating event. + * + * @return \Composer\EventDispatcher\Event|null + */ + public function getOriginatingEvent() + { + return $this->originatingEvent; + } + + /** + * Set the originating event. + * + * @param \Composer\EventDispatcher\Event $event + * @return $this + */ + public function setOriginatingEvent(BaseEvent $event) + { + $this->originatingEvent = $this->calculateOriginatingEvent($event); + + return $this; + } + + /** + * Returns the upper-most event in chain. + * + * @param \Composer\EventDispatcher\Event $event + * @return \Composer\EventDispatcher\Event + */ + private function calculateOriginatingEvent(BaseEvent $event) + { + if ($event instanceof Event && $event->getOriginatingEvent()) { + return $this->calculateOriginatingEvent($event->getOriginatingEvent()); + } + + return $event; + } +} diff --git a/vendor/composer/composer/src/Composer/Script/PackageEvent.php b/vendor/composer/composer/src/Composer/Script/PackageEvent.php new file mode 100644 index 0000000..531b86a --- /dev/null +++ b/vendor/composer/composer/src/Composer/Script/PackageEvent.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Script; + +use Composer\Installer\PackageEvent as BasePackageEvent; + +/** + * The Package Event. + * + * @deprecated Use Composer\Installer\PackageEvent instead + */ +class PackageEvent extends BasePackageEvent +{ +} diff --git a/vendor/composer/composer/src/Composer/Script/ScriptEvents.php b/vendor/composer/composer/src/Composer/Script/ScriptEvents.php new file mode 100644 index 0000000..491c6bc --- /dev/null +++ b/vendor/composer/composer/src/Composer/Script/ScriptEvents.php @@ -0,0 +1,193 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Script; + +/** + * The Script Events. + * + * @author François Pluchino + * @author Jordi Boggiano + */ +class ScriptEvents +{ + /** + * The PRE_INSTALL_CMD event occurs before the install command is executed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const PRE_INSTALL_CMD = 'pre-install-cmd'; + + /** + * The POST_INSTALL_CMD event occurs after the install command is executed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const POST_INSTALL_CMD = 'post-install-cmd'; + + /** + * The PRE_UPDATE_CMD event occurs before the update command is executed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const PRE_UPDATE_CMD = 'pre-update-cmd'; + + /** + * The POST_UPDATE_CMD event occurs after the update command is executed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const POST_UPDATE_CMD = 'post-update-cmd'; + + /** + * The PRE_STATUS_CMD event occurs before the status command is executed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const PRE_STATUS_CMD = 'pre-status-cmd'; + + /** + * The POST_STATUS_CMD event occurs after the status command is executed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const POST_STATUS_CMD = 'post-status-cmd'; + + /** + * The PRE_AUTOLOAD_DUMP event occurs before the autoload file is generated. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const PRE_AUTOLOAD_DUMP = 'pre-autoload-dump'; + + /** + * The POST_AUTOLOAD_DUMP event occurs after the autoload file has been generated. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const POST_AUTOLOAD_DUMP = 'post-autoload-dump'; + + /** + * The POST_ROOT_PACKAGE_INSTALL event occurs after the root package has been installed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const POST_ROOT_PACKAGE_INSTALL = 'post-root-package-install'; + + /** + * The POST_CREATE_PROJECT event occurs after the create-project command has been executed. + * Note: Event occurs after POST_INSTALL_CMD + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const POST_CREATE_PROJECT_CMD = 'post-create-project-cmd'; + + /** + * The PRE_ARCHIVE_CMD event occurs before the update command is executed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const PRE_ARCHIVE_CMD = 'pre-archive-cmd'; + + /** + * The POST_ARCHIVE_CMD event occurs after the status command is executed. + * + * The event listener method receives a Composer\Script\Event instance. + * + * @var string + */ + const POST_ARCHIVE_CMD = 'post-archive-cmd'; + + /** Deprecated constants below */ + + /** + * The PRE_PACKAGE_INSTALL event occurs before a package is installed. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @deprecated Use Composer\Installer\PackageEvents::PRE_PACKAGE_INSTALL instead. + * @var string + */ + const PRE_PACKAGE_INSTALL = 'pre-package-install'; + + /** + * The POST_PACKAGE_INSTALL event occurs after a package is installed. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @deprecated Use Composer\Installer\PackageEvents::POST_PACKAGE_INSTALL instead. + * @var string + */ + const POST_PACKAGE_INSTALL = 'post-package-install'; + + /** + * The PRE_PACKAGE_UPDATE event occurs before a package is updated. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @deprecated Use Composer\Installer\PackageEvents::PRE_PACKAGE_UPDATE instead. + * @var string + */ + const PRE_PACKAGE_UPDATE = 'pre-package-update'; + + /** + * The POST_PACKAGE_UPDATE event occurs after a package is updated. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @deprecated Use Composer\Installer\PackageEvents::POST_PACKAGE_UPDATE instead. + * @var string + */ + const POST_PACKAGE_UPDATE = 'post-package-update'; + + /** + * The PRE_PACKAGE_UNINSTALL event occurs before a package has been uninstalled. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @deprecated Use Composer\Installer\PackageEvents::PRE_PACKAGE_UNINSTALL instead. + * @var string + */ + const PRE_PACKAGE_UNINSTALL = 'pre-package-uninstall'; + + /** + * The POST_PACKAGE_UNINSTALL event occurs after a package has been uninstalled. + * + * The event listener method receives a Composer\Installer\PackageEvent instance. + * + * @deprecated Use Composer\Installer\PackageEvents::POST_PACKAGE_UNINSTALL instead. + * @var string + */ + const POST_PACKAGE_UNINSTALL = 'post-package-uninstall'; +} diff --git a/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php b/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php new file mode 100644 index 0000000..a8f02e3 --- /dev/null +++ b/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php @@ -0,0 +1,36 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\SelfUpdate; + +/** + * @author Jordi Boggiano + */ +class Keys +{ + public static function fingerprint($path) + { + $hash = strtoupper(hash('sha256', preg_replace('{\s}', '', file_get_contents($path)))); + + return implode(' ', array( + substr($hash, 0, 8), + substr($hash, 8, 8), + substr($hash, 16, 8), + substr($hash, 24, 8), + '', // Extra space + substr($hash, 32, 8), + substr($hash, 40, 8), + substr($hash, 48, 8), + substr($hash, 56, 8), + )); + } +} diff --git a/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php b/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php new file mode 100644 index 0000000..b619bda --- /dev/null +++ b/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php @@ -0,0 +1,75 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\SelfUpdate; + +use Composer\Util\RemoteFilesystem; +use Composer\Config; +use Composer\Json\JsonFile; + +/** + * @author Jordi Boggiano + */ +class Versions +{ + private $rfs; + private $config; + private $channel; + + public function __construct(Config $config, RemoteFilesystem $rfs) + { + $this->rfs = $rfs; + $this->config = $config; + } + + public function getChannel() + { + if ($this->channel) { + return $this->channel; + } + + $channelFile = $this->config->get('home').'/update-channel'; + if (file_exists($channelFile)) { + $channel = trim(file_get_contents($channelFile)); + if (in_array($channel, array('stable', 'preview', 'snapshot'), true)) { + return $this->channel = $channel; + } + } + + return $this->channel = 'stable'; + } + + public function setChannel($channel) + { + if (!in_array($channel, array('stable', 'preview', 'snapshot'), true)) { + throw new \InvalidArgumentException('Invalid channel '.$channel.', must be one of: stable, preview, snapshot'); + } + + $channelFile = $this->config->get('home').'/update-channel'; + $this->channel = $channel; + file_put_contents($channelFile, $channel.PHP_EOL); + } + + public function getLatest() + { + $protocol = extension_loaded('openssl') ? 'https' : 'http'; + $versions = JsonFile::parseJson($this->rfs->getContents('getcomposer.org', $protocol . '://getcomposer.org/versions', false)); + + foreach ($versions[$this->getChannel()] as $version) { + if ($version['min-php'] <= PHP_VERSION_ID) { + return $version; + } + } + + throw new \LogicException('There is no version of Composer available for your PHP version ('.PHP_VERSION.')'); + } +} diff --git a/vendor/composer/composer/src/Composer/Util/AuthHelper.php b/vendor/composer/composer/src/Composer/Util/AuthHelper.php new file mode 100644 index 0000000..72b23ba --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/AuthHelper.php @@ -0,0 +1,63 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Config; +use Composer\IO\IOInterface; + +/** + * @author Jordi Boggiano + */ +class AuthHelper +{ + protected $io; + protected $config; + + public function __construct(IOInterface $io, Config $config) + { + $this->io = $io; + $this->config = $config; + } + + public function storeAuth($originUrl, $storeAuth) + { + $store = false; + $configSource = $this->config->getAuthConfigSource(); + if ($storeAuth === true) { + $store = $configSource; + } elseif ($storeAuth === 'prompt') { + $answer = $this->io->askAndValidate( + 'Do you want to store credentials for '.$originUrl.' in '.$configSource->getName().' ? [Yn] ', + function ($value) { + $input = strtolower(substr(trim($value), 0, 1)); + if (in_array($input, array('y','n'))) { + return $input; + } + throw new \RuntimeException('Please answer (y)es or (n)o'); + }, + null, + 'y' + ); + + if ($answer === 'y') { + $store = $configSource; + } + } + if ($store) { + $store->addConfigSetting( + 'http-basic.'.$originUrl, + $this->io->getAuthentication($originUrl) + ); + } + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Bitbucket.php b/vendor/composer/composer/src/Composer/Util/Bitbucket.php new file mode 100644 index 0000000..1fc286a --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Bitbucket.php @@ -0,0 +1,245 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\Config; +use Composer\Downloader\TransportException; + +/** + * @author Paul Wenke + */ +class Bitbucket +{ + private $io; + private $config; + private $process; + private $remoteFilesystem; + private $token = array(); + private $time; + + const OAUTH2_ACCESS_TOKEN_URL = 'https://bitbucket.org/site/oauth2/access_token'; + + /** + * Constructor. + * + * @param IOInterface $io The IO instance + * @param Config $config The composer configuration + * @param ProcessExecutor $process Process instance, injectable for mocking + * @param RemoteFilesystem $remoteFilesystem Remote Filesystem, injectable for mocking + * @param int $time Timestamp, injectable for mocking + */ + public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, RemoteFilesystem $remoteFilesystem = null, $time = null) + { + $this->io = $io; + $this->config = $config; + $this->process = $process ?: new ProcessExecutor($io); + $this->remoteFilesystem = $remoteFilesystem ?: Factory::createRemoteFilesystem($this->io, $config); + $this->time = $time; + } + + /** + * @return string + */ + public function getToken() + { + if (!isset($this->token['access_token'])) { + return ''; + } + + return $this->token['access_token']; + } + + /** + * Attempts to authorize a Bitbucket domain via OAuth + * + * @param string $originUrl The host this Bitbucket instance is located at + * @return bool true on success + */ + public function authorizeOAuth($originUrl) + { + if ($originUrl !== 'bitbucket.org') { + return false; + } + + // if available use token from git config + if (0 === $this->process->execute('git config bitbucket.accesstoken', $output)) { + $this->io->setAuthentication($originUrl, 'x-token-auth', trim($output)); + + return true; + } + + return false; + } + + /** + * @param string $originUrl + * @return bool + */ + private function requestAccessToken($originUrl) + { + try { + $json = $this->remoteFilesystem->getContents($originUrl, self::OAUTH2_ACCESS_TOKEN_URL, false, array( + 'retry-auth-failure' => false, + 'http' => array( + 'method' => 'POST', + 'content' => 'grant_type=client_credentials', + ), + )); + + $this->token = json_decode($json, true); + } catch (TransportException $e) { + if ($e->getCode() === 400) { + $this->io->writeError('Invalid OAuth consumer provided.'); + $this->io->writeError('This can have two reasons:'); + $this->io->writeError('1. You are authenticating with a bitbucket username/password combination'); + $this->io->writeError('2. You are using an OAuth consumer, but didn\'t configure a (dummy) callback url'); + + return false; + } elseif (in_array($e->getCode(), array(403, 401))) { + $this->io->writeError('Invalid OAuth consumer provided.'); + $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); + + return false; + } + + throw $e; + } + + return true; + } + + /** + * Authorizes a Bitbucket domain interactively via OAuth + * + * @param string $originUrl The host this Bitbucket instance is located at + * @param string $message The reason this authorization is required + * @throws \RuntimeException + * @throws TransportException|\Exception + * @return bool true on success + */ + public function authorizeOAuthInteractively($originUrl, $message = null) + { + if ($message) { + $this->io->writeError($message); + } + + $url = 'https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html'; + $this->io->writeError(sprintf('Follow the instructions on %s', $url)); + $this->io->writeError(sprintf('to create a consumer. It will be stored in "%s" for future use by Composer.', $this->config->getAuthConfigSource()->getName())); + $this->io->writeError('Ensure you enter a "Callback URL" (http://example.com is fine) or it will not be possible to create an Access Token (this callback url will not be used by composer)'); + + $consumerKey = trim($this->io->askAndHideAnswer('Consumer Key (hidden): ')); + + if (!$consumerKey) { + $this->io->writeError('No consumer key given, aborting.'); + $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); + + return false; + } + + $consumerSecret = trim($this->io->askAndHideAnswer('Consumer Secret (hidden): ')); + + if (!$consumerSecret) { + $this->io->writeError('No consumer secret given, aborting.'); + $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); + + return false; + } + + $this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); + + if (!$this->requestAccessToken($originUrl)) { + return false; + } + + // store value in user config + $this->storeInAuthConfig($originUrl, $consumerKey, $consumerSecret); + + // Remove conflicting basic auth credentials (if available) + $this->config->getAuthConfigSource()->removeConfigSetting('http-basic.' . $originUrl); + + $this->io->writeError('Consumer stored successfully.'); + + return true; + } + + /** + * Retrieves an access token from Bitbucket. + * + * @param string $originUrl + * @param string $consumerKey + * @param string $consumerSecret + * @return string + */ + public function requestToken($originUrl, $consumerKey, $consumerSecret) + { + if (!empty($this->token) || $this->getTokenFromConfig($originUrl)) { + return $this->token['access_token']; + } + + $this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); + if (!$this->requestAccessToken($originUrl)) { + return ''; + } + + $this->storeInAuthConfig($originUrl, $consumerKey, $consumerSecret); + + return $this->token['access_token']; + } + + /** + * Store the new/updated credentials to the configuration + * @param string $originUrl + * @param string $consumerKey + * @param string $consumerSecret + */ + private function storeInAuthConfig($originUrl, $consumerKey, $consumerSecret) + { + $this->config->getConfigSource()->removeConfigSetting('bitbucket-oauth.'.$originUrl); + + $time = null === $this->time ? time() : $this->time; + $consumer = array( + "consumer-key" => $consumerKey, + "consumer-secret" => $consumerSecret, + "access-token" => $this->token['access_token'], + "access-token-expiration" => $time + $this->token['expires_in'], + ); + + $this->config->getAuthConfigSource()->addConfigSetting('bitbucket-oauth.'.$originUrl, $consumer); + } + + /** + * @param string $originUrl + * @return bool + */ + private function getTokenFromConfig($originUrl) + { + $authConfig = $this->config->get('bitbucket-oauth'); + + if ( + !isset($authConfig[$originUrl]['access-token']) + || !isset($authConfig[$originUrl]['access-token-expiration']) + || time() > $authConfig[$originUrl]['access-token-expiration'] + ) { + return false; + } + + $this->token = array( + 'access_token' => $authConfig[$originUrl]['access-token'], + ); + + return true; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/ComposerMirror.php b/vendor/composer/composer/src/Composer/Util/ComposerMirror.php new file mode 100644 index 0000000..036444d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/ComposerMirror.php @@ -0,0 +1,57 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +/** + * Composer mirror utilities + * + * @author Jordi Boggiano + */ +class ComposerMirror +{ + public static function processUrl($mirrorUrl, $packageName, $version, $reference, $type) + { + if ($reference) { + $reference = preg_match('{^([a-f0-9]*|%reference%)$}', $reference) ? $reference : md5($reference); + } + $version = strpos($version, '/') === false ? $version : md5($version); + + return str_replace( + array('%package%', '%version%', '%reference%', '%type%'), + array($packageName, $version, $reference, $type), + $mirrorUrl + ); + } + + public static function processGitUrl($mirrorUrl, $packageName, $url, $type) + { + if (preg_match('#^(?:(?:https?|git)://github\.com/|git@github\.com:)([^/]+)/(.+?)(?:\.git)?$#', $url, $match)) { + $url = 'gh-'.$match[1].'/'.$match[2]; + } elseif (preg_match('#^https://bitbucket\.org/([^/]+)/(.+?)(?:\.git)?/?$#', $url, $match)) { + $url = 'bb-'.$match[1].'/'.$match[2]; + } else { + $url = preg_replace('{[^a-z0-9_.-]}i', '-', trim($url, '/')); + } + + return str_replace( + array('%package%', '%normalizedUrl%', '%type%'), + array($packageName, $url, $type), + $mirrorUrl + ); + } + + public static function processHgUrl($mirrorUrl, $packageName, $url, $type) + { + return self::processGitUrl($mirrorUrl, $packageName, $url, $type); + } +} diff --git a/vendor/composer/composer/src/Composer/Util/ConfigValidator.php b/vendor/composer/composer/src/Composer/Util/ConfigValidator.php new file mode 100644 index 0000000..e1200fe --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/ConfigValidator.php @@ -0,0 +1,191 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Package\Loader\ArrayLoader; +use Composer\Package\Loader\ValidatingArrayLoader; +use Composer\Package\Loader\InvalidPackageException; +use Composer\Json\JsonValidationException; +use Composer\IO\IOInterface; +use Composer\Json\JsonFile; +use Composer\Spdx\SpdxLicenses; + +/** + * Validates a composer configuration. + * + * @author Robert Schönthal + * @author Jordi Boggiano + */ +class ConfigValidator +{ + private $io; + + public function __construct(IOInterface $io) + { + $this->io = $io; + } + + /** + * Validates the config, and returns the result. + * + * @param string $file The path to the file + * @param int $arrayLoaderValidationFlags Flags for ArrayLoader validation + * + * @return array a triple containing the errors, publishable errors, and warnings + */ + public function validate($file, $arrayLoaderValidationFlags = ValidatingArrayLoader::CHECK_ALL) + { + $errors = array(); + $publishErrors = array(); + $warnings = array(); + + // validate json schema + $laxValid = false; + try { + $json = new JsonFile($file, null, $this->io); + $manifest = $json->read(); + + $json->validateSchema(JsonFile::LAX_SCHEMA); + $laxValid = true; + $json->validateSchema(); + } catch (JsonValidationException $e) { + foreach ($e->getErrors() as $message) { + if ($laxValid) { + $publishErrors[] = $message; + } else { + $errors[] = $message; + } + } + } catch (\Exception $e) { + $errors[] = $e->getMessage(); + + return array($errors, $publishErrors, $warnings); + } + + // validate actual data + if (empty($manifest['license'])) { + $warnings[] = 'No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.'; + } else { + $licenses = (array) $manifest['license']; + + // strip proprietary since it's not a valid SPDX identifier, but is accepted by composer + foreach ($licenses as $key => $license) { + if ('proprietary' === $license) { + unset($licenses[$key]); + } + } + + $licenseValidator = new SpdxLicenses(); + foreach ($licenses as $license) { + $spdxLicense = $licenseValidator->getLicenseByIdentifier($license); + if ($spdxLicense && $spdxLicense[3]) { + if (preg_match('{^[AL]?GPL-[123](\.[01])?\+$}i', $license)) { + $warnings[] = sprintf( + 'License "%s" is a deprecated SPDX license identifier, use "'.str_replace('+', '', $license).'-or-later" instead', + $license + ); + } elseif (preg_match('{^[AL]?GPL-[123](\.[01])?$}i', $license)) { + $warnings[] = sprintf( + 'License "%s" is a deprecated SPDX license identifier, use "'.$license.'-only" or "'.$license.'-or-later" instead', + $license + ); + } else { + $warnings[] = sprintf( + 'License "%s" is a deprecated SPDX license identifier, see https://spdx.org/licenses/', + $license + ); + } + } + } + } + + if (isset($manifest['version'])) { + $warnings[] = 'The version field is present, it is recommended to leave it out if the package is published on Packagist.'; + } + + if (!empty($manifest['name']) && preg_match('{[A-Z]}', $manifest['name'])) { + $suggestName = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $manifest['name']); + $suggestName = strtolower($suggestName); + + $publishErrors[] = sprintf( + 'Name "%s" does not match the best practice (e.g. lower-cased/with-dashes). We suggest using "%s" instead. As such you will not be able to submit it to Packagist.', + $manifest['name'], + $suggestName + ); + } + + if (!empty($manifest['type']) && $manifest['type'] == 'composer-installer') { + $warnings[] = "The package type 'composer-installer' is deprecated. Please distribute your custom installers as plugins from now on. See https://getcomposer.org/doc/articles/plugins.md for plugin documentation."; + } + + // check for require-dev overrides + if (isset($manifest['require']) && isset($manifest['require-dev'])) { + $requireOverrides = array_intersect_key($manifest['require'], $manifest['require-dev']); + + if (!empty($requireOverrides)) { + $plural = (count($requireOverrides) > 1) ? 'are' : 'is'; + $warnings[] = implode(', ', array_keys($requireOverrides)). " {$plural} required both in require and require-dev, this can lead to unexpected behavior"; + } + } + + // check for commit references + $require = isset($manifest['require']) ? $manifest['require'] : array(); + $requireDev = isset($manifest['require-dev']) ? $manifest['require-dev'] : array(); + $packages = array_merge($require, $requireDev); + foreach ($packages as $package => $version) { + if (preg_match('/#/', $version) === 1) { + $warnings[] = sprintf( + 'The package "%s" is pointing to a commit-ref, this is bad practice and can cause unforeseen issues.', + $package + ); + } + } + + // report scripts-descriptions for non-existent scripts + $scriptsDescriptions = isset($manifest['scripts-descriptions']) ? $manifest['scripts-descriptions'] : array(); + $scripts = isset($manifest['scripts']) ? $manifest['scripts'] : array(); + foreach ($scriptsDescriptions as $scriptName => $scriptDescription) { + if (!array_key_exists($scriptName, $scripts)) { + $warnings[] = sprintf( + 'Description for non-existent script "%s" found in "scripts-descriptions"', + $scriptName + ); + } + } + + // check for empty psr-0/psr-4 namespace prefixes + if (isset($manifest['autoload']['psr-0'][''])) { + $warnings[] = "Defining autoload.psr-0 with an empty namespace prefix is a bad idea for performance"; + } + if (isset($manifest['autoload']['psr-4'][''])) { + $warnings[] = "Defining autoload.psr-4 with an empty namespace prefix is a bad idea for performance"; + } + + try { + $loader = new ValidatingArrayLoader(new ArrayLoader(), true, null, $arrayLoaderValidationFlags); + if (!isset($manifest['version'])) { + $manifest['version'] = '1.0.0'; + } + if (!isset($manifest['name'])) { + $manifest['name'] = 'dummy/dummy'; + } + $loader->load($manifest); + } catch (InvalidPackageException $e) { + $errors = array_merge($errors, $e->getErrors()); + } + + $warnings = array_merge($warnings, $loader->getWarnings()); + + return array($errors, $publishErrors, $warnings); + } +} diff --git a/vendor/composer/composer/src/Composer/Util/ErrorHandler.php b/vendor/composer/composer/src/Composer/Util/ErrorHandler.php new file mode 100644 index 0000000..c4dabd1 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/ErrorHandler.php @@ -0,0 +1,82 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\IO\IOInterface; + +/** + * Convert PHP errors into exceptions + * + * @author Artem Lopata + */ +class ErrorHandler +{ + private static $io; + + /** + * Error handler + * + * @param int $level Level of the error raised + * @param string $message Error message + * @param string $file Filename that the error was raised in + * @param int $line Line number the error was raised at + * + * @static + * @throws \ErrorException + * @return bool + */ + public static function handle($level, $message, $file, $line) + { + // error code is not included in error_reporting + if (!(error_reporting() & $level)) { + return; + } + + if (filter_var(ini_get('xdebug.scream'), FILTER_VALIDATE_BOOLEAN)) { + $message .= "\n\nWarning: You have xdebug.scream enabled, the warning above may be". + "\na legitimately suppressed error that you were not supposed to see."; + } + + if ($level !== E_DEPRECATED && $level !== E_USER_DEPRECATED) { + throw new \ErrorException($message, 0, $level, $file, $line); + } + + if (self::$io) { + self::$io->writeError('Deprecation Notice: '.$message.' in '.$file.':'.$line.''); + if (self::$io->isVerbose()) { + self::$io->writeError('Stack trace:'); + self::$io->writeError(array_filter(array_map(function ($a) { + if (isset($a['line'], $a['file'])) { + return ' '.$a['file'].':'.$a['line'].''; + } + + return null; + }, array_slice(debug_backtrace(), 2)))); + } + } + + return true; + } + + /** + * Register error handler. + * + * @param IOInterface|null $io + */ + public static function register(IOInterface $io = null) + { + set_error_handler(array(__CLASS__, 'handle')); + error_reporting(E_ALL | E_STRICT); + self::$io = $io; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Filesystem.php b/vendor/composer/composer/src/Composer/Util/Filesystem.php new file mode 100644 index 0000000..7cdad1d --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Filesystem.php @@ -0,0 +1,717 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use RecursiveDirectoryIterator; +use RecursiveIteratorIterator; +use Symfony\Component\Filesystem\Exception\IOException; +use Symfony\Component\Finder\Finder; + +/** + * @author Jordi Boggiano + * @author Johannes M. Schmitt + */ +class Filesystem +{ + private $processExecutor; + + public function __construct(ProcessExecutor $executor = null) + { + $this->processExecutor = $executor ?: new ProcessExecutor(); + } + + public function remove($file) + { + if (is_dir($file)) { + return $this->removeDirectory($file); + } + + if (file_exists($file)) { + return $this->unlink($file); + } + + return false; + } + + /** + * Checks if a directory is empty + * + * @param string $dir + * @return bool + */ + public function isDirEmpty($dir) + { + $finder = Finder::create() + ->ignoreVCS(false) + ->ignoreDotFiles(false) + ->depth(0) + ->in($dir); + + return count($finder) === 0; + } + + public function emptyDirectory($dir, $ensureDirectoryExists = true) + { + if (file_exists($dir) && is_link($dir)) { + $this->unlink($dir); + } + + if ($ensureDirectoryExists) { + $this->ensureDirectoryExists($dir); + } + + if (is_dir($dir)) { + $finder = Finder::create() + ->ignoreVCS(false) + ->ignoreDotFiles(false) + ->depth(0) + ->in($dir); + + foreach ($finder as $path) { + $this->remove((string) $path); + } + } + } + + /** + * Recursively remove a directory + * + * Uses the process component if proc_open is enabled on the PHP + * installation. + * + * @param string $directory + * @throws \RuntimeException + * @return bool + */ + public function removeDirectory($directory) + { + if ($this->isSymlinkedDirectory($directory)) { + return $this->unlinkSymlinkedDirectory($directory); + } + + if ($this->isJunction($directory)) { + return $this->removeJunction($directory); + } + + if (is_link($directory)) { + return unlink($directory); + } + + if (!file_exists($directory) || !is_dir($directory)) { + return true; + } + + if (preg_match('{^(?:[a-z]:)?[/\\\\]+$}i', $directory)) { + throw new \RuntimeException('Aborting an attempted deletion of '.$directory.', this was probably not intended, if it is a real use case please report it.'); + } + + if (!function_exists('proc_open')) { + return $this->removeDirectoryPhp($directory); + } + + if (Platform::isWindows()) { + $cmd = sprintf('rmdir /S /Q %s', ProcessExecutor::escape(realpath($directory))); + } else { + $cmd = sprintf('rm -rf %s', ProcessExecutor::escape($directory)); + } + + $result = $this->getProcess()->execute($cmd, $output) === 0; + + // clear stat cache because external processes aren't tracked by the php stat cache + clearstatcache(); + + if ($result && !file_exists($directory)) { + return true; + } + + return $this->removeDirectoryPhp($directory); + } + + /** + * Recursively delete directory using PHP iterators. + * + * Uses a CHILD_FIRST RecursiveIteratorIterator to sort files + * before directories, creating a single non-recursive loop + * to delete files/directories in the correct order. + * + * @param string $directory + * @return bool + */ + public function removeDirectoryPhp($directory) + { + try { + $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); + } catch (\UnexpectedValueException $e) { + // re-try once after clearing the stat cache if it failed as it + // sometimes fails without apparent reason, see https://github.com/composer/composer/issues/4009 + clearstatcache(); + usleep(100000); + if (!is_dir($directory)) { + return true; + } + $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); + } + $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + + foreach ($ri as $file) { + if ($file->isDir()) { + $this->rmdir($file->getPathname()); + } else { + $this->unlink($file->getPathname()); + } + } + + return $this->rmdir($directory); + } + + public function ensureDirectoryExists($directory) + { + if (!is_dir($directory)) { + if (file_exists($directory)) { + throw new \RuntimeException( + $directory.' exists and is not a directory.' + ); + } + if (!@mkdir($directory, 0777, true)) { + throw new \RuntimeException( + $directory.' does not exist and could not be created.' + ); + } + } + } + + /** + * Attempts to unlink a file and in case of failure retries after 350ms on windows + * + * @param string $path + * @throws \RuntimeException + * @return bool + */ + public function unlink($path) + { + $unlinked = @$this->unlinkImplementation($path); + if (!$unlinked) { + // retry after a bit on windows since it tends to be touchy with mass removals + if (Platform::isWindows()) { + usleep(350000); + $unlinked = @$this->unlinkImplementation($path); + } + + if (!$unlinked) { + $error = error_get_last(); + $message = 'Could not delete '.$path.': ' . @$error['message']; + if (Platform::isWindows()) { + $message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; + } + + throw new \RuntimeException($message); + } + } + + return true; + } + + /** + * Attempts to rmdir a file and in case of failure retries after 350ms on windows + * + * @param string $path + * @throws \RuntimeException + * @return bool + */ + public function rmdir($path) + { + $deleted = @rmdir($path); + if (!$deleted) { + // retry after a bit on windows since it tends to be touchy with mass removals + if (Platform::isWindows()) { + usleep(350000); + $deleted = @rmdir($path); + } + + if (!$deleted) { + $error = error_get_last(); + $message = 'Could not delete '.$path.': ' . @$error['message']; + if (Platform::isWindows()) { + $message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; + } + + throw new \RuntimeException($message); + } + } + + return true; + } + + /** + * Copy then delete is a non-atomic version of {@link rename}. + * + * Some systems can't rename and also don't have proc_open, + * which requires this solution. + * + * @param string $source + * @param string $target + */ + public function copyThenRemove($source, $target) + { + $this->copy($source, $target); + if (!is_dir($source)) { + $this->unlink($source); + + return; + } + + $this->removeDirectoryPhp($source); + } + + /** + * Copies a file or directory from $source to $target. + * + * @param string $source + * @param string $target + * @return bool + */ + public function copy($source, $target) + { + if (!is_dir($source)) { + return copy($source, $target); + } + + $it = new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS); + $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST); + $this->ensureDirectoryExists($target); + + $result = true; + foreach ($ri as $file) { + $targetPath = $target . DIRECTORY_SEPARATOR . $ri->getSubPathName(); + if ($file->isDir()) { + $this->ensureDirectoryExists($targetPath); + } else { + $result = $result && copy($file->getPathname(), $targetPath); + } + } + + return $result; + } + + public function rename($source, $target) + { + if (true === @rename($source, $target)) { + return; + } + + if (!function_exists('proc_open')) { + return $this->copyThenRemove($source, $target); + } + + if (Platform::isWindows()) { + // Try to copy & delete - this is a workaround for random "Access denied" errors. + $command = sprintf('xcopy %s %s /E /I /Q /Y', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); + $result = $this->processExecutor->execute($command, $output); + + // clear stat cache because external processes aren't tracked by the php stat cache + clearstatcache(); + + if (0 === $result) { + $this->remove($source); + + return; + } + } else { + // We do not use PHP's "rename" function here since it does not support + // the case where $source, and $target are located on different partitions. + $command = sprintf('mv %s %s', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); + $result = $this->processExecutor->execute($command, $output); + + // clear stat cache because external processes aren't tracked by the php stat cache + clearstatcache(); + + if (0 === $result) { + return; + } + } + + return $this->copyThenRemove($source, $target); + } + + /** + * Returns the shortest path from $from to $to + * + * @param string $from + * @param string $to + * @param bool $directories if true, the source/target are considered to be directories + * @throws \InvalidArgumentException + * @return string + */ + public function findShortestPath($from, $to, $directories = false) + { + if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { + throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); + } + + $from = lcfirst($this->normalizePath($from)); + $to = lcfirst($this->normalizePath($to)); + + if ($directories) { + $from = rtrim($from, '/') . '/dummy_file'; + } + + if (dirname($from) === dirname($to)) { + return './'.basename($to); + } + + $commonPath = $to; + while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !preg_match('{^[a-z]:/?$}i', $commonPath)) { + $commonPath = strtr(dirname($commonPath), '\\', '/'); + } + + if (0 !== strpos($from, $commonPath) || '/' === $commonPath) { + return $to; + } + + $commonPath = rtrim($commonPath, '/') . '/'; + $sourcePathDepth = substr_count(substr($from, strlen($commonPath)), '/'); + $commonPathCode = str_repeat('../', $sourcePathDepth); + + return ($commonPathCode . substr($to, strlen($commonPath))) ?: './'; + } + + /** + * Returns PHP code that, when executed in $from, will return the path to $to + * + * @param string $from + * @param string $to + * @param bool $directories if true, the source/target are considered to be directories + * @param bool $staticCode + * @throws \InvalidArgumentException + * @return string + */ + public function findShortestPathCode($from, $to, $directories = false, $staticCode = false) + { + if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { + throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); + } + + $from = lcfirst($this->normalizePath($from)); + $to = lcfirst($this->normalizePath($to)); + + if ($from === $to) { + return $directories ? '__DIR__' : '__FILE__'; + } + + $commonPath = $to; + while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !preg_match('{^[a-z]:/?$}i', $commonPath) && '.' !== $commonPath) { + $commonPath = strtr(dirname($commonPath), '\\', '/'); + } + + if (0 !== strpos($from, $commonPath) || '/' === $commonPath || '.' === $commonPath) { + return var_export($to, true); + } + + $commonPath = rtrim($commonPath, '/') . '/'; + if (strpos($to, $from.'/') === 0) { + return '__DIR__ . '.var_export(substr($to, strlen($from)), true); + } + $sourcePathDepth = substr_count(substr($from, strlen($commonPath)), '/') + $directories; + if ($staticCode) { + $commonPathCode = "__DIR__ . '".str_repeat('/..', $sourcePathDepth)."'"; + } else { + $commonPathCode = str_repeat('dirname(', $sourcePathDepth).'__DIR__'.str_repeat(')', $sourcePathDepth); + } + $relTarget = substr($to, strlen($commonPath)); + + return $commonPathCode . (strlen($relTarget) ? '.' . var_export('/' . $relTarget, true) : ''); + } + + /** + * Checks if the given path is absolute + * + * @param string $path + * @return bool + */ + public function isAbsolutePath($path) + { + return substr($path, 0, 1) === '/' || substr($path, 1, 1) === ':' || substr($path, 0, 2) === '\\\\'; + } + + /** + * Returns size of a file or directory specified by path. If a directory is + * given, it's size will be computed recursively. + * + * @param string $path Path to the file or directory + * @throws \RuntimeException + * @return int + */ + public function size($path) + { + if (!file_exists($path)) { + throw new \RuntimeException("$path does not exist."); + } + if (is_dir($path)) { + return $this->directorySize($path); + } + + return filesize($path); + } + + /** + * Normalize a path. This replaces backslashes with slashes, removes ending + * slash and collapses redundant separators and up-level references. + * + * @param string $path Path to the file or directory + * @return string + */ + public function normalizePath($path) + { + $parts = array(); + $path = strtr($path, '\\', '/'); + $prefix = ''; + $absolute = false; + + // extract a prefix being a protocol://, protocol:, protocol://drive: or simply drive: + if (preg_match('{^( [0-9a-z]{2,}+: (?: // (?: [a-z]: )? )? | [a-z]: )}ix', $path, $match)) { + $prefix = $match[1]; + $path = substr($path, strlen($prefix)); + } + + if (substr($path, 0, 1) === '/') { + $absolute = true; + $path = substr($path, 1); + } + + $up = false; + foreach (explode('/', $path) as $chunk) { + if ('..' === $chunk && ($absolute || $up)) { + array_pop($parts); + $up = !(empty($parts) || '..' === end($parts)); + } elseif ('.' !== $chunk && '' !== $chunk) { + $parts[] = $chunk; + $up = '..' !== $chunk; + } + } + + return $prefix.($absolute ? '/' : '').implode('/', $parts); + } + + /** + * Return if the given path is local + * + * @param string $path + * @return bool + */ + public static function isLocalPath($path) + { + return (bool) preg_match('{^(file://(?!//)|/(?!/)|/?[a-z]:[\\\\/]|\.\.[\\\\/]|[a-z0-9_.-]+[\\\\/])}i', $path); + } + + public static function getPlatformPath($path) + { + if (Platform::isWindows()) { + $path = preg_replace('{^(?:file:///([a-z]):?/)}i', 'file://$1:/', $path); + } + + return preg_replace('{^file://}i', '', $path); + } + + protected function directorySize($directory) + { + $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); + $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + + $size = 0; + foreach ($ri as $file) { + if ($file->isFile()) { + $size += $file->getSize(); + } + } + + return $size; + } + + protected function getProcess() + { + return $this->processExecutor; + } + + /** + * delete symbolic link implementation (commonly known as "unlink()") + * + * symbolic links on windows which link to directories need rmdir instead of unlink + * + * @param string $path + * + * @return bool + */ + private function unlinkImplementation($path) + { + if (Platform::isWindows() && is_dir($path) && is_link($path)) { + return rmdir($path); + } + + return unlink($path); + } + + /** + * Creates a relative symlink from $link to $target + * + * @param string $target The path of the binary file to be symlinked + * @param string $link The path where the symlink should be created + * @return bool + */ + public function relativeSymlink($target, $link) + { + $cwd = getcwd(); + + $relativePath = $this->findShortestPath($link, $target); + chdir(dirname($link)); + $result = @symlink($relativePath, $link); + + chdir($cwd); + + return $result; + } + + /** + * return true if that directory is a symlink. + * + * @param string $directory + * + * @return bool + */ + public function isSymlinkedDirectory($directory) + { + if (!is_dir($directory)) { + return false; + } + + $resolved = $this->resolveSymlinkedDirectorySymlink($directory); + + return is_link($resolved); + } + + /** + * @param string $directory + * + * @return bool + */ + private function unlinkSymlinkedDirectory($directory) + { + $resolved = $this->resolveSymlinkedDirectorySymlink($directory); + + return $this->unlink($resolved); + } + + /** + * resolve pathname to symbolic link of a directory + * + * @param string $pathname directory path to resolve + * + * @return string resolved path to symbolic link or original pathname (unresolved) + */ + private function resolveSymlinkedDirectorySymlink($pathname) + { + if (!is_dir($pathname)) { + return $pathname; + } + + $resolved = rtrim($pathname, '/'); + + if (!strlen($resolved)) { + return $pathname; + } + + return $resolved; + } + + /** + * Creates an NTFS junction. + * + * @param string $target + * @param string $junction + */ + public function junction($target, $junction) + { + if (!Platform::isWindows()) { + throw new \LogicException(sprintf('Function %s is not available on non-Windows platform', __CLASS__)); + } + if (!is_dir($target)) { + throw new IOException(sprintf('Cannot junction to "%s" as it is not a directory.', $target), 0, null, $target); + } + $cmd = sprintf( + 'mklink /J %s %s', + ProcessExecutor::escape(str_replace('/', DIRECTORY_SEPARATOR, $junction)), + ProcessExecutor::escape(realpath($target)) + ); + if ($this->getProcess()->execute($cmd, $output) !== 0) { + throw new IOException(sprintf('Failed to create junction to "%s" at "%s".', $target, $junction), 0, null, $target); + } + clearstatcache(true, $junction); + } + + /** + * Returns whether the target directory is a Windows NTFS Junction. + * + * We test if the path is a directory and not an ordinary link, then check + * that the mode value returned from lstat (which gives the status of the + * link itself) is not a directory, by replicating the POSIX S_ISDIR test. + * + * This logic works because PHP does not set the mode value for a junction, + * since there is no universal file type flag for it. Unfortunately an + * uninitialized variable in PHP prior to 7.2.16 and 7.3.3 may cause a + * random value to be returned. See https://bugs.php.net/bug.php?id=77552 + * + * If this random value passes the S_ISDIR test, then a junction will not be + * detected and a recursive delete operation could lead to loss of data in + * the target directory. Note that Windows rmdir can handle this situation + * and will only delete the junction (from Windows 7 onwards). + * + * @param string $junction Path to check. + * @return bool + */ + public function isJunction($junction) + { + if (!Platform::isWindows()) { + return false; + } + + // Important to clear all caches first + clearstatcache(true, $junction); + + if (!is_dir($junction) || is_link($junction)) { + return false; + } + + $stat = lstat($junction); + + // S_ISDIR test (S_IFDIR is 0x4000, S_IFMT is 0xF000 bitmask) + return $stat ? 0x4000 !== ($stat['mode'] & 0xF000) : false; + } + + /** + * Removes a Windows NTFS junction. + * + * @param string $junction + * @return bool + */ + public function removeJunction($junction) + { + if (!Platform::isWindows()) { + return false; + } + $junction = rtrim(str_replace('/', DIRECTORY_SEPARATOR, $junction), DIRECTORY_SEPARATOR); + if (!$this->isJunction($junction)) { + throw new IOException(sprintf('%s is not a junction and thus cannot be removed as one', $junction)); + } + + return $this->rmdir($junction); + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Git.php b/vendor/composer/composer/src/Composer/Util/Git.php new file mode 100644 index 0000000..81c6850 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Git.php @@ -0,0 +1,401 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Config; +use Composer\IO\IOInterface; + +/** + * @author Jordi Boggiano + */ +class Git +{ + private static $version; + + /** @var IOInterface */ + protected $io; + /** @var Config */ + protected $config; + /** @var ProcessExecutor */ + protected $process; + /** @var Filesystem */ + protected $filesystem; + + public function __construct(IOInterface $io, Config $config, ProcessExecutor $process, Filesystem $fs) + { + $this->io = $io; + $this->config = $config; + $this->process = $process; + $this->filesystem = $fs; + } + + public function runCommand($commandCallable, $url, $cwd, $initialClone = false) + { + // Ensure we are allowed to use this URL by config + $this->config->prohibitUrlByConfig($url, $this->io); + + if ($initialClone) { + $origCwd = $cwd; + $cwd = null; + } + + if (preg_match('{^ssh://[^@]+@[^:]+:[^0-9]+}', $url)) { + throw new \InvalidArgumentException('The source URL ' . $url . ' is invalid, ssh URLs should have a port number after ":".' . "\n" . 'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); + } + + if (!$initialClone) { + // capture username/password from URL if there is one and we have no auth configured yet + $this->process->execute('git remote -v', $output, $cwd); + if (preg_match('{^(?:composer|origin)\s+https?://(.+):(.+)@([^/]+)}im', $output, $match) && !$this->io->hasAuthentication($match[3])) { + $this->io->setAuthentication($match[3], rawurldecode($match[1]), rawurldecode($match[2])); + } + } + + $protocols = $this->config->get('github-protocols'); + if (!is_array($protocols)) { + throw new \RuntimeException('Config value "github-protocols" must be an array, got ' . gettype($protocols)); + } + // public github, autoswitch protocols + if (preg_match('{^(?:https?|git)://' . self::getGitHubDomainsRegex($this->config) . '/(.*)}', $url, $match)) { + $messages = array(); + foreach ($protocols as $protocol) { + if ('ssh' === $protocol) { + $protoUrl = "git@" . $match[1] . ":" . $match[2]; + } else { + $protoUrl = $protocol . "://" . $match[1] . "/" . $match[2]; + } + + if (0 === $this->process->execute(call_user_func($commandCallable, $protoUrl), $ignoredOutput, $cwd)) { + return; + } + $messages[] = '- ' . $protoUrl . "\n" . preg_replace('#^#m', ' ', $this->process->getErrorOutput()); + if ($initialClone) { + $this->filesystem->removeDirectory($origCwd); + } + } + + // failed to checkout, first check git accessibility + if (!$this->io->hasAuthentication($match[1]) && !$this->io->isInteractive()) { + $this->throwException('Failed to clone ' . $url . ' via ' . implode(', ', $protocols) . ' protocols, aborting.' . "\n\n" . implode("\n", $messages), $url); + } + } + + // if we have a private github url and the ssh protocol is disabled then we skip it and directly fallback to https + $bypassSshForGitHub = preg_match('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url) && !in_array('ssh', $protocols, true); + + $command = call_user_func($commandCallable, $url); + + $auth = null; + if ($bypassSshForGitHub || 0 !== $this->process->execute($command, $ignoredOutput, $cwd)) { + // private github repository without ssh key access, try https with auth + if (preg_match('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url, $match) + || preg_match('{^https?://' . self::getGitHubDomainsRegex($this->config) . '/(.*)}', $url, $match) + ) { + if (!$this->io->hasAuthentication($match[1])) { + $gitHubUtil = new GitHub($this->io, $this->config, $this->process); + $message = 'Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos'; + + if (!$gitHubUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { + $gitHubUtil->authorizeOAuthInteractively($match[1], $message); + } + } + + if ($this->io->hasAuthentication($match[1])) { + $auth = $this->io->getAuthentication($match[1]); + $authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; + $command = call_user_func($commandCallable, $authUrl); + if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { + return; + } + } + } elseif (preg_match('{^https://(bitbucket\.org)/(.*)(\.git)?$}U', $url, $match)) { //bitbucket oauth + $bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process); + + if (!$this->io->hasAuthentication($match[1])) { + $message = 'Enter your Bitbucket credentials to access private repos'; + + if (!$bitbucketUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { + $bitbucketUtil->authorizeOAuthInteractively($match[1], $message); + $accessToken = $bitbucketUtil->getToken(); + $this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); + } + } else { //We're authenticating with a locally stored consumer. + $auth = $this->io->getAuthentication($match[1]); + + //We already have an access_token from a previous request. + if ($auth['username'] !== 'x-token-auth') { + $accessToken = $bitbucketUtil->requestToken($match[1], $auth['username'], $auth['password']); + if (! empty($accessToken)) { + $this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); + } + } + } + + if ($this->io->hasAuthentication($match[1])) { + $auth = $this->io->getAuthentication($match[1]); + $authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; + + $command = call_user_func($commandCallable, $authUrl); + if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { + return; + } + } else { // Falling back to ssh + $sshUrl = 'git@bitbucket.org:' . $match[2] . '.git'; + $this->io->writeError(' No bitbucket authentication configured. Falling back to ssh.'); + $command = call_user_func($commandCallable, $sshUrl); + if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { + return; + } + } + } elseif ( + preg_match('{^(git)@' . self::getGitLabDomainsRegex($this->config) . ':(.+?)\.git$}i', $url, $match) + || preg_match('{^(https?)://' . self::getGitLabDomainsRegex($this->config) . '/(.*)}', $url, $match) + ) { + if ($match[1] === 'git') { + $match[1] = 'https'; + } + + if (!$this->io->hasAuthentication($match[2])) { + $gitLabUtil = new GitLab($this->io, $this->config, $this->process); + $message = 'Cloning failed, enter your GitLab credentials to access private repos'; + + if (!$gitLabUtil->authorizeOAuth($match[2]) && $this->io->isInteractive()) { + $gitLabUtil->authorizeOAuthInteractively($match[1], $match[2], $message); + } + } + + if ($this->io->hasAuthentication($match[2])) { + $auth = $this->io->getAuthentication($match[2]); + if ($auth['password'] === 'private-token' || $auth['password'] === 'oauth2' || $auth['password'] === 'gitlab-ci-token') { + $authUrl = $match[1] . '://' . rawurlencode($auth['password']) . ':' . rawurlencode($auth['username']) . '@' . $match[2] . '/' . $match[3]; // swap username and password + } else { + $authUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . '/' . $match[3]; + } + + $command = call_user_func($commandCallable, $authUrl); + if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { + return; + } + } + } elseif ($this->isAuthenticationFailure($url, $match)) { // private non-github/gitlab/bitbucket repo that failed to authenticate + if (strpos($match[2], '@')) { + list($authParts, $match[2]) = explode('@', $match[2], 2); + } + + $storeAuth = false; + if ($this->io->hasAuthentication($match[2])) { + $auth = $this->io->getAuthentication($match[2]); + } elseif ($this->io->isInteractive()) { + $defaultUsername = null; + if (isset($authParts) && $authParts) { + if (false !== strpos($authParts, ':')) { + list($defaultUsername, ) = explode(':', $authParts, 2); + } else { + $defaultUsername = $authParts; + } + } + + $this->io->writeError(' Authentication required (' . $match[2] . '):'); + $auth = array( + 'username' => $this->io->ask(' Username: ', $defaultUsername), + 'password' => $this->io->askAndHideAnswer(' Password: '), + ); + $storeAuth = $this->config->get('store-auths'); + } + + if ($auth) { + $authUrl = $match[1] . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . $match[3]; + + $command = call_user_func($commandCallable, $authUrl); + if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { + $this->io->setAuthentication($match[2], $auth['username'], $auth['password']); + $authHelper = new AuthHelper($this->io, $this->config); + $authHelper->storeAuth($match[2], $storeAuth); + + return; + } + } + } + + $errorMsg = $this->process->getErrorOutput(); + if ($initialClone) { + $this->filesystem->removeDirectory($origCwd); + } + + $this->throwException('Failed to execute ' . $command . "\n\n" . $errorMsg, $url); + } + } + + public function syncMirror($url, $dir) + { + // update the repo if it is a valid git repository + if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { + try { + $commandCallable = function ($url) { + $sanitizedUrl = preg_replace('{://([^@]+?):(.+?)@}', '://', $url); + + return sprintf('git remote set-url origin %s && git remote update --prune origin && git remote set-url origin %s', ProcessExecutor::escape($url), ProcessExecutor::escape($sanitizedUrl)); + }; + $this->runCommand($commandCallable, $url, $dir); + } catch (\Exception $e) { + return false; + } + + return true; + } + + // clean up directory and do a fresh clone into it + $this->filesystem->removeDirectory($dir); + + $commandCallable = function ($url) use ($dir) { + return sprintf('git clone --mirror %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($dir)); + }; + + $this->runCommand($commandCallable, $url, $dir, true); + + return true; + } + + public function fetchRefOrSyncMirror($url, $dir, $ref) + { + if ($this->checkRefIsInMirror($url, $dir, $ref)) { + return true; + } + + if ($this->syncMirror($url, $dir)) { + return $this->checkRefIsInMirror($url, $dir, $ref); + } + + return false; + } + + private function checkRefIsInMirror($url, $dir, $ref) + { + if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { + $escapedRef = ProcessExecutor::escape($ref.'^{commit}'); + $exitCode = $this->process->execute(sprintf('git rev-parse --quiet --verify %s', $escapedRef), $ignoredOutput, $dir); + if ($exitCode === 0) { + return true; + } + } + + return false; + } + + private function isAuthenticationFailure($url, &$match) + { + if (!preg_match('{^(https?://)([^/]+)(.*)$}i', $url, $match)) { + return false; + } + + $authFailures = array( + 'fatal: Authentication failed', + 'remote error: Invalid username or password.', + 'error: 401 Unauthorized', + 'fatal: unable to access', + 'fatal: could not read Username', + ); + + $errorOutput = $this->process->getErrorOutput(); + foreach ($authFailures as $authFailure) { + if (strpos($errorOutput, $authFailure) !== false) { + return true; + } + } + + return false; + } + + public static function cleanEnv() + { + if (PHP_VERSION_ID < 50400 && ini_get('safe_mode') && false === strpos(ini_get('safe_mode_allowed_env_vars'), 'GIT_ASKPASS')) { + throw new \RuntimeException('safe_mode is enabled and safe_mode_allowed_env_vars does not contain GIT_ASKPASS, can not set env var. You can disable safe_mode with "-dsafe_mode=0" when running composer'); + } + + // added in git 1.7.1, prevents prompting the user for username/password + if (getenv('GIT_ASKPASS') !== 'echo') { + putenv('GIT_ASKPASS=echo'); + unset($_SERVER['GIT_ASKPASS']); + } + + // clean up rogue git env vars in case this is running in a git hook + if (getenv('GIT_DIR')) { + putenv('GIT_DIR'); + unset($_SERVER['GIT_DIR']); + } + if (getenv('GIT_WORK_TREE')) { + putenv('GIT_WORK_TREE'); + unset($_SERVER['GIT_WORK_TREE']); + } + + // Run processes with predictable LANGUAGE + if (getenv('LANGUAGE') !== 'C') { + putenv('LANGUAGE=C'); + } + + // clean up env for OSX, see https://github.com/composer/composer/issues/2146#issuecomment-35478940 + putenv("DYLD_LIBRARY_PATH"); + unset($_SERVER['DYLD_LIBRARY_PATH']); + } + + public static function getGitHubDomainsRegex(Config $config) + { + return '(' . implode('|', array_map('preg_quote', $config->get('github-domains'))) . ')'; + } + + public static function getGitLabDomainsRegex(Config $config) + { + return '(' . implode('|', array_map('preg_quote', $config->get('gitlab-domains'))) . ')'; + } + + public static function sanitizeUrl($message) + { + return preg_replace_callback('{://(?P[^@]+?):(?P.+?)@}', function ($m) { + if (preg_match('{^[a-f0-9]{12,}$}', $m[1])) { + return '://***:***@'; + } + + return '://' . $m[1] . ':***@'; + }, $message); + } + + private function throwException($message, $url) + { + // git might delete a directory when it fails and php will not know + clearstatcache(); + + if (0 !== $this->process->execute('git --version', $ignoredOutput)) { + throw new \RuntimeException(self::sanitizeUrl('Failed to clone ' . $url . ', git was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); + } + + throw new \RuntimeException(self::sanitizeUrl($message)); + } + + /** + * Retrieves the current git version. + * + * @return string|null The git version number. + */ + public function getVersion() + { + if (isset(self::$version)) { + return self::$version; + } + if (0 !== $this->process->execute('git --version', $output)) { + return; + } + if (preg_match('/^git version (\d+(?:\.\d+)+)/m', $output, $matches)) { + return self::$version = $matches[1]; + } + } +} diff --git a/vendor/composer/composer/src/Composer/Util/GitHub.php b/vendor/composer/composer/src/Composer/Util/GitHub.php new file mode 100644 index 0000000..1eca1a9 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/GitHub.php @@ -0,0 +1,180 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Factory; +use Composer\IO\IOInterface; +use Composer\Config; +use Composer\Downloader\TransportException; + +/** + * @author Jordi Boggiano + */ +class GitHub +{ + protected $io; + protected $config; + protected $process; + protected $remoteFilesystem; + + /** + * Constructor. + * + * @param IOInterface $io The IO instance + * @param Config $config The composer configuration + * @param ProcessExecutor $process Process instance, injectable for mocking + * @param RemoteFilesystem $remoteFilesystem Remote Filesystem, injectable for mocking + */ + public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, RemoteFilesystem $remoteFilesystem = null) + { + $this->io = $io; + $this->config = $config; + $this->process = $process ?: new ProcessExecutor($io); + $this->remoteFilesystem = $remoteFilesystem ?: Factory::createRemoteFilesystem($this->io, $config); + } + + /** + * Attempts to authorize a GitHub domain via OAuth + * + * @param string $originUrl The host this GitHub instance is located at + * @return bool true on success + */ + public function authorizeOAuth($originUrl) + { + if (!in_array($originUrl, $this->config->get('github-domains'))) { + return false; + } + + // if available use token from git config + if (0 === $this->process->execute('git config github.accesstoken', $output)) { + $this->io->setAuthentication($originUrl, trim($output), 'x-oauth-basic'); + + return true; + } + + return false; + } + + /** + * Authorizes a GitHub domain interactively via OAuth + * + * @param string $originUrl The host this GitHub instance is located at + * @param string $message The reason this authorization is required + * @throws \RuntimeException + * @throws TransportException|\Exception + * @return bool true on success + */ + public function authorizeOAuthInteractively($originUrl, $message = null) + { + if ($message) { + $this->io->writeError($message); + } + + $note = 'Composer'; + if ($this->config->get('github-expose-hostname') === true && 0 === $this->process->execute('hostname', $output)) { + $note .= ' on ' . trim($output); + } + $note .= ' ' . date('Y-m-d Hi'); + + $url = 'https://'.$originUrl.'/settings/tokens/new?scopes=repo&description=' . str_replace('%20', '+', rawurlencode($note)); + $this->io->writeError(sprintf('Head to %s', $url)); + $this->io->writeError(sprintf('to retrieve a token. It will be stored in "%s" for future use by Composer.', $this->config->getAuthConfigSource()->getName())); + + $token = trim($this->io->askAndHideAnswer('Token (hidden): ')); + + if (!$token) { + $this->io->writeError('No token given, aborting.'); + $this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); + + return false; + } + + $this->io->setAuthentication($originUrl, $token, 'x-oauth-basic'); + + try { + $apiUrl = ('github.com' === $originUrl) ? 'api.github.com/' : $originUrl . '/api/v3/'; + + $this->remoteFilesystem->getContents($originUrl, 'https://'. $apiUrl, false, array( + 'retry-auth-failure' => false, + )); + } catch (TransportException $e) { + if (in_array($e->getCode(), array(403, 401))) { + $this->io->writeError('Invalid token provided.'); + $this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); + + return false; + } + + throw $e; + } + + // store value in user config + $this->config->getConfigSource()->removeConfigSetting('github-oauth.'.$originUrl); + $this->config->getAuthConfigSource()->addConfigSetting('github-oauth.'.$originUrl, $token); + + $this->io->writeError('Token stored successfully.'); + + return true; + } + + /** + * Extract ratelimit from response. + * + * @param array $headers Headers from Composer\Downloader\TransportException. + * + * @return array Associative array with the keys limit and reset. + */ + public function getRateLimit(array $headers) + { + $rateLimit = array( + 'limit' => '?', + 'reset' => '?', + ); + + foreach ($headers as $header) { + $header = trim($header); + if (false === strpos($header, 'X-RateLimit-')) { + continue; + } + list($type, $value) = explode(':', $header, 2); + switch ($type) { + case 'X-RateLimit-Limit': + $rateLimit['limit'] = (int) trim($value); + break; + case 'X-RateLimit-Reset': + $rateLimit['reset'] = date('Y-m-d H:i:s', (int) trim($value)); + break; + } + } + + return $rateLimit; + } + + /** + * Finds whether a request failed due to rate limiting + * + * @param array $headers Headers from Composer\Downloader\TransportException. + * + * @return bool + */ + public function isRateLimited(array $headers) + { + foreach ($headers as $header) { + if (preg_match('{^X-RateLimit-Remaining: *0$}i', trim($header))) { + return true; + } + } + + return false; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/GitLab.php b/vendor/composer/composer/src/Composer/Util/GitLab.php new file mode 100644 index 0000000..7a69ad2 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/GitLab.php @@ -0,0 +1,172 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\IO\IOInterface; +use Composer\Config; +use Composer\Factory; +use Composer\Downloader\TransportException; +use Composer\Json\JsonFile; + +/** + * @author Roshan Gautam + */ +class GitLab +{ + protected $io; + protected $config; + protected $process; + protected $remoteFilesystem; + + /** + * Constructor. + * + * @param IOInterface $io The IO instance + * @param Config $config The composer configuration + * @param ProcessExecutor $process Process instance, injectable for mocking + * @param RemoteFilesystem $remoteFilesystem Remote Filesystem, injectable for mocking + */ + public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, RemoteFilesystem $remoteFilesystem = null) + { + $this->io = $io; + $this->config = $config; + $this->process = $process ?: new ProcessExecutor($io); + $this->remoteFilesystem = $remoteFilesystem ?: Factory::createRemoteFilesystem($this->io, $config); + } + + /** + * Attempts to authorize a GitLab domain via OAuth. + * + * @param string $originUrl The host this GitLab instance is located at + * + * @return bool true on success + */ + public function authorizeOAuth($originUrl) + { + // before composer 1.9, origin URLs had no port number in them + $bcOriginUrl = preg_replace('{:\d+}', '', $originUrl); + + if (!in_array($originUrl, $this->config->get('gitlab-domains'), true) && !in_array($bcOriginUrl, $this->config->get('gitlab-domains'), true)) { + return false; + } + + // if available use token from git config + if (0 === $this->process->execute('git config gitlab.accesstoken', $output)) { + $this->io->setAuthentication($originUrl, trim($output), 'oauth2'); + + return true; + } + + // if available use token from composer config + $authTokens = $this->config->get('gitlab-token'); + + if (isset($authTokens[$originUrl])) { + $this->io->setAuthentication($originUrl, $authTokens[$originUrl], 'private-token'); + + return true; + } + + if (isset($authTokens[$bcOriginUrl])) { + $this->io->setAuthentication($originUrl, $authTokens[$bcOriginUrl], 'private-token'); + + return true; + } + + return false; + } + + /** + * Authorizes a GitLab domain interactively via OAuth. + * + * @param string $scheme Scheme used in the origin URL + * @param string $originUrl The host this GitLab instance is located at + * @param string $message The reason this authorization is required + * + * @throws \RuntimeException + * @throws TransportException|\Exception + * + * @return bool true on success + */ + public function authorizeOAuthInteractively($scheme, $originUrl, $message = null) + { + if ($message) { + $this->io->writeError($message); + } + + $this->io->writeError(sprintf('A token will be created and stored in "%s", your password will never be stored', $this->config->getAuthConfigSource()->getName())); + $this->io->writeError('To revoke access to this token you can visit '.$originUrl.'/profile/applications'); + + $attemptCounter = 0; + + while ($attemptCounter++ < 5) { + try { + $response = $this->createToken($scheme, $originUrl); + } catch (TransportException $e) { + // 401 is bad credentials, + // 403 is max login attempts exceeded + if (in_array($e->getCode(), array(403, 401))) { + if (401 === $e->getCode()) { + $this->io->writeError('Bad credentials.'); + } else { + $this->io->writeError('Maximum number of login attempts exceeded. Please try again later.'); + } + + $this->io->writeError('You can also manually create a personal token at '.$scheme.'://'.$originUrl.'/profile/personal_access_tokens'); + $this->io->writeError('Add it using "composer config --global --auth gitlab-token.'.$originUrl.' "'); + + continue; + } + + throw $e; + } + + $this->io->setAuthentication($originUrl, $response['access_token'], 'oauth2'); + + // store value in user config in auth file + $this->config->getAuthConfigSource()->addConfigSetting('gitlab-oauth.'.$originUrl, $response['access_token']); + + return true; + } + + throw new \RuntimeException('Invalid GitLab credentials 5 times in a row, aborting.'); + } + + private function createToken($scheme, $originUrl) + { + $username = $this->io->ask('Username: '); + $password = $this->io->askAndHideAnswer('Password: '); + + $headers = array('Content-Type: application/x-www-form-urlencoded'); + + $apiUrl = $originUrl; + $data = http_build_query(array( + 'username' => $username, + 'password' => $password, + 'grant_type' => 'password', + ), null, '&'); + $options = array( + 'retry-auth-failure' => false, + 'http' => array( + 'method' => 'POST', + 'header' => $headers, + 'content' => $data, + ), + ); + + $json = $this->remoteFilesystem->getContents($originUrl, $scheme.'://'.$apiUrl.'/oauth/token', false, $options); + + $this->io->writeError('Token successfully created'); + + return JsonFile::parseJson($json); + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Hg.php b/vendor/composer/composer/src/Composer/Util/Hg.php new file mode 100644 index 0000000..8cf6241 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Hg.php @@ -0,0 +1,94 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Config; +use Composer\IO\IOInterface; + +/** + * @author Jonas Renaudot + */ +class Hg +{ + /** + * @var \Composer\IO\IOInterface + */ + private $io; + + /** + * @var \Composer\Config + */ + private $config; + + /** + * @var \Composer\Util\ProcessExecutor + */ + private $process; + + public function __construct(IOInterface $io, Config $config, ProcessExecutor $process) + { + $this->io = $io; + $this->config = $config; + $this->process = $process; + } + + public function runCommand($commandCallable, $url, $cwd) + { + $this->config->prohibitUrlByConfig($url, $this->io); + + // Try as is + $command = call_user_func($commandCallable, $url); + + if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { + return; + } + + // Try with the authentication informations available + if (preg_match('{^(https?)://((.+)(?:\:(.+))?@)?([^/]+)(/.*)?}mi', $url, $match) && $this->io->hasAuthentication($match[5])) { + $auth = $this->io->getAuthentication($match[5]); + $authenticatedUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[5] . (!empty($match[6]) ? $match[6] : null); + + $command = call_user_func($commandCallable, $authenticatedUrl); + + if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { + return; + } + + $error = $this->process->getErrorOutput(); + } else { + $error = 'The given URL (' . $url . ') does not match the required format (http(s)://(username:password@)example.com/path-to-repository)'; + } + + $this->throwException('Failed to clone ' . $url . ', ' . "\n\n" . $error, $url); + } + + public static function sanitizeUrl($message) + { + return preg_replace_callback('{://(?P[^@]+?):(?P.+?)@}', function ($m) { + if (preg_match('{^[a-f0-9]{12,}$}', $m[1])) { + return '://***:***@'; + } + + return '://' . $m[1] . ':***@'; + }, $message); + } + + private function throwException($message, $url) + { + if (0 !== $this->process->execute('hg --version', $ignoredOutput)) { + throw new \RuntimeException(self::sanitizeUrl('Failed to clone ' . $url . ', hg was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); + } + + throw new \RuntimeException(self::sanitizeUrl($message)); + } +} diff --git a/vendor/composer/composer/src/Composer/Util/IniHelper.php b/vendor/composer/composer/src/Composer/Util/IniHelper.php new file mode 100644 index 0000000..d655419 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/IniHelper.php @@ -0,0 +1,64 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\XdebugHandler\XdebugHandler; + +/** + * Provides ini file location functions that work with and without a restart. + * When the process has restarted it uses a tmp ini and stores the original + * ini locations in an environment variable. + * + * @author John Stevenson + */ +class IniHelper +{ + /** + * Returns an array of php.ini locations with at least one entry + * + * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files. + * The loaded ini location is the first entry and may be empty. + * + * @return array + */ + public static function getAll() + { + return XdebugHandler::getAllIniFiles(); + } + + /** + * Describes the location of the loaded php.ini file(s) + * + * @return string + */ + public static function getMessage() + { + $paths = self::getAll(); + + if (empty($paths[0])) { + array_shift($paths); + } + + $ini = array_shift($paths); + + if (empty($ini)) { + return 'A php.ini file does not exist. You will have to create one.'; + } + + if (!empty($paths)) { + return 'Your command-line PHP is using multiple ini files. Run `php --ini` to show them.'; + } + + return 'The php.ini used by your command-line PHP is: '.$ini; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php b/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php new file mode 100644 index 0000000..a6cb112 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php @@ -0,0 +1,147 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +/** + * Tests URLs against no_proxy patterns. + */ +class NoProxyPattern +{ + /** + * @var string[] + */ + protected $rules = array(); + + /** + * @param string $pattern no_proxy pattern + */ + public function __construct($pattern) + { + $this->rules = preg_split("/[\s,]+/", $pattern); + } + + /** + * Test a URL against the stored pattern. + * + * @param string $url + * + * @return bool true if the URL matches one of the rules. + */ + public function test($url) + { + $host = parse_url($url, PHP_URL_HOST); + $port = parse_url($url, PHP_URL_PORT); + + if (empty($port)) { + switch (parse_url($url, PHP_URL_SCHEME)) { + case 'http': + $port = 80; + break; + case 'https': + $port = 443; + break; + } + } + + foreach ($this->rules as $rule) { + if ($rule == '*') { + return true; + } + + $match = false; + + list($ruleHost) = explode(':', $rule); + list($base) = explode('/', $ruleHost); + + if (filter_var($base, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + // ip or cidr match + + if (!isset($ip)) { + $ip = gethostbyname($host); + } + + if (strpos($ruleHost, '/') === false) { + $match = $ip === $ruleHost; + } else { + // gethostbyname() failed to resolve $host to an ip, so we assume + // it must be proxied to let the proxy's DNS resolve it + if ($ip === $host) { + $match = false; + } else { + // match resolved IP against the rule + $match = self::inCIDRBlock($ruleHost, $ip); + } + } + } else { + // match end of domain + + $haystack = '.' . trim($host, '.') . '.'; + $needle = '.'. trim($ruleHost, '.') .'.'; + $match = stripos(strrev($haystack), strrev($needle)) === 0; + } + + // final port check + if ($match && strpos($rule, ':') !== false) { + list(, $rulePort) = explode(':', $rule); + if (!empty($rulePort) && $port != $rulePort) { + $match = false; + } + } + + if ($match) { + return true; + } + } + + return false; + } + + /** + * Check an IP address against a CIDR + * + * http://framework.zend.com/svn/framework/extras/incubator/library/ZendX/Whois/Adapter/Cidr.php + * + * @param string $cidr IPv4 block in CIDR notation + * @param string $ip IPv4 address + * + * @return bool + */ + private static function inCIDRBlock($cidr, $ip) + { + // Get the base and the bits from the CIDR + list($base, $bits) = explode('/', $cidr); + + // Now split it up into it's classes + list($a, $b, $c, $d) = explode('.', $base); + + // Now do some bit shifting/switching to convert to ints + $i = ($a << 24) + ($b << 16) + ($c << 8) + $d; + $mask = $bits == 0 ? 0 : (~0 << (32 - $bits)); + + // Here's our lowest int + $low = $i & $mask; + + // Here's our highest int + $high = $i | (~$mask & 0xFFFFFFFF); + + // Now split the ip we're checking against up into classes + list($a, $b, $c, $d) = explode('.', $ip); + + // Now convert the ip we're checking against to an int + $check = ($a << 24) + ($b << 16) + ($c << 8) + $d; + + // If the ip is within the range, including highest/lowest values, + // then it's within the CIDR range + return $check >= $low && $check <= $high; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/PackageSorter.php b/vendor/composer/composer/src/Composer/Util/PackageSorter.php new file mode 100644 index 0000000..8d8c9a0 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/PackageSorter.php @@ -0,0 +1,92 @@ +getRequires(), $package->getDevRequires()) as $link) { /** @var Link $link */ + $target = $link->getTarget(); + $usageList[$target][] = $package->getName(); + } + } + $computing = array(); + $computed = array(); + $computeImportance = function ($name) use (&$computeImportance, &$computing, &$computed, $usageList) { + // reusing computed importance + if (isset($computed[$name])) { + return $computed[$name]; + } + + // canceling circular dependency + if (isset($computing[$name])) { + return 0; + } + + $computing[$name] = true; + $weight = 0; + + if (isset($usageList[$name])) { + foreach ($usageList[$name] as $user) { + $weight -= 1 - $computeImportance($user); + } + } + + unset($computing[$name]); + $computed[$name] = $weight; + + return $weight; + }; + + $weightList = array(); + + foreach ($packages as $name => $package) { + $weight = $computeImportance($name); + $weightList[$name] = $weight; + } + + $stable_sort = function (&$array) { + static $transform, $restore; + + $i = 0; + + if (!$transform) { + $transform = function (&$v, $k) use (&$i) { + $v = array($v, ++$i, $k, $v); + }; + + $restore = function (&$v) { + $v = $v[3]; + }; + } + + array_walk($array, $transform); + asort($array); + array_walk($array, $restore); + }; + + $stable_sort($weightList); + + $sortedPackages = array(); + + foreach (array_keys($weightList) as $name) { + $sortedPackages[] = $packages[$name]; + } + return $sortedPackages; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Perforce.php b/vendor/composer/composer/src/Composer/Util/Perforce.php new file mode 100644 index 0000000..52080d6 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Perforce.php @@ -0,0 +1,579 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\IO\IOInterface; +use Symfony\Component\Process\Process; + +/** + * @author Matt Whittom + */ +class Perforce +{ + protected $path; + protected $p4Depot; + protected $p4Client; + protected $p4User; + protected $p4Password; + protected $p4Port; + protected $p4Stream; + protected $p4ClientSpec; + protected $p4DepotType; + protected $p4Branch; + protected $process; + protected $uniquePerforceClientName; + protected $windowsFlag; + protected $commandResult; + + protected $io; + + protected $filesystem; + + public function __construct($repoConfig, $port, $path, ProcessExecutor $process, $isWindows, IOInterface $io) + { + $this->windowsFlag = $isWindows; + $this->p4Port = $port; + $this->initializePath($path); + $this->process = $process; + $this->initialize($repoConfig); + $this->io = $io; + } + + public static function create($repoConfig, $port, $path, ProcessExecutor $process, IOInterface $io) + { + return new Perforce($repoConfig, $port, $path, $process, Platform::isWindows(), $io); + } + + public static function checkServerExists($url, ProcessExecutor $processExecutor) + { + $output = null; + + return 0 === $processExecutor->execute('p4 -p ' . ProcessExecutor::escape($url) . ' info -s', $output); + } + + public function initialize($repoConfig) + { + $this->uniquePerforceClientName = $this->generateUniquePerforceClientName(); + if (!$repoConfig) { + return; + } + if (isset($repoConfig['unique_perforce_client_name'])) { + $this->uniquePerforceClientName = $repoConfig['unique_perforce_client_name']; + } + + if (isset($repoConfig['depot'])) { + $this->p4Depot = $repoConfig['depot']; + } + if (isset($repoConfig['branch'])) { + $this->p4Branch = $repoConfig['branch']; + } + if (isset($repoConfig['p4user'])) { + $this->p4User = $repoConfig['p4user']; + } else { + $this->p4User = $this->getP4variable('P4USER'); + } + if (isset($repoConfig['p4password'])) { + $this->p4Password = $repoConfig['p4password']; + } + } + + public function initializeDepotAndBranch($depot, $branch) + { + if (isset($depot)) { + $this->p4Depot = $depot; + } + if (isset($branch)) { + $this->p4Branch = $branch; + } + } + + public function generateUniquePerforceClientName() + { + return gethostname() . "_" . time(); + } + + public function cleanupClientSpec() + { + $client = $this->getClient(); + $task = 'client -d ' . ProcessExecutor::escape($client); + $useP4Client = false; + $command = $this->generateP4Command($task, $useP4Client); + $this->executeCommand($command); + $clientSpec = $this->getP4ClientSpec(); + $fileSystem = $this->getFilesystem(); + $fileSystem->remove($clientSpec); + } + + protected function executeCommand($command) + { + $this->commandResult = ''; + + return $this->process->execute($command, $this->commandResult); + } + + public function getClient() + { + if (!isset($this->p4Client)) { + $cleanStreamName = str_replace(array('//', '/', '@'), array('', '_', ''), $this->getStream()); + $this->p4Client = 'composer_perforce_' . $this->uniquePerforceClientName . '_' . $cleanStreamName; + } + + return $this->p4Client; + } + + protected function getPath() + { + return $this->path; + } + + public function initializePath($path) + { + $this->path = $path; + $fs = $this->getFilesystem(); + $fs->ensureDirectoryExists($path); + } + + protected function getPort() + { + return $this->p4Port; + } + + public function setStream($stream) + { + $this->p4Stream = $stream; + $index = strrpos($stream, '/'); + //Stream format is //depot/stream, while non-streaming depot is //depot + if ($index > 2) { + $this->p4DepotType = 'stream'; + } + } + + public function isStream() + { + return (strcmp($this->p4DepotType, 'stream') === 0); + } + + public function getStream() + { + if (!isset($this->p4Stream)) { + if ($this->isStream()) { + $this->p4Stream = '//' . $this->p4Depot . '/' . $this->p4Branch; + } else { + $this->p4Stream = '//' . $this->p4Depot; + } + } + + return $this->p4Stream; + } + + public function getStreamWithoutLabel($stream) + { + $index = strpos($stream, '@'); + if ($index === false) { + return $stream; + } + + return substr($stream, 0, $index); + } + + public function getP4ClientSpec() + { + return $this->path . '/' . $this->getClient() . '.p4.spec'; + } + + public function getUser() + { + return $this->p4User; + } + + public function setUser($user) + { + $this->p4User = $user; + } + + public function queryP4User() + { + $this->getUser(); + if (strlen($this->p4User) > 0) { + return; + } + $this->p4User = $this->getP4variable('P4USER'); + if (strlen($this->p4User) > 0) { + return; + } + $this->p4User = $this->io->ask('Enter P4 User:'); + if ($this->windowsFlag) { + $command = 'p4 set P4USER=' . $this->p4User; + } else { + $command = 'export P4USER=' . $this->p4User; + } + $this->executeCommand($command); + } + + protected function getP4variable($name) + { + if ($this->windowsFlag) { + $command = 'p4 set'; + $this->executeCommand($command); + $result = trim($this->commandResult); + $resArray = explode(PHP_EOL, $result); + foreach ($resArray as $line) { + $fields = explode('=', $line); + if (strcmp($name, $fields[0]) == 0) { + $index = strpos($fields[1], ' '); + if ($index === false) { + $value = $fields[1]; + } else { + $value = substr($fields[1], 0, $index); + } + $value = trim($value); + + return $value; + } + } + + return null; + } + + $command = 'echo $' . $name; + $this->executeCommand($command); + $result = trim($this->commandResult); + + return $result; + } + + public function queryP4Password() + { + if (isset($this->p4Password)) { + return $this->p4Password; + } + $password = $this->getP4variable('P4PASSWD'); + if (strlen($password) <= 0) { + $password = $this->io->askAndHideAnswer('Enter password for Perforce user ' . $this->getUser() . ': '); + } + $this->p4Password = $password; + + return $password; + } + + public function generateP4Command($command, $useClient = true) + { + $p4Command = 'p4 '; + $p4Command .= '-u ' . $this->getUser() . ' '; + if ($useClient) { + $p4Command .= '-c ' . $this->getClient() . ' '; + } + $p4Command = $p4Command . '-p ' . $this->getPort() . ' ' . $command; + + return $p4Command; + } + + public function isLoggedIn() + { + $command = $this->generateP4Command('login -s', false); + $exitCode = $this->executeCommand($command); + if ($exitCode) { + $errorOutput = $this->process->getErrorOutput(); + $index = strpos($errorOutput, $this->getUser()); + if ($index === false) { + $index = strpos($errorOutput, 'p4'); + if ($index === false) { + return false; + } + throw new \Exception('p4 command not found in path: ' . $errorOutput); + } + throw new \Exception('Invalid user name: ' . $this->getUser()); + } + + return true; + } + + public function connectClient() + { + $p4CreateClientCommand = $this->generateP4Command( + 'client -i < ' . str_replace(" ", "\\ ", $this->getP4ClientSpec()) + ); + $this->executeCommand($p4CreateClientCommand); + } + + public function syncCodeBase($sourceReference) + { + $prevDir = getcwd(); + chdir($this->path); + $p4SyncCommand = $this->generateP4Command('sync -f '); + if (null !== $sourceReference) { + $p4SyncCommand .= '@' . $sourceReference; + } + $this->executeCommand($p4SyncCommand); + chdir($prevDir); + } + + public function writeClientSpecToFile($spec) + { + fwrite($spec, 'Client: ' . $this->getClient() . PHP_EOL . PHP_EOL); + fwrite($spec, 'Update: ' . date('Y/m/d H:i:s') . PHP_EOL . PHP_EOL); + fwrite($spec, 'Access: ' . date('Y/m/d H:i:s') . PHP_EOL); + fwrite($spec, 'Owner: ' . $this->getUser() . PHP_EOL . PHP_EOL); + fwrite($spec, 'Description:' . PHP_EOL); + fwrite($spec, ' Created by ' . $this->getUser() . ' from composer.' . PHP_EOL . PHP_EOL); + fwrite($spec, 'Root: ' . $this->getPath() . PHP_EOL . PHP_EOL); + fwrite($spec, 'Options: noallwrite noclobber nocompress unlocked modtime rmdir' . PHP_EOL . PHP_EOL); + fwrite($spec, 'SubmitOptions: revertunchanged' . PHP_EOL . PHP_EOL); + fwrite($spec, 'LineEnd: local' . PHP_EOL . PHP_EOL); + if ($this->isStream()) { + fwrite($spec, 'Stream:' . PHP_EOL); + fwrite($spec, ' ' . $this->getStreamWithoutLabel($this->p4Stream) . PHP_EOL); + } else { + fwrite( + $spec, + 'View: ' . $this->getStream() . '/... //' . $this->getClient() . '/... ' . PHP_EOL + ); + } + } + + public function writeP4ClientSpec() + { + $clientSpec = $this->getP4ClientSpec(); + $spec = fopen($clientSpec, 'w'); + try { + $this->writeClientSpecToFile($spec); + } catch (\Exception $e) { + fclose($spec); + throw $e; + } + fclose($spec); + } + + protected function read($pipe, $name) + { + if (feof($pipe)) { + return; + } + $line = fgets($pipe); + while ($line !== false) { + $line = fgets($pipe); + } + } + + public function windowsLogin($password) + { + $command = $this->generateP4Command(' login -a'); + + // TODO in v3 generate command as an array + if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { + $process = Process::fromShellCommandline($command, null, null, $password); + } else { + $process = new Process($command, null, null, $password); + } + + return $process->run(); + } + + public function p4Login() + { + $this->queryP4User(); + if (!$this->isLoggedIn()) { + $password = $this->queryP4Password(); + if ($this->windowsFlag) { + $this->windowsLogin($password); + } else { + $command = 'echo ' . ProcessExecutor::escape($password) . ' | ' . $this->generateP4Command(' login -a', false); + $exitCode = $this->executeCommand($command); + $result = trim($this->commandResult); + if ($exitCode) { + throw new \Exception("Error logging in:" . $this->process->getErrorOutput()); + } + } + } + } + + public function getComposerInformation($identifier) + { + $composerFileContent = $this->getFileContent('composer.json', $identifier); + + if (!$composerFileContent) { + return; + } + + return json_decode($composerFileContent, true); + } + + public function getFileContent($file, $identifier) + { + $path = $this->getFilePath($file, $identifier); + + $command = $this->generateP4Command(' print ' . ProcessExecutor::escape($path)); + $this->executeCommand($command); + $result = $this->commandResult; + + if (!trim($result)) { + return null; + } + + return $result; + } + + public function getFilePath($file, $identifier) + { + $index = strpos($identifier, '@'); + if ($index === false) { + $path = $identifier. '/' . $file; + + return $path; + } + + $path = substr($identifier, 0, $index) . '/' . $file . substr($identifier, $index); + $command = $this->generateP4Command(' files ' . ProcessExecutor::escape($path), false); + $this->executeCommand($command); + $result = $this->commandResult; + $index2 = strpos($result, 'no such file(s).'); + if ($index2 === false) { + $index3 = strpos($result, 'change'); + if ($index3 !== false) { + $phrase = trim(substr($result, $index3)); + $fields = explode(' ', $phrase); + + return substr($identifier, 0, $index) . '/' . $file . '@' . $fields[1]; + } + } + + return null; + } + + public function getBranches() + { + $possibleBranches = array(); + if (!$this->isStream()) { + $possibleBranches[$this->p4Branch] = $this->getStream(); + } else { + $command = $this->generateP4Command('streams '.ProcessExecutor::escape('//' . $this->p4Depot . '/...')); + $this->executeCommand($command); + $result = $this->commandResult; + $resArray = explode(PHP_EOL, $result); + foreach ($resArray as $line) { + $resBits = explode(' ', $line); + if (count($resBits) > 4) { + $branch = preg_replace('/[^A-Za-z0-9 ]/', '', $resBits[4]); + $possibleBranches[$branch] = $resBits[1]; + } + } + } + $command = $this->generateP4Command('changes '. ProcessExecutor::escape($this->getStream() . '/...'), false); + $this->executeCommand($command); + $result = $this->commandResult; + $resArray = explode(PHP_EOL, $result); + $lastCommit = $resArray[0]; + $lastCommitArr = explode(' ', $lastCommit); + $lastCommitNum = $lastCommitArr[1]; + + $branches = array('master' => $possibleBranches[$this->p4Branch] . '@'. $lastCommitNum); + + return $branches; + } + + public function getTags() + { + $command = $this->generateP4Command('labels'); + $this->executeCommand($command); + $result = $this->commandResult; + $resArray = explode(PHP_EOL, $result); + $tags = array(); + foreach ($resArray as $line) { + if (strpos($line, 'Label') !== false) { + $fields = explode(' ', $line); + $tags[$fields[1]] = $this->getStream() . '@' . $fields[1]; + } + } + + return $tags; + } + + public function checkStream() + { + $command = $this->generateP4Command('depots', false); + $this->executeCommand($command); + $result = $this->commandResult; + $resArray = explode(PHP_EOL, $result); + foreach ($resArray as $line) { + if (strpos($line, 'Depot') !== false) { + $fields = explode(' ', $line); + if (strcmp($this->p4Depot, $fields[1]) === 0) { + $this->p4DepotType = $fields[3]; + + return $this->isStream(); + } + } + } + + return false; + } + + /** + * @param string $reference + * @return mixed|null + */ + protected function getChangeList($reference) + { + $index = strpos($reference, '@'); + if ($index === false) { + return null; + } + $label = substr($reference, $index); + $command = $this->generateP4Command(' changes -m1 ' . ProcessExecutor::escape($label)); + $this->executeCommand($command); + $changes = $this->commandResult; + if (strpos($changes, 'Change') !== 0) { + return null; + } + $fields = explode(' ', $changes); + + return $fields[1]; + } + + /** + * @param string $fromReference + * @param string $toReference + * @return mixed|null + */ + public function getCommitLogs($fromReference, $toReference) + { + $fromChangeList = $this->getChangeList($fromReference); + if ($fromChangeList === null) { + return null; + } + $toChangeList = $this->getChangeList($toReference); + if ($toChangeList === null) { + return null; + } + $index = strpos($fromReference, '@'); + $main = substr($fromReference, 0, $index) . '/...'; + $command = $this->generateP4Command('filelog ' . ProcessExecutor::escape($main . '@' . $fromChangeList. ',' . $toChangeList)); + $this->executeCommand($command); + + return $this->commandResult; + } + + public function getFilesystem() + { + if (empty($this->filesystem)) { + $this->filesystem = new Filesystem($this->process); + } + + return $this->filesystem; + } + + public function setFilesystem(Filesystem $fs) + { + $this->filesystem = $fs; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Platform.php b/vendor/composer/composer/src/Composer/Util/Platform.php new file mode 100644 index 0000000..60bf9ef --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Platform.php @@ -0,0 +1,92 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +/** + * Platform helper for uniform platform-specific tests. + * + * @author Niels Keurentjes + */ +class Platform +{ + /** + * Parses tildes and environment variables in paths. + * + * @param string $path + * @return string + */ + public static function expandPath($path) + { + if (preg_match('#^~[\\/]#', $path)) { + return self::getUserDirectory() . substr($path, 1); + } + + return preg_replace_callback('#^(\$|(?P%))(?P\w++)(?(percent)%)(?P.*)#', function ($matches) { + // Treat HOME as an alias for USERPROFILE on Windows for legacy reasons + if (Platform::isWindows() && $matches['var'] == 'HOME') { + return (getenv('HOME') ?: getenv('USERPROFILE')) . $matches['path']; + } + + return getenv($matches['var']) . $matches['path']; + }, $path); + } + + /** + * @throws \RuntimeException If the user home could not reliably be determined + * @return string The formal user home as detected from environment parameters + */ + public static function getUserDirectory() + { + if (false !== ($home = getenv('HOME'))) { + return $home; + } + + if (self::isWindows() && false !== ($home = getenv('USERPROFILE'))) { + return $home; + } + + if (function_exists('posix_getuid') && function_exists('posix_getpwuid')) { + $info = posix_getpwuid(posix_getuid()); + + return $info['dir']; + } + + throw new \RuntimeException('Could not determine user directory'); + } + + /** + * @return bool Whether the host machine is running a Windows OS + */ + public static function isWindows() + { + return defined('PHP_WINDOWS_VERSION_BUILD'); + } + + /** + * @param string $str + * @return int return a guaranteed binary length of the string, regardless of silly mbstring configs + */ + public static function strlen($str) + { + static $useMbString = null; + if (null === $useMbString) { + $useMbString = function_exists('mb_strlen') && ini_get('mbstring.func_overload'); + } + + if ($useMbString) { + return mb_strlen($str, '8bit'); + } + + return strlen($str); + } +} diff --git a/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php b/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php new file mode 100644 index 0000000..83f19cf --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php @@ -0,0 +1,201 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\IO\IOInterface; +use Symfony\Component\Process\Process; +use Symfony\Component\Process\ProcessUtils; + +/** + * @author Robert Schönthal + */ +class ProcessExecutor +{ + protected static $timeout = 300; + + protected $captureOutput; + protected $errorOutput; + protected $io; + + public function __construct(IOInterface $io = null) + { + $this->io = $io; + } + + /** + * runs a process on the commandline + * + * @param string $command the command to execute + * @param mixed $output the output will be written into this var if passed by ref + * if a callable is passed it will be used as output handler + * @param string $cwd the working directory + * @return int statuscode + */ + public function execute($command, &$output = null, $cwd = null) + { + if ($this->io && $this->io->isDebug()) { + $safeCommand = preg_replace_callback('{://(?P[^:/\s]+):(?P[^@\s/]+)@}i', function ($m) { + if (preg_match('{^[a-f0-9]{12,}$}', $m['user'])) { + return '://***:***@'; + } + + return '://'.$m['user'].':***@'; + }, $command); + $safeCommand = preg_replace("{--password (.*[^\\\\]\') }", '--password \'***\' ', $safeCommand); + $this->io->writeError('Executing command ('.($cwd ?: 'CWD').'): '.$safeCommand); + } + + // make sure that null translate to the proper directory in case the dir is a symlink + // and we call a git command, because msysgit does not handle symlinks properly + if (null === $cwd && Platform::isWindows() && false !== strpos($command, 'git') && getcwd()) { + $cwd = realpath(getcwd()); + } + + $this->captureOutput = func_num_args() > 1; + $this->errorOutput = null; + + // TODO in v3, commands should be passed in as arrays of cmd + args + if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { + $process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); + } else { + $process = new Process($command, $cwd, null, null, static::getTimeout()); + } + + $callback = is_callable($output) ? $output : array($this, 'outputHandler'); + $process->run($callback); + + if ($this->captureOutput && !is_callable($output)) { + $output = $process->getOutput(); + } + + $this->errorOutput = $process->getErrorOutput(); + + return $process->getExitCode(); + } + + public function splitLines($output) + { + $output = trim($output); + + return ((string) $output === '') ? array() : preg_split('{\r?\n}', $output); + } + + /** + * Get any error output from the last command + * + * @return string + */ + public function getErrorOutput() + { + return $this->errorOutput; + } + + public function outputHandler($type, $buffer) + { + if ($this->captureOutput) { + return; + } + + if (null === $this->io) { + echo $buffer; + + return; + } + + if (method_exists($this->io, 'writeRaw')) { + if (Process::ERR === $type) { + $this->io->writeErrorRaw($buffer, false); + } else { + $this->io->writeRaw($buffer, false); + } + } else { + if (Process::ERR === $type) { + $this->io->writeError($buffer, false); + } else { + $this->io->write($buffer, false); + } + } + } + + public static function getTimeout() + { + return static::$timeout; + } + + public static function setTimeout($timeout) + { + static::$timeout = $timeout; + } + + /** + * Escapes a string to be used as a shell argument. + * + * @param string $argument The argument that will be escaped + * + * @return string The escaped argument + */ + public static function escape($argument) + { + return self::escapeArgument($argument); + } + + /** + * Copy of ProcessUtils::escapeArgument() that is deprecated in Symfony 3.3 and removed in Symfony 4. + * + * @param string $argument + * + * @return string + */ + private static function escapeArgument($argument) + { + //Fix for PHP bug #43784 escapeshellarg removes % from given string + //Fix for PHP bug #49446 escapeshellarg doesn't work on Windows + //@see https://bugs.php.net/bug.php?id=43784 + //@see https://bugs.php.net/bug.php?id=49446 + if ('\\' === DIRECTORY_SEPARATOR) { + if ((string) $argument === '') { + return escapeshellarg($argument); + } + + $escapedArgument = ''; + $quote = false; + foreach (preg_split('/(")/', $argument, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) as $part) { + if ('"' === $part) { + $escapedArgument .= '\\"'; + } elseif (self::isSurroundedBy($part, '%')) { + // Avoid environment variable expansion + $escapedArgument .= '^%"'.substr($part, 1, -1).'"^%'; + } else { + // escape trailing backslash + if ('\\' === substr($part, -1)) { + $part .= '\\'; + } + $quote = true; + $escapedArgument .= $part; + } + } + if ($quote) { + $escapedArgument = '"'.$escapedArgument.'"'; + } + + return $escapedArgument; + } + + return "'".str_replace("'", "'\\''", $argument)."'"; + } + + private static function isSurroundedBy($arg, $char) + { + return 2 < strlen($arg) && $char === $arg[0] && $char === $arg[strlen($arg) - 1]; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php b/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php new file mode 100644 index 0000000..478ef12 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php @@ -0,0 +1,1133 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Config; +use Composer\Composer; +use Composer\Semver\Constraint\Constraint; +use Composer\Package\Version\VersionParser; +use Composer\IO\IOInterface; +use Composer\Downloader\TransportException; +use Composer\CaBundle\CaBundle; +use Psr\Log\LoggerInterface; + +/** + * @author François Pluchino + * @author Jordi Boggiano + * @author Nils Adermann + */ +class RemoteFilesystem +{ + private $io; + private $config; + private $scheme; + private $bytesMax; + private $originUrl; + private $fileUrl; + private $fileName; + private $retry; + private $progress; + private $lastProgress; + private $options = array(); + private $peerCertificateMap = array(); + private $disableTls = false; + private $retryAuthFailure; + private $lastHeaders; + private $storeAuth; + private $degradedMode = false; + private $redirects; + private $maxRedirects = 20; + + /** + * Constructor. + * + * @param IOInterface $io The IO instance + * @param Config $config The config + * @param array $options The options + * @param bool $disableTls + */ + public function __construct(IOInterface $io, Config $config = null, array $options = array(), $disableTls = false) + { + $this->io = $io; + + // Setup TLS options + // The cafile option can be set via config.json + if ($disableTls === false) { + $this->options = $this->getTlsDefaults($options); + } else { + $this->disableTls = true; + } + + // handle the other externally set options normally. + $this->options = array_replace_recursive($this->options, $options); + $this->config = $config; + } + + /** + * Copy the remote file in local. + * + * @param string $originUrl The origin URL + * @param string $fileUrl The file URL + * @param string $fileName the local filename + * @param bool $progress Display the progression + * @param array $options Additional context options + * + * @return bool true + */ + public function copy($originUrl, $fileUrl, $fileName, $progress = true, $options = array()) + { + return $this->get($originUrl, $fileUrl, $options, $fileName, $progress); + } + + /** + * Get the content. + * + * @param string $originUrl The origin URL + * @param string $fileUrl The file URL + * @param bool $progress Display the progression + * @param array $options Additional context options + * + * @return bool|string The content + */ + public function getContents($originUrl, $fileUrl, $progress = true, $options = array()) + { + return $this->get($originUrl, $fileUrl, $options, null, $progress); + } + + /** + * Retrieve the options set in the constructor + * + * @return array Options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Merges new options + * + * @param array $options + */ + public function setOptions(array $options) + { + $this->options = array_replace_recursive($this->options, $options); + } + + /** + * Check is disable TLS. + * + * @return bool + */ + public function isTlsDisabled() + { + return $this->disableTls === true; + } + + /** + * Returns the headers of the last request + * + * @return array + */ + public function getLastHeaders() + { + return $this->lastHeaders; + } + + /** + * @param array $headers array of returned headers like from getLastHeaders() + * @param string $name header name (case insensitive) + * @return string|null + */ + public function findHeaderValue(array $headers, $name) + { + $value = null; + foreach ($headers as $header) { + if (preg_match('{^'.$name.':\s*(.+?)\s*$}i', $header, $match)) { + $value = $match[1]; + } elseif (preg_match('{^HTTP/}i', $header)) { + // In case of redirects, http_response_headers contains the headers of all responses + // so we reset the flag when a new response is being parsed as we are only interested in the last response + $value = null; + } + } + + return $value; + } + + /** + * @param array $headers array of returned headers like from getLastHeaders() + * @return int|null + */ + public function findStatusCode(array $headers) + { + $value = null; + foreach ($headers as $header) { + if (preg_match('{^HTTP/\S+ (\d+)}i', $header, $match)) { + // In case of redirects, http_response_headers contains the headers of all responses + // so we can not return directly and need to keep iterating + $value = (int) $match[1]; + } + } + + return $value; + } + + /** + * @param array $headers array of returned headers like from getLastHeaders() + * @return string|null + */ + public function findStatusMessage(array $headers) + { + $value = null; + foreach ($headers as $header) { + if (preg_match('{^HTTP/\S+ \d+}i', $header)) { + // In case of redirects, http_response_headers contains the headers of all responses + // so we can not return directly and need to keep iterating + $value = $header; + } + } + + return $value; + } + + /** + * Get file content or copy action. + * + * @param string $originUrl The origin URL + * @param string $fileUrl The file URL + * @param array $additionalOptions context options + * @param string $fileName the local filename + * @param bool $progress Display the progression + * + * @throws TransportException|\Exception + * @throws TransportException When the file could not be downloaded + * + * @return bool|string + */ + protected function get($originUrl, $fileUrl, $additionalOptions = array(), $fileName = null, $progress = true) + { + if (strpos($originUrl, '.github.com') === (strlen($originUrl) - 11)) { + $originUrl = 'github.com'; + } + + // Gitlab can be installed in a non-root context (i.e. gitlab.com/foo). When downloading archives the originUrl + // is the host without the path, so we look for the registered gitlab-domains matching the host here + if ( + $this->config + && is_array($this->config->get('gitlab-domains')) + && false === strpos($originUrl, '/') + && !in_array($originUrl, $this->config->get('gitlab-domains')) + ) { + foreach ($this->config->get('gitlab-domains') as $gitlabDomain) { + if (0 === strpos($gitlabDomain, $originUrl)) { + $originUrl = $gitlabDomain; + break; + } + } + unset($gitlabDomain); + } + + $this->scheme = parse_url($fileUrl, PHP_URL_SCHEME); + $this->bytesMax = 0; + $this->originUrl = $originUrl; + $this->fileUrl = $fileUrl; + $this->fileName = $fileName; + $this->progress = $progress; + $this->lastProgress = null; + $this->retryAuthFailure = true; + $this->lastHeaders = array(); + $this->redirects = 1; // The first request counts. + + // capture username/password from URL if there is one + if (preg_match('{^https?://([^:/]+):([^@/]+)@([^/]+)}i', $fileUrl, $match)) { + $this->io->setAuthentication($originUrl, rawurldecode($match[1]), rawurldecode($match[2])); + } + + $tempAdditionalOptions = $additionalOptions; + if (isset($tempAdditionalOptions['retry-auth-failure'])) { + $this->retryAuthFailure = (bool) $tempAdditionalOptions['retry-auth-failure']; + + unset($tempAdditionalOptions['retry-auth-failure']); + } + + $isRedirect = false; + if (isset($tempAdditionalOptions['redirects'])) { + $this->redirects = $tempAdditionalOptions['redirects']; + $isRedirect = true; + + unset($tempAdditionalOptions['redirects']); + } + + $options = $this->getOptionsForUrl($originUrl, $tempAdditionalOptions); + unset($tempAdditionalOptions); + + $origFileUrl = $fileUrl; + + if (isset($options['github-token'])) { + // only add the access_token if it is actually a github URL (in case we were redirected to S3) + if (preg_match('{^https?://([a-z0-9-]+\.)*github\.com/}', $fileUrl)) { + $options['http']['header'][] = 'Authorization: token '.$options['github-token']; + } + unset($options['github-token']); + } + + if (isset($options['gitlab-token'])) { + $fileUrl .= (false === strpos($fileUrl, '?') ? '?' : '&') . 'access_token='.$options['gitlab-token']; + unset($options['gitlab-token']); + } + + if (isset($options['http'])) { + $options['http']['ignore_errors'] = true; + } + + if ($this->degradedMode && substr($fileUrl, 0, 26) === 'http://repo.packagist.org/') { + // access packagist using the resolved IPv4 instead of the hostname to force IPv4 protocol + $fileUrl = 'http://' . gethostbyname('repo.packagist.org') . substr($fileUrl, 20); + $degradedPackagist = true; + } + + $ctx = StreamContextFactory::getContext($fileUrl, $options, array('notification' => array($this, 'callbackGet'))); + + $actualContextOptions = stream_context_get_options($ctx); + $usingProxy = !empty($actualContextOptions['http']['proxy']) ? ' using proxy ' . $actualContextOptions['http']['proxy'] : ''; + $this->io->writeError((substr($origFileUrl, 0, 4) === 'http' ? 'Downloading ' : 'Reading ') . $this->stripCredentialsFromUrl($origFileUrl) . $usingProxy, true, IOInterface::DEBUG); + unset($origFileUrl, $actualContextOptions); + + // Check for secure HTTP, but allow insecure Packagist calls to $hashed providers as file integrity is verified with sha256 + if ((!preg_match('{^http://(repo\.)?packagist\.org/p/}', $fileUrl) || (false === strpos($fileUrl, '$') && false === strpos($fileUrl, '%24'))) && empty($degradedPackagist) && $this->config) { + $this->config->prohibitUrlByConfig($fileUrl, $this->io); + } + + if ($this->progress && !$isRedirect) { + $this->io->writeError("Downloading (connecting...)", false); + } + + $errorMessage = ''; + $errorCode = 0; + $result = false; + set_error_handler(function ($code, $msg) use (&$errorMessage) { + if ($errorMessage) { + $errorMessage .= "\n"; + } + $errorMessage .= preg_replace('{^file_get_contents\(.*?\): }', '', $msg); + + return true; + }); + try { + $result = $this->getRemoteContents($originUrl, $fileUrl, $ctx, $http_response_header); + + if (!empty($http_response_header[0])) { + $statusCode = $this->findStatusCode($http_response_header); + if ($statusCode >= 400 && $this->findHeaderValue($http_response_header, 'content-type') === 'application/json') { + self::outputWarnings($this->io, $originUrl, json_decode($result, true)); + } + + if (in_array($statusCode, array(401, 403)) && $this->retryAuthFailure) { + $this->promptAuthAndRetry($statusCode, $this->findStatusMessage($http_response_header), null, $http_response_header); + } + } + + $contentLength = !empty($http_response_header[0]) ? $this->findHeaderValue($http_response_header, 'content-length') : null; + if ($contentLength && Platform::strlen($result) < $contentLength) { + // alas, this is not possible via the stream callback because STREAM_NOTIFY_COMPLETED is documented, but not implemented anywhere in PHP + $e = new TransportException('Content-Length mismatch, received '.Platform::strlen($result).' bytes out of the expected '.$contentLength); + $e->setHeaders($http_response_header); + $e->setStatusCode($this->findStatusCode($http_response_header)); + $e->setResponse($result); + $this->io->writeError('Content-Length mismatch, received '.Platform::strlen($result).' out of '.$contentLength.' bytes: (' . base64_encode($result).')', true, IOInterface::DEBUG); + + throw $e; + } + + if (PHP_VERSION_ID < 50600 && !empty($options['ssl']['peer_fingerprint'])) { + // Emulate fingerprint validation on PHP < 5.6 + $params = stream_context_get_params($ctx); + $expectedPeerFingerprint = $options['ssl']['peer_fingerprint']; + $peerFingerprint = TlsHelper::getCertificateFingerprint($params['options']['ssl']['peer_certificate']); + + // Constant time compare??! + if ($expectedPeerFingerprint !== $peerFingerprint) { + throw new TransportException('Peer fingerprint did not match'); + } + } + } catch (\Exception $e) { + if ($e instanceof TransportException && !empty($http_response_header[0])) { + $e->setHeaders($http_response_header); + $e->setStatusCode($this->findStatusCode($http_response_header)); + } + if ($e instanceof TransportException && $result !== false) { + $e->setResponse($result); + } + $result = false; + } + if ($errorMessage && !filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { + $errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')'; + } + restore_error_handler(); + if (isset($e) && !$this->retry) { + if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { + $this->degradedMode = true; + $this->io->writeError(''); + $this->io->writeError(array( + ''.$e->getMessage().'', + 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', + )); + + return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); + } + + throw $e; + } + + $statusCode = null; + $contentType = null; + $locationHeader = null; + if (!empty($http_response_header[0])) { + $statusCode = $this->findStatusCode($http_response_header); + $contentType = $this->findHeaderValue($http_response_header, 'content-type'); + $locationHeader = $this->findHeaderValue($http_response_header, 'location'); + } + + // check for bitbucket login page asking to authenticate + if ($originUrl === 'bitbucket.org' + && !$this->isPublicBitBucketDownload($fileUrl) + && substr($fileUrl, -4) === '.zip' + && (!$locationHeader || substr($locationHeader, -4) !== '.zip') + && $contentType && preg_match('{^text/html\b}i', $contentType) + ) { + $result = false; + if ($this->retryAuthFailure) { + $this->promptAuthAndRetry(401); + } + } + + // check for gitlab 404 when downloading archives + if ($statusCode === 404 + && $this->config && in_array($originUrl, $this->config->get('gitlab-domains'), true) + && false !== strpos($fileUrl, 'archive.zip') + ) { + $result = false; + if ($this->retryAuthFailure) { + $this->promptAuthAndRetry(401); + } + } + + // handle 3xx redirects, 304 Not Modified is excluded + $hasFollowedRedirect = false; + if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $this->redirects < $this->maxRedirects) { + $hasFollowedRedirect = true; + $result = $this->handleRedirect($http_response_header, $additionalOptions, $result); + } + + // fail 4xx and 5xx responses and capture the response + if ($statusCode && $statusCode >= 400 && $statusCode <= 599) { + if (!$this->retry) { + if ($this->progress && !$this->retry && !$isRedirect) { + $this->io->overwriteError("Downloading (failed)", false); + } + + $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.$http_response_header[0].')', $statusCode); + $e->setHeaders($http_response_header); + $e->setResponse($result); + $e->setStatusCode($statusCode); + throw $e; + } + $result = false; + } + + if ($this->progress && !$this->retry && !$isRedirect) { + $this->io->overwriteError("Downloading (".($result === false ? 'failed' : '100%').")", false); + } + + // decode gzip + if ($result && extension_loaded('zlib') && substr($fileUrl, 0, 4) === 'http' && !$hasFollowedRedirect) { + $contentEncoding = $this->findHeaderValue($http_response_header, 'content-encoding'); + $decode = $contentEncoding && 'gzip' === strtolower($contentEncoding); + + if ($decode) { + try { + if (PHP_VERSION_ID >= 50400) { + $result = zlib_decode($result); + } else { + // work around issue with gzuncompress & co that do not work with all gzip checksums + $result = file_get_contents('compress.zlib://data:application/octet-stream;base64,'.base64_encode($result)); + } + + if (!$result) { + throw new TransportException('Failed to decode zlib stream'); + } + } catch (\Exception $e) { + if ($this->degradedMode) { + throw $e; + } + + $this->degradedMode = true; + $this->io->writeError(array( + '', + 'Failed to decode response: '.$e->getMessage().'', + 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', + )); + + return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); + } + } + } + + // handle copy command if download was successful + if (false !== $result && null !== $fileName && !$isRedirect) { + if ('' === $result) { + throw new TransportException('"'.$this->fileUrl.'" appears broken, and returned an empty 200 response'); + } + + $errorMessage = ''; + set_error_handler(function ($code, $msg) use (&$errorMessage) { + if ($errorMessage) { + $errorMessage .= "\n"; + } + $errorMessage .= preg_replace('{^file_put_contents\(.*?\): }', '', $msg); + + return true; + }); + $result = (bool) file_put_contents($fileName, $result); + restore_error_handler(); + if (false === $result) { + throw new TransportException('The "'.$this->fileUrl.'" file could not be written to '.$fileName.': '.$errorMessage); + } + } + + // Handle SSL cert match issues + if (false === $result && false !== strpos($errorMessage, 'Peer certificate') && PHP_VERSION_ID < 50600) { + // Certificate name error, PHP doesn't support subjectAltName on PHP < 5.6 + // The procedure to handle sAN for older PHP's is: + // + // 1. Open socket to remote server and fetch certificate (disabling peer + // validation because PHP errors without giving up the certificate.) + // + // 2. Verifying the domain in the URL against the names in the sAN field. + // If there is a match record the authority [host/port], certificate + // common name, and certificate fingerprint. + // + // 3. Retry the original request but changing the CN_match parameter to + // the common name extracted from the certificate in step 2. + // + // 4. To prevent any attempt at being hoodwinked by switching the + // certificate between steps 2 and 3 the fingerprint of the certificate + // presented in step 3 is compared against the one recorded in step 2. + if (CaBundle::isOpensslParseSafe()) { + $certDetails = $this->getCertificateCnAndFp($this->fileUrl, $options); + + if ($certDetails) { + $this->peerCertificateMap[$this->getUrlAuthority($this->fileUrl)] = $certDetails; + + $this->retry = true; + } + } else { + $this->io->writeError(''); + $this->io->writeError(sprintf( + 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', + PHP_VERSION + )); + } + } + + if ($this->retry) { + $this->retry = false; + + $result = $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); + + if ($this->storeAuth && $this->config) { + $authHelper = new AuthHelper($this->io, $this->config); + $authHelper->storeAuth($this->originUrl, $this->storeAuth); + $this->storeAuth = false; + } + + return $result; + } + + if (false === $result) { + $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded: '.$errorMessage, $errorCode); + if (!empty($http_response_header[0])) { + $e->setHeaders($http_response_header); + } + + if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { + $this->degradedMode = true; + $this->io->writeError(''); + $this->io->writeError(array( + ''.$e->getMessage().'', + 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', + )); + + return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); + } + + throw $e; + } + + if (!empty($http_response_header[0])) { + $this->lastHeaders = $http_response_header; + } + + return $result; + } + + /** + * Get contents of remote URL. + * + * @param string $originUrl The origin URL + * @param string $fileUrl The file URL + * @param resource $context The stream context + * + * @return string|false The response contents or false on failure + */ + protected function getRemoteContents($originUrl, $fileUrl, $context, array &$responseHeaders = null) + { + try { + $e = null; + $result = file_get_contents($fileUrl, false, $context); + } catch (\Throwable $e) { + } catch (\Exception $e) { + } + + $responseHeaders = isset($http_response_header) ? $http_response_header : array(); + + if (null !== $e) { + throw $e; + } + + return $result; + } + + /** + * Get notification action. + * + * @param int $notificationCode The notification code + * @param int $severity The severity level + * @param string $message The message + * @param int $messageCode The message code + * @param int $bytesTransferred The loaded size + * @param int $bytesMax The total size + * @throws TransportException + */ + protected function callbackGet($notificationCode, $severity, $message, $messageCode, $bytesTransferred, $bytesMax) + { + switch ($notificationCode) { + case STREAM_NOTIFY_FAILURE: + if (400 === $messageCode) { + // This might happen if your host is secured by ssl client certificate authentication + // but you do not send an appropriate certificate + throw new TransportException("The '" . $this->fileUrl . "' URL could not be accessed: " . $message, $messageCode); + } + break; + + case STREAM_NOTIFY_FILE_SIZE_IS: + $this->bytesMax = $bytesMax; + break; + + case STREAM_NOTIFY_PROGRESS: + if ($this->bytesMax > 0 && $this->progress) { + $progression = min(100, round($bytesTransferred / $this->bytesMax * 100)); + + if ((0 === $progression % 5) && 100 !== $progression && $progression !== $this->lastProgress) { + $this->lastProgress = $progression; + $this->io->overwriteError("Downloading ($progression%)", false); + } + } + break; + + default: + break; + } + } + + protected function promptAuthAndRetry($httpStatus, $reason = null, $warning = null, $headers = array()) + { + if ($this->config && in_array($this->originUrl, $this->config->get('github-domains'), true)) { + $gitHubUtil = new GitHub($this->io, $this->config, null); + $message = "\n"; + + $rateLimited = $gitHubUtil->isRateLimited($headers); + if ($rateLimited) { + $rateLimit = $gitHubUtil->getRateLimit($headers); + if ($this->io->hasAuthentication($this->originUrl)) { + $message = 'Review your configured GitHub OAuth token or enter a new one to go over the API rate limit.'; + } else { + $message = 'Create a GitHub OAuth token to go over the API rate limit.'; + } + + $message = sprintf( + 'GitHub API limit (%d calls/hr) is exhausted, could not fetch '.$this->fileUrl.'. '.$message.' You can also wait until %s for the rate limit to reset.', + $rateLimit['limit'], + $rateLimit['reset'] + )."\n"; + } else { + $message .= 'Could not fetch '.$this->fileUrl.', please '; + if ($this->io->hasAuthentication($this->originUrl)) { + $message .= 'review your configured GitHub OAuth token or enter a new one to access private repos'; + } else { + $message .= 'create a GitHub OAuth token to access private repos'; + } + } + + if (!$gitHubUtil->authorizeOAuth($this->originUrl) + && (!$this->io->isInteractive() || !$gitHubUtil->authorizeOAuthInteractively($this->originUrl, $message)) + ) { + throw new TransportException('Could not authenticate against '.$this->originUrl, 401); + } + } elseif ($this->config && in_array($this->originUrl, $this->config->get('gitlab-domains'), true)) { + $message = "\n".'Could not fetch '.$this->fileUrl.', enter your ' . $this->originUrl . ' credentials ' .($httpStatus === 401 ? 'to access private repos' : 'to go over the API rate limit'); + $gitLabUtil = new GitLab($this->io, $this->config, null); + + if ($this->io->hasAuthentication($this->originUrl) && ($auth = $this->io->getAuthentication($this->originUrl)) && in_array($auth['password'], array('gitlab-ci-token', 'private-token'), true)) { + throw new TransportException("Invalid credentials for '" . $this->fileUrl . "', aborting.", $httpStatus); + } + + if (!$gitLabUtil->authorizeOAuth($this->originUrl) + && (!$this->io->isInteractive() || !$gitLabUtil->authorizeOAuthInteractively($this->scheme, $this->originUrl, $message)) + ) { + throw new TransportException('Could not authenticate against '.$this->originUrl, 401); + } + } elseif ($this->config && $this->originUrl === 'bitbucket.org') { + $askForOAuthToken = true; + if ($this->io->hasAuthentication($this->originUrl)) { + $auth = $this->io->getAuthentication($this->originUrl); + if ($auth['username'] !== 'x-token-auth') { + $bitbucketUtil = new Bitbucket($this->io, $this->config); + $accessToken = $bitbucketUtil->requestToken($this->originUrl, $auth['username'], $auth['password']); + if (!empty($accessToken)) { + $this->io->setAuthentication($this->originUrl, 'x-token-auth', $accessToken); + $askForOAuthToken = false; + } + } else { + throw new TransportException('Could not authenticate against ' . $this->originUrl, 401); + } + } + + if ($askForOAuthToken) { + $message = "\n".'Could not fetch ' . $this->fileUrl . ', please create a bitbucket OAuth token to ' . (($httpStatus === 401 || $httpStatus === 403) ? 'access private repos' : 'go over the API rate limit'); + $bitBucketUtil = new Bitbucket($this->io, $this->config); + if (! $bitBucketUtil->authorizeOAuth($this->originUrl) + && (! $this->io->isInteractive() || !$bitBucketUtil->authorizeOAuthInteractively($this->originUrl, $message)) + ) { + throw new TransportException('Could not authenticate against ' . $this->originUrl, 401); + } + } + } else { + // 404s are only handled for github + if ($httpStatus === 404) { + return; + } + + // fail if the console is not interactive + if (!$this->io->isInteractive()) { + if ($httpStatus === 401) { + $message = "The '" . $this->fileUrl . "' URL required authentication.\nYou must be using the interactive console to authenticate"; + } + if ($httpStatus === 403) { + $message = "The '" . $this->fileUrl . "' URL could not be accessed: " . $reason; + } + + throw new TransportException($message, $httpStatus); + } + // fail if we already have auth + if ($this->io->hasAuthentication($this->originUrl)) { + throw new TransportException("Invalid credentials for '" . $this->fileUrl . "', aborting.", $httpStatus); + } + + $this->io->writeError(' Authentication required ('.$this->originUrl.'):'); + $username = $this->io->ask(' Username: '); + $password = $this->io->askAndHideAnswer(' Password: '); + $this->io->setAuthentication($this->originUrl, $username, $password); + $this->storeAuth = $this->config->get('store-auths'); + } + + $this->retry = true; + throw new TransportException('RETRY'); + } + + protected function getOptionsForUrl($originUrl, $additionalOptions) + { + $tlsOptions = array(); + + // Setup remaining TLS options - the matching may need monitoring, esp. www vs none in CN + if ($this->disableTls === false && PHP_VERSION_ID < 50600 && !stream_is_local($this->fileUrl)) { + $host = parse_url($this->fileUrl, PHP_URL_HOST); + + if (PHP_VERSION_ID < 50304) { + // PHP < 5.3.4 does not support follow_location, for those people + // do some really nasty hard coded transformations. These will + // still breakdown if the site redirects to a domain we don't + // expect. + + if ($host === 'github.com' || $host === 'api.github.com') { + $host = '*.github.com'; + } + } + + $tlsOptions['ssl']['CN_match'] = $host; + $tlsOptions['ssl']['SNI_server_name'] = $host; + + $urlAuthority = $this->getUrlAuthority($this->fileUrl); + + if (isset($this->peerCertificateMap[$urlAuthority])) { + // Handle subjectAltName on lesser PHP's. + $certMap = $this->peerCertificateMap[$urlAuthority]; + + $this->io->writeError('', true, IOInterface::DEBUG); + $this->io->writeError(sprintf( + 'Using %s as CN for subjectAltName enabled host %s', + $certMap['cn'], + $urlAuthority + ), true, IOInterface::DEBUG); + + $tlsOptions['ssl']['CN_match'] = $certMap['cn']; + $tlsOptions['ssl']['peer_fingerprint'] = $certMap['fp']; + } elseif (!CaBundle::isOpensslParseSafe() && $host === 'repo.packagist.org') { + // handle subjectAltName for packagist.org's repo domain on very old PHPs + $tlsOptions['ssl']['CN_match'] = 'packagist.org'; + } + } + + $headers = array(); + + if (extension_loaded('zlib')) { + $headers[] = 'Accept-Encoding: gzip'; + } + + $options = array_replace_recursive($this->options, $tlsOptions, $additionalOptions); + if (!$this->degradedMode) { + // degraded mode disables HTTP/1.1 which causes issues with some bad + // proxies/software due to the use of chunked encoding + $options['http']['protocol_version'] = 1.1; + $headers[] = 'Connection: close'; + } + + if ($this->io->hasAuthentication($originUrl)) { + $auth = $this->io->getAuthentication($originUrl); + if ('github.com' === $originUrl && 'x-oauth-basic' === $auth['password']) { + $options['github-token'] = $auth['username']; + } elseif ($this->config && in_array($originUrl, $this->config->get('gitlab-domains'), true)) { + if ($auth['password'] === 'oauth2') { + $headers[] = 'Authorization: Bearer '.$auth['username']; + } elseif ($auth['password'] === 'private-token' || $auth['password'] === 'gitlab-ci-token') { + $headers[] = 'PRIVATE-TOKEN: '.$auth['username']; + } + } elseif ('bitbucket.org' === $originUrl + && $this->fileUrl !== Bitbucket::OAUTH2_ACCESS_TOKEN_URL && 'x-token-auth' === $auth['username'] + ) { + if (!$this->isPublicBitBucketDownload($this->fileUrl)) { + $headers[] = 'Authorization: Bearer ' . $auth['password']; + } + } else { + $authStr = base64_encode($auth['username'] . ':' . $auth['password']); + $headers[] = 'Authorization: Basic '.$authStr; + } + } + + $options['http']['follow_location'] = 0; + + if (isset($options['http']['header']) && !is_array($options['http']['header'])) { + $options['http']['header'] = explode("\r\n", trim($options['http']['header'], "\r\n")); + } + foreach ($headers as $header) { + $options['http']['header'][] = $header; + } + + return $options; + } + + private function handleRedirect(array $http_response_header, array $additionalOptions, $result) + { + if ($locationHeader = $this->findHeaderValue($http_response_header, 'location')) { + if (parse_url($locationHeader, PHP_URL_SCHEME)) { + // Absolute URL; e.g. https://example.com/composer + $targetUrl = $locationHeader; + } elseif (parse_url($locationHeader, PHP_URL_HOST)) { + // Scheme relative; e.g. //example.com/foo + $targetUrl = $this->scheme.':'.$locationHeader; + } elseif ('/' === $locationHeader[0]) { + // Absolute path; e.g. /foo + $urlHost = parse_url($this->fileUrl, PHP_URL_HOST); + + // Replace path using hostname as an anchor. + $targetUrl = preg_replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $this->fileUrl); + } else { + // Relative path; e.g. foo + // This actually differs from PHP which seems to add duplicate slashes. + $targetUrl = preg_replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $this->fileUrl); + } + } + + if (!empty($targetUrl)) { + $this->redirects++; + + $this->io->writeError('', true, IOInterface::DEBUG); + $this->io->writeError(sprintf('Following redirect (%u) %s', $this->redirects, $this->stripCredentialsFromUrl($targetUrl)), true, IOInterface::DEBUG); + + $additionalOptions['redirects'] = $this->redirects; + + return $this->get(parse_url($targetUrl, PHP_URL_HOST), $targetUrl, $additionalOptions, $this->fileName, $this->progress); + } + + if (!$this->retry) { + $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded, got redirect without Location ('.$http_response_header[0].')'); + $e->setHeaders($http_response_header); + $e->setResponse($result); + + throw $e; + } + + return false; + } + + /** + * @param array $options + * + * @return array + */ + private function getTlsDefaults(array $options) + { + $ciphers = implode(':', array( + 'ECDHE-RSA-AES128-GCM-SHA256', + 'ECDHE-ECDSA-AES128-GCM-SHA256', + 'ECDHE-RSA-AES256-GCM-SHA384', + 'ECDHE-ECDSA-AES256-GCM-SHA384', + 'DHE-RSA-AES128-GCM-SHA256', + 'DHE-DSS-AES128-GCM-SHA256', + 'kEDH+AESGCM', + 'ECDHE-RSA-AES128-SHA256', + 'ECDHE-ECDSA-AES128-SHA256', + 'ECDHE-RSA-AES128-SHA', + 'ECDHE-ECDSA-AES128-SHA', + 'ECDHE-RSA-AES256-SHA384', + 'ECDHE-ECDSA-AES256-SHA384', + 'ECDHE-RSA-AES256-SHA', + 'ECDHE-ECDSA-AES256-SHA', + 'DHE-RSA-AES128-SHA256', + 'DHE-RSA-AES128-SHA', + 'DHE-DSS-AES128-SHA256', + 'DHE-RSA-AES256-SHA256', + 'DHE-DSS-AES256-SHA', + 'DHE-RSA-AES256-SHA', + 'AES128-GCM-SHA256', + 'AES256-GCM-SHA384', + 'AES128-SHA256', + 'AES256-SHA256', + 'AES128-SHA', + 'AES256-SHA', + 'AES', + 'CAMELLIA', + 'DES-CBC3-SHA', + '!aNULL', + '!eNULL', + '!EXPORT', + '!DES', + '!RC4', + '!MD5', + '!PSK', + '!aECDH', + '!EDH-DSS-DES-CBC3-SHA', + '!EDH-RSA-DES-CBC3-SHA', + '!KRB5-DES-CBC3-SHA', + )); + + /** + * CN_match and SNI_server_name are only known once a URL is passed. + * They will be set in the getOptionsForUrl() method which receives a URL. + * + * cafile or capath can be overridden by passing in those options to constructor. + */ + $defaults = array( + 'ssl' => array( + 'ciphers' => $ciphers, + 'verify_peer' => true, + 'verify_depth' => 7, + 'SNI_enabled' => true, + 'capture_peer_cert' => true, + ), + ); + + if (isset($options['ssl'])) { + $defaults['ssl'] = array_replace_recursive($defaults['ssl'], $options['ssl']); + } + + $caBundleLogger = $this->io instanceof LoggerInterface ? $this->io : null; + + /** + * Attempt to find a local cafile or throw an exception if none pre-set + * The user may go download one if this occurs. + */ + if (!isset($defaults['ssl']['cafile']) && !isset($defaults['ssl']['capath'])) { + $result = CaBundle::getSystemCaRootBundlePath($caBundleLogger); + + if (is_dir($result)) { + $defaults['ssl']['capath'] = $result; + } else { + $defaults['ssl']['cafile'] = $result; + } + } + + if (isset($defaults['ssl']['cafile']) && (!is_readable($defaults['ssl']['cafile']) || !CaBundle::validateCaFile($defaults['ssl']['cafile'], $caBundleLogger))) { + throw new TransportException('The configured cafile was not valid or could not be read.'); + } + + if (isset($defaults['ssl']['capath']) && (!is_dir($defaults['ssl']['capath']) || !is_readable($defaults['ssl']['capath']))) { + throw new TransportException('The configured capath was not valid or could not be read.'); + } + + /** + * Disable TLS compression to prevent CRIME attacks where supported. + */ + if (PHP_VERSION_ID >= 50413) { + $defaults['ssl']['disable_compression'] = true; + } + + return $defaults; + } + + /** + * Fetch certificate common name and fingerprint for validation of SAN. + * + * @todo Remove when PHP 5.6 is minimum supported version. + */ + private function getCertificateCnAndFp($url, $options) + { + if (PHP_VERSION_ID >= 50600) { + throw new \BadMethodCallException(sprintf( + '%s must not be used on PHP >= 5.6', + __METHOD__ + )); + } + + $context = StreamContextFactory::getContext($url, $options, array('options' => array( + 'ssl' => array( + 'capture_peer_cert' => true, + 'verify_peer' => false, // Yes this is fucking insane! But PHP is lame. + ), ), + )); + + // Ideally this would just use stream_socket_client() to avoid sending a + // HTTP request but that does not capture the certificate. + if (false === $handle = @fopen($url, 'rb', false, $context)) { + return; + } + + // Close non authenticated connection without reading any content. + fclose($handle); + $handle = null; + + $params = stream_context_get_params($context); + + if (!empty($params['options']['ssl']['peer_certificate'])) { + $peerCertificate = $params['options']['ssl']['peer_certificate']; + + if (TlsHelper::checkCertificateHost($peerCertificate, parse_url($url, PHP_URL_HOST), $commonName)) { + return array( + 'cn' => $commonName, + 'fp' => TlsHelper::getCertificateFingerprint($peerCertificate), + ); + } + } + } + + private function getUrlAuthority($url) + { + $defaultPorts = array( + 'ftp' => 21, + 'http' => 80, + 'https' => 443, + 'ssh2.sftp' => 22, + 'ssh2.scp' => 22, + ); + + $scheme = parse_url($url, PHP_URL_SCHEME); + + if (!isset($defaultPorts[$scheme])) { + throw new \InvalidArgumentException(sprintf( + 'Could not get default port for unknown scheme: %s', + $scheme + )); + } + + $defaultPort = $defaultPorts[$scheme]; + $port = parse_url($url, PHP_URL_PORT) ?: $defaultPort; + + return parse_url($url, PHP_URL_HOST).':'.$port; + } + + /** + * @link https://github.com/composer/composer/issues/5584 + * + * @param string $urlToBitBucketFile URL to a file at bitbucket.org. + * + * @return bool Whether the given URL is a public BitBucket download which requires no authentication. + */ + private function isPublicBitBucketDownload($urlToBitBucketFile) + { + $domain = parse_url($urlToBitBucketFile, PHP_URL_HOST); + if (strpos($domain, 'bitbucket.org') === false) { + // Bitbucket downloads are hosted on amazonaws. + // We do not need to authenticate there at all + return true; + } + + $path = parse_url($urlToBitBucketFile, PHP_URL_PATH); + + // Path for a public download follows this pattern /{user}/{repo}/downloads/{whatever} + // {@link https://blog.bitbucket.org/2009/04/12/new-feature-downloads/} + $pathParts = explode('/', $path); + + return count($pathParts) >= 4 && $pathParts[3] == 'downloads'; + } + + public static function outputWarnings(IOInterface $io, $url, $data) + { + foreach (array('warning', 'info') as $type) { + if (empty($data[$type])) { + continue; + } + + if (!empty($data[$type . '-versions'])) { + $versionParser = new VersionParser(); + $constraint = $versionParser->parseConstraints($data[$type . '-versions']); + $composer = new Constraint('==', $versionParser->normalize(Composer::getVersion())); + if (!$constraint->matches($composer)) { + continue; + } + } + + $io->writeError('<'.$type.'>'.ucfirst($type).' from '.$url.': '.$data[$type].''); + } + } + + public static function getOrigin($urlOrPath) + { + $hostPort = parse_url($urlOrPath, PHP_URL_HOST); + if (!$hostPort) { + return $urlOrPath; + } + if (parse_url($urlOrPath, PHP_URL_PORT)) { + $hostPort .= ':'.parse_url($urlOrPath, PHP_URL_PORT); + } + + return $hostPort; + } + + private function stripCredentialsFromUrl($url) + { + // GitHub repository rename result in redirect locations containing the access_token as GET parameter + // e.g. https://api.github.com/repositories/9999999999?access_token=github_token + return preg_replace('{([&?]access_token=)[^&]+}', '$1***', $url); + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Silencer.php b/vendor/composer/composer/src/Composer/Util/Silencer.php new file mode 100644 index 0000000..dcb362b --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Silencer.php @@ -0,0 +1,78 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +/** + * Temporarily suppress PHP error reporting, usually warnings and below. + * + * @author Niels Keurentjes + */ +class Silencer +{ + /** + * @var int[] Unpop stack + */ + private static $stack = array(); + + /** + * Suppresses given mask or errors. + * + * @param int|null $mask Error levels to suppress, default value NULL indicates all warnings and below. + * @return int The old error reporting level. + */ + public static function suppress($mask = null) + { + if (!isset($mask)) { + $mask = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_DEPRECATED | E_USER_DEPRECATED | E_STRICT; + } + $old = error_reporting(); + self::$stack[] = $old; + error_reporting($old & ~$mask); + + return $old; + } + + /** + * Restores a single state. + */ + public static function restore() + { + if (!empty(self::$stack)) { + error_reporting(array_pop(self::$stack)); + } + } + + /** + * Calls a specified function while silencing warnings and below. + * + * Future improvement: when PHP requirements are raised add Callable type hint (5.4) and variadic parameters (5.6) + * + * @param callable $callable Function to execute. + * @throws \Exception Any exceptions from the callback are rethrown. + * @return mixed Return value of the callback. + */ + public static function call($callable /*, ...$parameters */) + { + try { + self::suppress(); + $result = call_user_func_array($callable, array_slice(func_get_args(), 1)); + self::restore(); + + return $result; + } catch (\Exception $e) { + // Use a finally block for this when requirements are raised to PHP 5.5 + self::restore(); + throw $e; + } + } +} diff --git a/vendor/composer/composer/src/Composer/Util/SpdxLicense.php b/vendor/composer/composer/src/Composer/Util/SpdxLicense.php new file mode 100644 index 0000000..be4efdc --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/SpdxLicense.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Spdx\SpdxLicenses; + +trigger_error('The ' . __NAMESPACE__ . '\SpdxLicense class is deprecated, use Composer\Spdx\SpdxLicenses instead.', E_USER_DEPRECATED); + +/** + * @deprecated use Composer\Spdx\SpdxLicenses instead + */ +class SpdxLicense extends SpdxLicenses +{ +} diff --git a/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php b/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php new file mode 100644 index 0000000..da3e578 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php @@ -0,0 +1,177 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Composer; + +/** + * Allows the creation of a basic context supporting http proxy + * + * @author Jordan Alliot + * @author Markus Tacker + */ +final class StreamContextFactory +{ + /** + * Creates a context supporting HTTP proxies + * + * @param string $url URL the context is to be used for + * @param array $defaultOptions Options to merge with the default + * @param array $defaultParams Parameters to specify on the context + * @throws \RuntimeException if https proxy required and OpenSSL uninstalled + * @return resource Default context + */ + public static function getContext($url, array $defaultOptions = array(), array $defaultParams = array()) + { + $options = array('http' => array( + // specify defaults again to try and work better with curlwrappers enabled + 'follow_location' => 1, + 'max_redirects' => 20, + )); + + // Handle HTTP_PROXY/http_proxy on CLI only for security reasons + if ((PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') && (!empty($_SERVER['HTTP_PROXY']) || !empty($_SERVER['http_proxy']))) { + $proxy = parse_url(!empty($_SERVER['http_proxy']) ? $_SERVER['http_proxy'] : $_SERVER['HTTP_PROXY']); + } + + // Prefer CGI_HTTP_PROXY if available + if (!empty($_SERVER['CGI_HTTP_PROXY'])) { + $proxy = parse_url($_SERVER['CGI_HTTP_PROXY']); + } + + // Override with HTTPS proxy if present and URL is https + if (preg_match('{^https://}i', $url) && (!empty($_SERVER['HTTPS_PROXY']) || !empty($_SERVER['https_proxy']))) { + $proxy = parse_url(!empty($_SERVER['https_proxy']) ? $_SERVER['https_proxy'] : $_SERVER['HTTPS_PROXY']); + } + + // Remove proxy if URL matches no_proxy directive + if (!empty($_SERVER['NO_PROXY']) || !empty($_SERVER['no_proxy']) && parse_url($url, PHP_URL_HOST)) { + $pattern = new NoProxyPattern(!empty($_SERVER['no_proxy']) ? $_SERVER['no_proxy'] : $_SERVER['NO_PROXY']); + if ($pattern->test($url)) { + unset($proxy); + } + } + + if (!empty($proxy)) { + $proxyURL = isset($proxy['scheme']) ? $proxy['scheme'] . '://' : ''; + $proxyURL .= isset($proxy['host']) ? $proxy['host'] : ''; + + if (isset($proxy['port'])) { + $proxyURL .= ":" . $proxy['port']; + } elseif ('http://' == substr($proxyURL, 0, 7)) { + $proxyURL .= ":80"; + } elseif ('https://' == substr($proxyURL, 0, 8)) { + $proxyURL .= ":443"; + } + + // http(s):// is not supported in proxy + $proxyURL = str_replace(array('http://', 'https://'), array('tcp://', 'ssl://'), $proxyURL); + + if (0 === strpos($proxyURL, 'ssl:') && !extension_loaded('openssl')) { + throw new \RuntimeException('You must enable the openssl extension to use a proxy over https'); + } + + $options['http']['proxy'] = $proxyURL; + + // enabled request_fulluri unless it is explicitly disabled + switch (parse_url($url, PHP_URL_SCHEME)) { + case 'http': // default request_fulluri to true + $reqFullUriEnv = getenv('HTTP_PROXY_REQUEST_FULLURI'); + if ($reqFullUriEnv === false || $reqFullUriEnv === '' || (strtolower($reqFullUriEnv) !== 'false' && (bool) $reqFullUriEnv)) { + $options['http']['request_fulluri'] = true; + } + break; + case 'https': // default request_fulluri to true + $reqFullUriEnv = getenv('HTTPS_PROXY_REQUEST_FULLURI'); + if ($reqFullUriEnv === false || $reqFullUriEnv === '' || (strtolower($reqFullUriEnv) !== 'false' && (bool) $reqFullUriEnv)) { + $options['http']['request_fulluri'] = true; + } + break; + } + + // add SNI opts for https URLs + if ('https' === parse_url($url, PHP_URL_SCHEME)) { + $options['ssl']['SNI_enabled'] = true; + if (PHP_VERSION_ID < 50600) { + $options['ssl']['SNI_server_name'] = parse_url($url, PHP_URL_HOST); + } + } + + // handle proxy auth if present + if (isset($proxy['user'])) { + $auth = rawurldecode($proxy['user']); + if (isset($proxy['pass'])) { + $auth .= ':' . rawurldecode($proxy['pass']); + } + $auth = base64_encode($auth); + + // Preserve headers if already set in default options + if (isset($defaultOptions['http']['header'])) { + if (is_string($defaultOptions['http']['header'])) { + $defaultOptions['http']['header'] = array($defaultOptions['http']['header']); + } + $defaultOptions['http']['header'][] = "Proxy-Authorization: Basic {$auth}"; + } else { + $options['http']['header'] = array("Proxy-Authorization: Basic {$auth}"); + } + } + } + + $options = array_replace_recursive($options, $defaultOptions); + + if (isset($options['http']['header'])) { + $options['http']['header'] = self::fixHttpHeaderField($options['http']['header']); + } + + if (defined('HHVM_VERSION')) { + $phpVersion = 'HHVM ' . HHVM_VERSION; + } else { + $phpVersion = 'PHP ' . PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION; + } + + if (!isset($options['http']['header']) || false === stripos(implode('', $options['http']['header']), 'user-agent')) { + $options['http']['header'][] = sprintf( + 'User-Agent: Composer/%s (%s; %s; %s%s)', + Composer::getVersion(), + function_exists('php_uname') ? php_uname('s') : 'Unknown', + function_exists('php_uname') ? php_uname('r') : 'Unknown', + $phpVersion, + getenv('CI') ? '; CI' : '' + ); + } + + return stream_context_create($options, $defaultParams); + } + + /** + * A bug in PHP prevents the headers from correctly being sent when a content-type header is present and + * NOT at the end of the array + * + * This method fixes the array by moving the content-type header to the end + * + * @link https://bugs.php.net/bug.php?id=61548 + * @param string|array $header + * @return array + */ + private static function fixHttpHeaderField($header) + { + if (!is_array($header)) { + $header = explode("\r\n", $header); + } + uasort($header, function ($el) { + return stripos($el, 'content-type') === 0 ? 1 : -1; + }); + + return $header; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Svn.php b/vendor/composer/composer/src/Composer/Util/Svn.php new file mode 100644 index 0000000..58114ac --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Svn.php @@ -0,0 +1,381 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Config; +use Composer\IO\IOInterface; + +/** + * @author Till Klampaeckel + * @author Jordi Boggiano + */ +class Svn +{ + const MAX_QTY_AUTH_TRIES = 5; + + /** + * @var array + */ + protected $credentials; + + /** + * @var bool + */ + protected $hasAuth; + + /** + * @var \Composer\IO\IOInterface + */ + protected $io; + + /** + * @var string + */ + protected $url; + + /** + * @var bool + */ + protected $cacheCredentials = true; + + /** + * @var ProcessExecutor + */ + protected $process; + + /** + * @var int + */ + protected $qtyAuthTries = 0; + + /** + * @var \Composer\Config + */ + protected $config; + + /** + * @var string|null + */ + private static $version; + + /** + * @param string $url + * @param \Composer\IO\IOInterface $io + * @param Config $config + * @param ProcessExecutor $process + */ + public function __construct($url, IOInterface $io, Config $config, ProcessExecutor $process = null) + { + $this->url = $url; + $this->io = $io; + $this->config = $config; + $this->process = $process ?: new ProcessExecutor($io); + } + + public static function cleanEnv() + { + // clean up env for OSX, see https://github.com/composer/composer/issues/2146#issuecomment-35478940 + putenv("DYLD_LIBRARY_PATH"); + unset($_SERVER['DYLD_LIBRARY_PATH']); + } + + /** + * Execute an SVN remote command and try to fix up the process with credentials + * if necessary. + * + * @param string $command SVN command to run + * @param string $url SVN url + * @param string $cwd Working directory + * @param string $path Target for a checkout + * @param bool $verbose Output all output to the user + * + * @throws \RuntimeException + * @return string + */ + public function execute($command, $url, $cwd = null, $path = null, $verbose = false) + { + // Ensure we are allowed to use this URL by config + $this->config->prohibitUrlByConfig($url, $this->io); + + return $this->executeWithAuthRetry($command, $cwd, $url, $path, $verbose); + } + + /** + * Execute an SVN local command and try to fix up the process with credentials + * if necessary. + * + * @param string $command SVN command to run + * @param string $path Path argument passed thru to the command + * @param string $cwd Working directory + * @param bool $verbose Output all output to the user + * + * @throws \RuntimeException + * @return string + */ + public function executeLocal($command, $path, $cwd = null, $verbose = false) + { + // A local command has no remote url + return $this->executeWithAuthRetry($command, $cwd, '', $path, $verbose); + } + + private function executeWithAuthRetry($svnCommand, $cwd, $url, $path, $verbose) + { + // Regenerate the command at each try, to use the newly user-provided credentials + $command = $this->getCommand($svnCommand, $url, $path); + + $output = null; + $io = $this->io; + $handler = function ($type, $buffer) use (&$output, $io, $verbose) { + if ($type !== 'out') { + return; + } + if ('Redirecting to URL ' === substr($buffer, 0, 19)) { + return; + } + $output .= $buffer; + if ($verbose) { + $io->writeError($buffer, false); + } + }; + $status = $this->process->execute($command, $handler, $cwd); + if (0 === $status) { + return $output; + } + + $errorOutput = $this->process->getErrorOutput(); + $fullOutput = implode("\n", array($output, $errorOutput)); + + // the error is not auth-related + if (false === stripos($fullOutput, 'Could not authenticate to server:') + && false === stripos($fullOutput, 'authorization failed') + && false === stripos($fullOutput, 'svn: E170001:') + && false === stripos($fullOutput, 'svn: E215004:')) { + throw new \RuntimeException($fullOutput); + } + + if (!$this->hasAuth()) { + $this->doAuthDance(); + } + + // try to authenticate if maximum quantity of tries not reached + if ($this->qtyAuthTries++ < self::MAX_QTY_AUTH_TRIES) { + // restart the process + return $this->executeWithAuthRetry($svnCommand, $cwd, $url, $path, $verbose); + } + + throw new \RuntimeException( + 'wrong credentials provided ('.$fullOutput.')' + ); + } + + /** + * @param bool $cacheCredentials + */ + public function setCacheCredentials($cacheCredentials) + { + $this->cacheCredentials = $cacheCredentials; + } + + /** + * Repositories requests credentials, let's put them in. + * + * @throws \RuntimeException + * @return \Composer\Util\Svn + */ + protected function doAuthDance() + { + // cannot ask for credentials in non interactive mode + if (!$this->io->isInteractive()) { + throw new \RuntimeException( + 'can not ask for authentication in non interactive mode' + ); + } + + $this->io->writeError("The Subversion server ({$this->url}) requested credentials:"); + + $this->hasAuth = true; + $this->credentials['username'] = $this->io->ask("Username: "); + $this->credentials['password'] = $this->io->askAndHideAnswer("Password: "); + + $this->cacheCredentials = $this->io->askConfirmation("Should Subversion cache these credentials? (yes/no) ", true); + + return $this; + } + + /** + * A method to create the svn commands run. + * + * @param string $cmd Usually 'svn ls' or something like that. + * @param string $url Repo URL. + * @param string $path Target for a checkout + * + * @return string + */ + protected function getCommand($cmd, $url, $path = null) + { + $cmd = sprintf( + '%s %s%s %s', + $cmd, + '--non-interactive ', + $this->getCredentialString(), + ProcessExecutor::escape($url) + ); + + if ($path) { + $cmd .= ' ' . ProcessExecutor::escape($path); + } + + return $cmd; + } + + /** + * Return the credential string for the svn command. + * + * Adds --no-auth-cache when credentials are present. + * + * @return string + */ + protected function getCredentialString() + { + if (!$this->hasAuth()) { + return ''; + } + + return sprintf( + ' %s--username %s --password %s ', + $this->getAuthCache(), + ProcessExecutor::escape($this->getUsername()), + ProcessExecutor::escape($this->getPassword()) + ); + } + + /** + * Get the password for the svn command. Can be empty. + * + * @throws \LogicException + * @return string + */ + protected function getPassword() + { + if ($this->credentials === null) { + throw new \LogicException("No svn auth detected."); + } + + return isset($this->credentials['password']) ? $this->credentials['password'] : ''; + } + + /** + * Get the username for the svn command. + * + * @throws \LogicException + * @return string + */ + protected function getUsername() + { + if ($this->credentials === null) { + throw new \LogicException("No svn auth detected."); + } + + return $this->credentials['username']; + } + + /** + * Detect Svn Auth. + * + * @return bool + */ + protected function hasAuth() + { + if (null !== $this->hasAuth) { + return $this->hasAuth; + } + + if (false === $this->createAuthFromConfig()) { + $this->createAuthFromUrl(); + } + + return $this->hasAuth; + } + + /** + * Return the no-auth-cache switch. + * + * @return string + */ + protected function getAuthCache() + { + return $this->cacheCredentials ? '' : '--no-auth-cache '; + } + + /** + * Create the auth params from the configuration file. + * + * @return bool + */ + private function createAuthFromConfig() + { + if (!$this->config->has('http-basic')) { + return $this->hasAuth = false; + } + + $authConfig = $this->config->get('http-basic'); + + $host = parse_url($this->url, PHP_URL_HOST); + if (isset($authConfig[$host])) { + $this->credentials['username'] = $authConfig[$host]['username']; + $this->credentials['password'] = $authConfig[$host]['password']; + + return $this->hasAuth = true; + } + + return $this->hasAuth = false; + } + + /** + * Create the auth params from the url + * + * @return bool + */ + private function createAuthFromUrl() + { + $uri = parse_url($this->url); + if (empty($uri['user'])) { + return $this->hasAuth = false; + } + + $this->credentials['username'] = $uri['user']; + if (!empty($uri['pass'])) { + $this->credentials['password'] = $uri['pass']; + } + + return $this->hasAuth = true; + } + + /** + * Returns the version of the svn binary contained in PATH + * + * @return string|null + */ + public function binaryVersion() + { + if (!self::$version) { + if (0 === $this->process->execute('svn --version', $output)) { + if (preg_match('{(\d+(?:\.\d+)+)}', $output, $match)) { + self::$version = $match[1]; + } + } + } + + return self::$version; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/TlsHelper.php b/vendor/composer/composer/src/Composer/Util/TlsHelper.php new file mode 100644 index 0000000..a53212f --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/TlsHelper.php @@ -0,0 +1,202 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\CaBundle\CaBundle; + +/** + * @author Chris Smith + */ +final class TlsHelper +{ + /** + * Match hostname against a certificate. + * + * @param mixed $certificate X.509 certificate + * @param string $hostname Hostname in the URL + * @param string $cn Set to the common name of the certificate iff match found + * + * @return bool + */ + public static function checkCertificateHost($certificate, $hostname, &$cn = null) + { + $names = self::getCertificateNames($certificate); + + if (empty($names)) { + return false; + } + + $combinedNames = array_merge($names['san'], array($names['cn'])); + $hostname = strtolower($hostname); + + foreach ($combinedNames as $certName) { + $matcher = self::certNameMatcher($certName); + + if ($matcher && $matcher($hostname)) { + $cn = $names['cn']; + + return true; + } + } + + return false; + } + + /** + * Extract DNS names out of an X.509 certificate. + * + * @param mixed $certificate X.509 certificate + * + * @return array|null + */ + public static function getCertificateNames($certificate) + { + if (is_array($certificate)) { + $info = $certificate; + } elseif (CaBundle::isOpensslParseSafe()) { + $info = openssl_x509_parse($certificate, false); + } + + if (!isset($info['subject']['commonName'])) { + return null; + } + + $commonName = strtolower($info['subject']['commonName']); + $subjectAltNames = array(); + + if (isset($info['extensions']['subjectAltName'])) { + $subjectAltNames = preg_split('{\s*,\s*}', $info['extensions']['subjectAltName']); + $subjectAltNames = array_filter(array_map(function ($name) { + if (0 === strpos($name, 'DNS:')) { + return strtolower(ltrim(substr($name, 4))); + } + + return null; + }, $subjectAltNames)); + $subjectAltNames = array_values($subjectAltNames); + } + + return array( + 'cn' => $commonName, + 'san' => $subjectAltNames, + ); + } + + /** + * Get the certificate pin. + * + * By Kevin McArthur of StormTide Digital Studios Inc. + * @KevinSMcArthur / https://github.com/StormTide + * + * See http://tools.ietf.org/html/draft-ietf-websec-key-pinning-02 + * + * This method was adapted from Sslurp. + * https://github.com/EvanDotPro/Sslurp + * + * (c) Evan Coury + * + * For the full copyright and license information, please see below: + * + * Copyright (c) 2013, Evan Coury + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without 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. + * + * * 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. + * + * 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. + */ + public static function getCertificateFingerprint($certificate) + { + $pubkeydetails = openssl_pkey_get_details(openssl_get_publickey($certificate)); + $pubkeypem = $pubkeydetails['key']; + //Convert PEM to DER before SHA1'ing + $start = '-----BEGIN PUBLIC KEY-----'; + $end = '-----END PUBLIC KEY-----'; + $pemtrim = substr($pubkeypem, strpos($pubkeypem, $start) + strlen($start), (strlen($pubkeypem) - strpos($pubkeypem, $end)) * (-1)); + $der = base64_decode($pemtrim); + + return sha1($der); + } + + /** + * Test if it is safe to use the PHP function openssl_x509_parse(). + * + * This checks if OpenSSL extensions is vulnerable to remote code execution + * via the exploit documented as CVE-2013-6420. + * + * @return bool + */ + public static function isOpensslParseSafe() + { + return CaBundle::isOpensslParseSafe(); + } + + /** + * Convert certificate name into matching function. + * + * @param string $certName CN/SAN + * + * @return callable|void + */ + private static function certNameMatcher($certName) + { + $wildcards = substr_count($certName, '*'); + + if (0 === $wildcards) { + // Literal match. + return function ($hostname) use ($certName) { + return $hostname === $certName; + }; + } + + if (1 === $wildcards) { + $components = explode('.', $certName); + + if (3 > count($components)) { + // Must have 3+ components + return; + } + + $firstComponent = $components[0]; + + // Wildcard must be the last character. + if ('*' !== $firstComponent[strlen($firstComponent) - 1]) { + return; + } + + $wildcardRegex = preg_quote($certName); + $wildcardRegex = str_replace('\\*', '[a-z0-9-]+', $wildcardRegex); + $wildcardRegex = "{^{$wildcardRegex}$}"; + + return function ($hostname) use ($wildcardRegex) { + return 1 === preg_match($wildcardRegex, $hostname); + }; + } + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Url.php b/vendor/composer/composer/src/Composer/Util/Url.php new file mode 100644 index 0000000..4a5d5f9 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Url.php @@ -0,0 +1,55 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +use Composer\Config; + +/** + * @author Jordi Boggiano + */ +class Url +{ + public static function updateDistReference(Config $config, $url, $ref) + { + $host = parse_url($url, PHP_URL_HOST); + + if ($host === 'api.github.com' || $host === 'github.com' || $host === 'www.github.com') { + if (preg_match('{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/(zip|tar)ball/(.+)$}i', $url, $match)) { + // update legacy github archives to API calls with the proper reference + $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; + } elseif (preg_match('{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/archive/.+\.(zip|tar)(?:\.gz)?$}i', $url, $match)) { + // update current github web archives to API calls with the proper reference + $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; + } elseif (preg_match('{^https?://api\.github\.com/repos/([^/]+)/([^/]+)/(zip|tar)ball(?:/.+)?$}i', $url, $match)) { + // update api archives to the proper reference + $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; + } + } elseif ($host === 'bitbucket.org' || $host === 'www.bitbucket.org') { + if (preg_match('{^https?://(?:www\.)?bitbucket\.org/([^/]+)/([^/]+)/get/(.+)\.(zip|tar\.gz|tar\.bz2)$}i', $url, $match)) { + // update Bitbucket archives to the proper reference + $url = 'https://bitbucket.org/' . $match[1] . '/'. $match[2] . '/get/' . $ref . '.' . $match[4]; + } + } elseif ($host === 'gitlab.com' || $host === 'www.gitlab.com') { + if (preg_match('{^https?://(?:www\.)?gitlab\.com/api/v[34]/projects/([^/]+)/repository/archive\.(zip|tar\.gz|tar\.bz2|tar)\?sha=.+$}i', $url, $match)) { + // update Gitlab archives to the proper reference + $url = 'https://gitlab.com/api/v4/projects/' . $match[1] . '/repository/archive.' . $match[2] . '?sha=' . $ref; + } + } elseif (in_array($host, $config->get('github-domains'), true)) { + $url = preg_replace('{(/repos/[^/]+/[^/]+/(zip|tar)ball)(?:/.+)?$}i', '$1/'.$ref, $url); + } elseif (in_array($host, $config->get('gitlab-domains'), true)) { + $url = preg_replace('{(/api/v[34]/projects/[^/]+/repository/archive\.(?:zip|tar\.gz|tar\.bz2|tar)\?sha=).+$}i', '${1}'.$ref, $url); + } + + return $url; + } +} diff --git a/vendor/composer/composer/src/Composer/Util/Zip.php b/vendor/composer/composer/src/Composer/Util/Zip.php new file mode 100644 index 0000000..8c79d10 --- /dev/null +++ b/vendor/composer/composer/src/Composer/Util/Zip.php @@ -0,0 +1,108 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Util; + +/** + * @author Andreas Schempp + */ +class Zip +{ + /** + * Gets content of the root composer.json inside a ZIP archive. + * + * @param string $pathToZip + * @param string $filename + * + * @return string|null + */ + public static function getComposerJson($pathToZip) + { + if (!extension_loaded('zip')) { + throw new \RuntimeException('The Zip Util requires PHP\'s zip extension'); + } + + $zip = new \ZipArchive(); + if ($zip->open($pathToZip) !== true) { + return null; + } + + if (0 == $zip->numFiles) { + $zip->close(); + + return null; + } + + $foundFileIndex = self::locateFile($zip, 'composer.json'); + if (false === $foundFileIndex) { + $zip->close(); + + return null; + } + + $content = null; + $configurationFileName = $zip->getNameIndex($foundFileIndex); + $stream = $zip->getStream($configurationFileName); + + if (false !== $stream) { + $content = stream_get_contents($stream); + } + + $zip->close(); + + return $content; + } + + /** + * Find a file by name, returning the one that has the shortest path. + * + * @param \ZipArchive $zip + * @param string $filename + * + * @return bool|int + */ + private static function locateFile(\ZipArchive $zip, $filename) + { + $indexOfShortestMatch = false; + $lengthOfShortestMatch = -1; + + for ($i = 0; $i < $zip->numFiles; $i++) { + $stat = $zip->statIndex($i); + if (strcmp(basename($stat['name']), $filename) === 0) { + $directoryName = dirname($stat['name']); + if ($directoryName === '.') { + //if composer.json is in root directory + //it has to be the one to use. + return $i; + } + + if (strpos($directoryName, '\\') !== false || + strpos($directoryName, '/') !== false) { + //composer.json files below first directory are rejected + continue; + } + + $length = strlen($stat['name']); + if ($indexOfShortestMatch === false || $length < $lengthOfShortestMatch) { + //Check it's not a directory. + $contents = $zip->getFromIndex($i); + if ($contents !== false) { + $indexOfShortestMatch = $i; + $lengthOfShortestMatch = $length; + } + } + } + } + + return $indexOfShortestMatch; + } +} diff --git a/vendor/composer/composer/src/Composer/XdebugHandler.php b/vendor/composer/composer/src/Composer/XdebugHandler.php new file mode 100644 index 0000000..eb94e93 --- /dev/null +++ b/vendor/composer/composer/src/Composer/XdebugHandler.php @@ -0,0 +1,31 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Symfony\Component\Console\Output\OutputInterface; + +trigger_error('The ' . __NAMESPACE__ . '\XdebugHandler class is deprecated, use Composer\XdebugHandler\XdebugHandler instead,', E_USER_DEPRECATED); + +/** + * @deprecated use Composer\XdebugHandler\XdebugHandler instead + */ +class XdebugHandler extends XdebugHandler\XdebugHandler +{ + const ENV_ALLOW = 'COMPOSER_ALLOW_XDEBUG'; + const ENV_VERSION = 'COMPOSER_XDEBUG_VERSION'; + + public function __construct(OutputInterface $output) + { + parent::__construct('composer', '--ansi'); + } +} diff --git a/vendor/composer/composer/src/bootstrap.php b/vendor/composer/composer/src/bootstrap.php new file mode 100644 index 0000000..a3832ce --- /dev/null +++ b/vendor/composer/composer/src/bootstrap.php @@ -0,0 +1,24 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +function includeIfExists($file) +{ + return file_exists($file) ? include $file : false; +} + +if ((!$loader = includeIfExists(__DIR__.'/../vendor/autoload.php')) && (!$loader = includeIfExists(__DIR__.'/../../../autoload.php'))) { + echo 'You must set up the project dependencies using `composer install`'.PHP_EOL. + 'See https://getcomposer.org/download/ for instructions on installing Composer'.PHP_EOL; + exit(1); +} + +return $loader; diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 7a72f15..3b6bc88 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,47 +1,6977 @@ [ { - "name": "firebase/php-jwt", - "version": "v4.0.0", - "version_normalized": "4.0.0.0", + "name": "antecedent/patchwork", + "version": "2.1.12", + "version_normalized": "2.1.12.0", "source": { "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "dccf163dc8ed7ed6a00afc06c51ee5186a428d35" + "url": "https://github.com/antecedent/patchwork.git", + "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/dccf163dc8ed7ed6a00afc06c51ee5186a428d35", - "reference": "dccf163dc8ed7ed6a00afc06c51ee5186a428d35", + "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea", + "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": ">=4" + }, + "time": "2019-12-22T17:52:09+00:00", + "type": "library", + "installation-source": "dist", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignas Rudaitis", + "email": "ignas.rudaitis@gmail.com" + } + ], + "description": "Method redefinition (monkey-patching) functionality for PHP.", + "homepage": "http://patchwork2.org/", + "keywords": [ + "aop", + "aspect", + "interception", + "monkeypatching", + "redefinition", + "runkit", + "testing" + ] + }, + { + "name": "bacon/bacon-string-utils", + "version": "1.1.0", + "version_normalized": "1.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/Bacon/BaconStringUtils.git", + "reference": "3d7818aca25190149a9a2415a0928d4964d6007e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bacon/BaconStringUtils/zipball/3d7818aca25190149a9a2415a0928d4964d6007e", + "reference": "3d7818aca25190149a9a2415a0928d4964d6007e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "satooshi/php-coveralls": "~0.6", + "squizlabs/php_codesniffer": "~1.5", + "zendframework/zendframework": "~2.0" }, - "time": "2016-07-18T04:51:16+00:00", + "suggest": { + "zendframework/zend-filter": "To use the Slugifier as a Zend\\Filter instance." + }, + "time": "2014-10-11T16:58:02+00:00", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "installation-source": "dist", "autoload": { - "psr-4": { - "Firebase\\JWT\\": "src" + "psr-0": { + "BaconStringUtils": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "BSD-2-Clause" ], "authors": [ { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "http://www.dasprids.de", "role": "Developer" + } + ], + "description": "BaconStringUtils contain utitilies to work with strings.", + "homepage": "https://github.com/Bacon/BaconStringUtils" + }, + { + "name": "behat/gherkin", + "version": "v4.6.1", + "version_normalized": "4.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "25bdcaf37898b4a939fa3031d5d753ced97e4759" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/25bdcaf37898b4a939fa3031d5d753ced97e4759", + "reference": "25bdcaf37898b4a939fa3031d5d753ced97e4759", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3|~4", + "symfony/yaml": "~2.3|~3|~4" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "time": "2020-02-27T11:29:57+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ] + }, + { + "name": "codeception/codeception", + "version": "2.5.6", + "version_normalized": "2.5.6.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Codeception.git", + "reference": "b83a9338296e706fab2ceb49de8a352fbca3dc98" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/b83a9338296e706fab2ceb49de8a352fbca3dc98", + "reference": "b83a9338296e706fab2ceb49de8a352fbca3dc98", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.4.0", + "codeception/phpunit-wrapper": "^6.0.9|^7.0.6", + "codeception/stub": "^2.0", + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "facebook/webdriver": ">=1.1.3 <2.0", + "guzzlehttp/guzzle": ">=4.1.4 <7.0", + "guzzlehttp/psr7": "~1.0", + "php": ">=5.6.0 <8.0", + "symfony/browser-kit": ">=2.7 <5.0", + "symfony/console": ">=2.7 <5.0", + "symfony/css-selector": ">=2.7 <5.0", + "symfony/dom-crawler": ">=2.7 <5.0", + "symfony/event-dispatcher": ">=2.7 <5.0", + "symfony/finder": ">=2.7 <5.0", + "symfony/yaml": ">=2.7 <5.0" + }, + "require-dev": { + "codeception/specify": "~0.3", + "facebook/graph-sdk": "~5.3", + "flow/jsonpath": "~0.2", + "monolog/monolog": "~1.8", + "pda/pheanstalk": "~3.0", + "php-amqplib/php-amqplib": "~2.4", + "predis/predis": "^1.0", + "squizlabs/php_codesniffer": "~2.0", + "symfony/process": ">=2.7 <5.0", + "vlucas/phpdotenv": "^3.0" + }, + "suggest": { + "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module", + "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests", + "codeception/specify": "BDD-style code blocks", + "codeception/verify": "BDD-style assertions", + "flow/jsonpath": "For using JSONPath in REST module", + "league/factory-muffin": "For DataFactory module", + "league/factory-muffin-faker": "For Faker support in DataFactory module", + "phpseclib/phpseclib": "for SFTP option in FTP Module", + "stecman/symfony-console-completion": "For BASH autocompletion", + "symfony/phpunit-bridge": "For phpunit-bridge support" + }, + "time": "2019-04-24T11:28:19+00:00", + "bin": [ + "codecept" + ], + "type": "library", + "extra": { + "branch-alias": [] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Codeception\\": "src/Codeception", + "Codeception\\Extension\\": "ext" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + } + ], + "description": "BDD-style testing framework", + "homepage": "http://codeception.com/", + "keywords": [ + "BDD", + "TDD", + "acceptance testing", + "functional testing", + "unit testing" + ] + }, + { + "name": "codeception/phpunit-wrapper", + "version": "7.8.0", + "version_normalized": "7.8.0.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/phpunit-wrapper.git", + "reference": "bc847bd4f8f6d09012543e2a856f19fe4ecdcf3a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/bc847bd4f8f6d09012543e2a856f19fe4ecdcf3a", + "reference": "bc847bd4f8f6d09012543e2a856f19fe4ecdcf3a", + "shasum": "" + }, + "require": { + "phpunit/php-code-coverage": "^6.0", + "phpunit/phpunit": "7.5.*", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0" + }, + "require-dev": { + "codeception/specify": "*", + "vlucas/phpdotenv": "^3.0" + }, + "time": "2019-12-23T06:55:58+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Codeception\\PHPUnit\\": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + } + ], + "description": "PHPUnit classes used by Codeception" + }, + { + "name": "codeception/stub", + "version": "2.1.0", + "version_normalized": "2.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Stub.git", + "reference": "853657f988942f7afb69becf3fd0059f192c705a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/853657f988942f7afb69becf3fd0059f192c705a", + "reference": "853657f988942f7afb69becf3fd0059f192c705a", + "shasum": "" + }, + "require": { + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3" + }, + "time": "2019-03-02T15:35:10+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Codeception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Flexible Stub wrapper for PHPUnit's Mock Builder" + }, + { + "name": "composer/ca-bundle", + "version": "1.2.6", + "version_normalized": "1.2.6.0", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/47fe531de31fca4a1b997f87308e7d7804348f7e", + "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + }, + "time": "2020-01-13T10:02:55+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ] + }, + { + "name": "composer/composer", + "version": "1.9.3", + "version_normalized": "1.9.3.0", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "1291a16ce3f48bfdeca39d64fca4875098af4d7b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/1291a16ce3f48bfdeca39d64fca4875098af4d7b", + "reference": "1291a16ce3f48bfdeca39d64fca4875098af4d7b", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0" + }, + "conflict": { + "symfony/console": "2.8.38" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7", + "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "time": "2020-02-04T11:58:49+00:00", + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt" + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ] + }, + { + "name": "composer/semver", + "version": "1.5.1", + "version_normalized": "1.5.1.0", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5" + }, + "time": "2020-01-13T12:06:48+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ] + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.3", + "version_normalized": "1.5.3.0", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "0c3e51e1880ca149682332770e25977c70cf9dae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae", + "reference": "0c3e51e1880ca149682332770e25977c70cf9dae", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "time": "2020-02-14T07:44:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ] + }, + { + "name": "composer/xdebug-handler", + "version": "1.4.1", + "version_normalized": "1.4.1.0", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "time": "2020-03-01T12:26:26+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ] + }, + { + "name": "cweagans/composer-patches", + "version": "1.6.7", + "version_normalized": "1.6.7.0", + "source": { + "type": "git", + "url": "https://github.com/cweagans/composer-patches.git", + "reference": "2e6f72a2ad8d59cd7e2b729f218bf42adb14f590" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/2e6f72a2ad8d59cd7e2b729f218bf42adb14f590", + "reference": "2e6f72a2ad8d59cd7e2b729f218bf42adb14f590", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "php": ">=5.3.0" + }, + "require-dev": { + "composer/composer": "~1.0", + "phpunit/phpunit": "~4.6" + }, + "time": "2019-08-29T20:11:49+00:00", + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "cweagans\\Composer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "description": "Provides a way to patch Composer packages." + }, + { + "name": "dg/mysql-dump", + "version": "v1.5.1", + "version_normalized": "1.5.1.0", + "source": { + "type": "git", + "url": "https://github.com/dg/MySQL-dump.git", + "reference": "e0e287b715b43293773a8b0edf8514f606e01780" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dg/MySQL-dump/zipball/e0e287b715b43293773a8b0edf8514f606e01780", + "reference": "e0e287b715b43293773a8b0edf8514f606e01780", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "time": "2019-09-10T21:36:25+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "http://davidgrudl.com" + } + ], + "description": "MySQL database dump.", + "homepage": "https://github.com/dg/MySQL-dump", + "keywords": [ + "mysql" + ] + }, + { + "name": "doctrine/inflector", + "version": "1.3.1", + "version_normalized": "1.3.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "time": "2019-10-30T19:59:35+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ] + }, + { + "name": "doctrine/instantiator", + "version": "1.3.0", + "version_normalized": "1.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" + }, + "time": "2019-10-21T16:45:58+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ] + }, + { + "name": "facebook/webdriver", + "version": "1.7.1", + "version_normalized": "1.7.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-webdriver/php-webdriver-archive.git", + "reference": "e43de70f3c7166169d0f14a374505392734160e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver-archive/zipball/e43de70f3c7166169d0f14a374505392734160e5", + "reference": "e43de70f3c7166169d0f14a374505392734160e5", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-zip": "*", + "php": "^5.6 || ~7.0", + "symfony/process": "^2.8 || ^3.1 || ^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "php-coveralls/php-coveralls": "^2.0", + "php-mock/php-mock-phpunit": "^1.1", + "phpunit/phpunit": "^5.7", + "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", + "squizlabs/php_codesniffer": "^2.6", + "symfony/var-dumper": "^3.3 || ^4.0" + }, + "suggest": { + "ext-SimpleXML": "For Firefox profile creation" + }, + "time": "2019-06-13T08:02:18+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-community": "1.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Facebook\\WebDriver\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "A PHP client for Selenium WebDriver", + "homepage": "https://github.com/facebook/php-webdriver", + "keywords": [ + "facebook", + "php", + "selenium", + "webdriver" + ], + "abandoned": "php-webdriver/webdriver" + }, + { + "name": "firebase/php-jwt", + "version": "v5.1.0", + "version_normalized": "5.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "4566062c68f76f43d44f1643f4970fe89757d4c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4566062c68f76f43d44f1643f4970fe89757d4c6", + "reference": "4566062c68f76f43d44f1643f4970fe89757d4c6", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5" + }, + "time": "2020-02-24T23:15:03+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt" + }, + { + "name": "gettext/gettext", + "version": "v4.8.2", + "version_normalized": "4.8.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-gettext/Gettext.git", + "reference": "e474f872f2c8636cf53fd283ec4ce1218f3d236a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/e474f872f2c8636cf53fd283ec4ce1218f3d236a", + "reference": "e474f872f2c8636cf53fd283ec4ce1218f3d236a", + "shasum": "" + }, + "require": { + "gettext/languages": "^2.3", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/view": "*", + "phpunit/phpunit": "^4.8|^5.7|^6.5", + "squizlabs/php_codesniffer": "^3.0", + "symfony/yaml": "~2", + "twig/extensions": "*", + "twig/twig": "^1.31|^2.0" + }, + "suggest": { + "illuminate/view": "Is necessary if you want to use the Blade extractor", + "symfony/yaml": "Is necessary if you want to use the Yaml extractor/generator", + "twig/extensions": "Is necessary if you want to use the Twig extractor", + "twig/twig": "Is necessary if you want to use the Twig extractor" + }, + "time": "2019-12-02T10:21:14+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Gettext\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oscar Otero", + "email": "oom@oscarotero.com", + "homepage": "http://oscarotero.com", + "role": "Developer" + } + ], + "description": "PHP gettext manager", + "homepage": "https://github.com/oscarotero/Gettext", + "keywords": [ + "JS", + "gettext", + "i18n", + "mo", + "po", + "translation" + ] + }, + { + "name": "gettext/languages", + "version": "2.6.0", + "version_normalized": "2.6.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-gettext/Languages.git", + "reference": "38ea0482f649e0802e475f0ed19fa993bcb7a618" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-gettext/Languages/zipball/38ea0482f649e0802e475f0ed19fa993bcb7a618", + "reference": "38ea0482f649e0802e475f0ed19fa993bcb7a618", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.16.0", + "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5 || ^8.4" + }, + "time": "2019-11-13T10:30:21+00:00", + "bin": [ + "bin/export-plural-rules" + ], + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Gettext\\Languages\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michele Locati", + "email": "mlocati@gmail.com", + "role": "Developer" + } + ], + "description": "gettext languages with plural rules", + "homepage": "https://github.com/php-gettext/Languages", + "keywords": [ + "cldr", + "i18n", + "internationalization", + "l10n", + "language", + "languages", + "localization", + "php", + "plural", + "plural rules", + "plurals", + "translate", + "translations", + "unicode" + ] + }, + { + "name": "gumlet/php-image-resize", + "version": "1.9.2", + "version_normalized": "1.9.2.0", + "source": { + "type": "git", + "url": "https://github.com/gumlet/php-image-resize.git", + "reference": "06339a9c1b167acd58173db226f57957a6617547" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/gumlet/php-image-resize/zipball/06339a9c1b167acd58173db226f57957a6617547", + "reference": "06339a9c1b167acd58173db226f57957a6617547", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "ext-gd": "*", + "php": ">=5.5.0" + }, + "require-dev": { + "apigen/apigen": "^4.1", + "ext-exif": "*", + "ext-gd": "*", + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^4.8" + }, + "suggest": { + "ext-exif": "Auto-rotate jpeg files" + }, + "time": "2019-01-01T13:53:00+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Gumlet\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aditya Patadia", + "homepage": "http://aditya.patadia.org/" + } + ], + "description": "PHP class to re-size and scale images", + "homepage": "https://github.com/gumlet/php-image-resize", + "keywords": [ + "image", + "php", + "resize", + "scale" + ] + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.5.2", + "version_normalized": "6.5.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", + "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.6.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.1" + }, + "suggest": { + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "time": "2019-12-23T11:57:10+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ] + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "version_normalized": "1.3.1.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "time": "2016-12-20T10:07:11+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ] + }, + { + "name": "guzzlehttp/psr7", + "version": "1.6.1", + "version_normalized": "1.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "suggest": { + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + }, + "time": "2019-07-01T23:21:34+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ] + }, + { + "name": "hautelook/phpass", + "version": "0.3.5", + "version_normalized": "0.3.5.0", + "source": { + "type": "git", + "url": "https://github.com/hautelook/phpass.git", + "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hautelook/phpass/zipball/b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", + "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2012-08-31T00:00:00+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Hautelook": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Public Domain" + ], + "authors": [ + { + "name": "Solar Designer", + "email": "solar@openwall.com", + "homepage": "http://openwall.com/phpass/" + } + ], + "description": "Portable PHP password hashing framework", + "homepage": "http://github.com/hautelook/phpass/", + "keywords": [ + "blowfish", + "crypt", + "password", + "security" + ] + }, + { + "name": "illuminate/contracts", + "version": "v7.0.7", + "version_normalized": "7.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "d806109dfee7b44b3633d0562aa4575c1365e0b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/d806109dfee7b44b3633d0562aa4575c1365e0b1", + "reference": "d806109dfee7b44b3633d0562aa4575c1365e0b1", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/container": "^1.0", + "psr/simple-cache": "^1.0" + }, + "time": "2020-03-06T01:34:22+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com" + }, + { + "name": "illuminate/support", + "version": "v7.0.7", + "version_normalized": "7.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "826782d01ec7a0befe26b106713822df5933ee69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/826782d01ec7a0befe26b106713822df5933ee69", + "reference": "826782d01ec7a0befe26b106713822df5933ee69", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.1", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/contracts": "^7.0", + "nesbot/carbon": "^2.17", + "php": "^7.2.5", + "voku/portable-ascii": "^1.4.8" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "suggest": { + "illuminate/filesystem": "Required to use the composer class (^7.0).", + "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "ramsey/uuid": "Required to use Str::uuid() (^3.7).", + "symfony/process": "Required to use the composer class (^5.0).", + "symfony/var-dumper": "Required to use the dd function (^5.0).", + "vlucas/phpdotenv": "Required to use the Env class and env helper (^4.0)." + }, + "time": "2020-03-06T19:50:43+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + }, + "files": [ + "helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Support package.", + "homepage": "https://laravel.com" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.9", + "version_normalized": "5.2.9.0", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "44c6787311242a979fa15c704327c20e7221a0e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", + "reference": "44c6787311242a979fa15c704327c20e7221a0e4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "time": "2019-09-25T14:49:45+00:00", + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ] + }, + { + "name": "lucatume/wp-browser", + "version": "2.2.7", + "version_normalized": "2.2.7.0", + "source": { + "type": "git", + "url": "https://github.com/lucatume/wp-browser.git", + "reference": "878fc8c00d5625f9afbc4f6f4f65164c5b522fdc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/878fc8c00d5625f9afbc4f6f4f65164c5b522fdc", + "reference": "878fc8c00d5625f9afbc4f6f4f65164c5b522fdc", + "shasum": "" + }, + "require": { + "antecedent/patchwork": "^2.0", + "codeception/codeception": "~2.5.0", + "ext-fileinfo": "*", + "ext-pdo": "*", + "gumlet/php-image-resize": "^1.6", + "lucatume/wp-browser-commons": "^1.0", + "php": ">=5.6.0", + "symfony/process": ">=2.7 <5.0", + "vlucas/phpdotenv": "^3.0", + "wp-cli/wp-cli-bundle": ">=2.0 <3.0.0" + }, + "require-dev": { + "erusev/parsedown": "^1.7", + "lucatume/codeception-snapshot-assertions": "^0.1", + "mikey179/vfsstream": "^1.6", + "squizlabs/php_codesniffer": "^3.4", + "victorjonsson/markdowndocs": "dev-master" + }, + "time": "2019-05-08T17:40:39+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Codeception\\": "src/Codeception", + "tad\\": "src/tad" + }, + "files": [ + "src/tad/WPBrowser/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "theAverageDev (Luca Tumedei)", + "email": "luca@theaveragedev.com", + "homepage": "http://theaveragedev.com", + "role": "Developer" + } + ], + "description": "WordPress extension of the PhpBrowser class.", + "homepage": "http://github.com/lucatume/wp-browser", + "keywords": [ + "codeception", + "wordpress" + ] + }, + { + "name": "lucatume/wp-browser-commons", + "version": "1.2.10", + "version_normalized": "1.2.10.0", + "source": { + "type": "git", + "url": "https://github.com/lucatume/wp-browser-commons.git", + "reference": "25b93939e1d123820cca02f2db175289a7d8949f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lucatume/wp-browser-commons/zipball/25b93939e1d123820cca02f2db175289a7d8949f", + "reference": "25b93939e1d123820cca02f2db175289a7d8949f", + "shasum": "" + }, + "require": { + "bacon/bacon-string-utils": "~1.0", + "codeception/codeception": "~2.1", + "dg/mysql-dump": "^1.3", + "mikemclin/laravel-wp-password": "~2.0.0", + "php": ">=5.4.0", + "symfony/filesystem": "^3.0", + "xamin/handlebars.php": "~0.10" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6" + }, + "time": "2019-05-08T14:31:06+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "tad\\": "src\\tad" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0" + ], + "authors": [ + { + "name": "Luca Tumedei", + "email": "luca@theaveragedev.com" + } + ], + "description": "Common libraries of the WP-Browser package." + }, + { + "name": "mck89/peast", + "version": "v1.10.1", + "version_normalized": "1.10.1.0", + "source": { + "type": "git", + "url": "https://github.com/mck89/peast.git", + "reference": "461fbe96212ac1b511f527fd11b942e976429398" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mck89/peast/zipball/461fbe96212ac1b511f527fd11b942e976429398", + "reference": "461fbe96212ac1b511f527fd11b942e976429398", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0|^5.0" + }, + "time": "2019-12-22T16:46:42+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10.1-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Peast\\": "lib/Peast/", + "Peast\\test\\": "test/Peast/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Marchiò", + "email": "marco.mm89@gmail.com" + } + ], + "description": "Peast is PHP library that generates AST for JavaScript code" + }, + { + "name": "mikemclin/laravel-wp-password", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/mikemclin/laravel-wp-password.git", + "reference": "84ff1113ff6866cdb0350c176dc3c843383e4819" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mikemclin/laravel-wp-password/zipball/84ff1113ff6866cdb0350c176dc3c843383e4819", + "reference": "84ff1113ff6866cdb0350c176dc3c843383e4819", + "shasum": "" + }, + "require": { + "hautelook/phpass": "0.3.*", + "illuminate/support": ">=4.0.0", + "php": ">=5.3.0" + }, + "replace": { + "mikemclin/laravel-wp-password": "self.version" + }, + "require-dev": { + "mockery/mockery": "~0.9", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "dev-master" + }, + "time": "2018-01-11T14:12:02+00:00", + "type": "laravel-package", + "extra": { + "laravel": { + "providers": [ + "MikeMcLin\\WpPassword\\WpPasswordProvider" + ], + "aliases": { + "WpPassword": "MikeMcLin\\WpPassword\\Facades\\WpPassword" + } + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "MikeMcLin\\WpPassword\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike McLin", + "email": "mike@mikemclin.com", + "homepage": "http://mikemclin.net" + } + ], + "description": "Laravel package that checks and creates WordPress password hashes", + "homepage": "https://github.com/mikemclin/laravel-wp-password", + "keywords": [ + "hashing", + "laravel", + "password", + "wordpress" + ] + }, + { + "name": "mustache/mustache", + "version": "v2.13.0", + "version_normalized": "2.13.0.0", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/mustache.php.git", + "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/e95c5a008c23d3151d59ea72484d4f72049ab7f4", + "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~1.11", + "phpunit/phpunit": "~3.7|~4.0|~5.0" + }, + "time": "2019-11-23T21:40:31+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Mustache": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "A Mustache implementation in PHP.", + "homepage": "https://github.com/bobthecow/mustache.php", + "keywords": [ + "mustache", + "templating" + ] + }, + { + "name": "myclabs/deep-copy", + "version": "1.9.5", + "version_normalized": "1.9.5.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "time": "2020-01-17T21:11:47+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ] + }, + { + "name": "nb/oxymel", + "version": "v0.1.0", + "version_normalized": "0.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/nb/oxymel.git", + "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nb/oxymel/zipball/cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c", + "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "time": "2013-02-24T15:01:54+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Oxymel": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nikolay Bachiyski", + "email": "nb@nikolay.bg", + "homepage": "http://extrapolate.me/" + } + ], + "description": "A sweet XML builder", + "homepage": "https://github.com/nb/oxymel", + "keywords": [ + "xml" + ] + }, + { + "name": "nesbot/carbon", + "version": "2.31.0", + "version_normalized": "2.31.0.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", + "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^1.1", + "phpmd/phpmd": "^2.8", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" + }, + "time": "2020-03-01T11:11:58+00:00", + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + }, + { + "name": "kylekatarnls", + "homepage": "http://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ] + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "version_normalized": "1.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "time": "2018-07-08T19:23:20+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "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)" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "time": "2018-07-08T19:19:57+00:00", + "type": "library", + "installation-source": "dist", + "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" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "~6" + }, + "time": "2018-08-07T13:53:10+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.1.0", + "version_normalized": "5.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "shasum": "" + }, + "require": { + "ext-filter": "^7.1", + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0", + "phpdocumentor/type-resolver": "^1.0", + "webmozart/assert": "^1" + }, + "require-dev": { + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" + }, + "time": "2020-02-22T12:28:44+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "installation-source": "dist", + "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." + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.1.0", + "version_normalized": "1.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", + "shasum": "" + }, + "require": { + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "^7.2", + "mockery/mockery": "~1" + }, + "time": "2020-02-18T18:59:58+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "installation-source": "dist", + "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" + }, + { + "name": "phpoption/phpoption", + "version": "1.7.2", + "version_normalized": "1.7.2.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "time": "2019-12-15T19:35:24+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ] + }, + { + "name": "phpspec/prophecy", + "version": "v1.10.3", + "version_normalized": "1.10.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "451c3cd1418cf640de218914901e51b064abb093" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "time": "2020-03-05T15:02:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.1.4", + "version_normalized": "6.1.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "time": "2018-10-31T16:06:48+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "version_normalized": "2.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "time": "2018-09-13T20:33:42+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "version_normalized": "1.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2015-06-21T13:50:34+00:00", + "type": "library", + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-timer", + "version": "2.1.2", + "version_normalized": "2.1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "time": "2019-06-07T04:22:29+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-token-stream", + "version": "3.1.1", + "version_normalized": "3.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "time": "2019-09-17T06:23:10+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ] + }, + { + "name": "phpunit/phpunit", + "version": "7.5.20", + "version_normalized": "7.5.20.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "time": "2020-01-08T08:45:45+00:00", + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ] + }, + { + "name": "psr/container", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2017-02-14T16:28:37+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ] + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2016-08-06T14:39:51+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ] + }, + { + "name": "psr/log", + "version": "1.1.2", + "version_normalized": "1.1.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2019-11-01T11:05:21+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ] + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2017-10-23T01:57:42+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ] + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "version_normalized": "3.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "time": "2019-03-08T08:55:37+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders." + }, + { + "name": "rmccue/requests", + "version": "v1.7.0", + "version_normalized": "1.7.0.0", + "source": { + "type": "git", + "url": "https://github.com/rmccue/Requests.git", + "reference": "87932f52ffad70504d93f04f15690cf16a089546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rmccue/Requests/zipball/87932f52ffad70504d93f04f15690cf16a089546", + "reference": "87932f52ffad70504d93f04f15690cf16a089546", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "require-dev": { + "requests/test-server": "dev-master" + }, + "time": "2016-10-13T00:11:37+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Requests": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Ryan McCue", + "homepage": "http://ryanmccue.info" + } + ], + "description": "A HTTP library written in PHP, for human beings.", + "homepage": "http://github.com/rmccue/Requests", + "keywords": [ + "curl", + "fsockopen", + "http", + "idna", + "ipv6", + "iri", + "sockets" + ] + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "time": "2017-03-04T06:30:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "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/" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "version_normalized": "3.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "" + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "time": "2018-07-12T15:12:46+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ] + }, + { + "name": "sebastian/diff", + "version": "3.0.2", + "version_normalized": "3.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "time": "2019-02-04T06:01:07+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ] + }, + { + "name": "sebastian/environment", + "version": "4.2.3", + "version_normalized": "4.2.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "time": "2019-11-20T08:46:58+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "sebastian/exporter", + "version": "3.1.2", + "version_normalized": "3.1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "time": "2019-09-14T09:02:43+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "installation-source": "dist", + "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": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ] + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "time": "2017-04-27T15:39:26+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "version_normalized": "3.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "time": "2017-08-03T12:35:26+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "installation-source": "dist", + "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/" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "version_normalized": "1.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "time": "2017-03-29T09:07:27+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "installation-source": "dist", + "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/" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "version_normalized": "3.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "time": "2017-03-03T06:23:57+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "time": "2018-10-04T04:07:39+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "installation-source": "dist", + "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" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "time": "2016-10-03T07:35:21+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "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" + }, + { + "name": "seld/jsonlint", + "version": "1.7.2", + "version_normalized": "1.7.2.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19", + "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "time": "2019-10-24T14:27:39+00:00", + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ] + }, + { + "name": "seld/phar-utils", + "version": "1.1.0", + "version_normalized": "1.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0", + "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "time": "2020-02-14T15:25:33+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phar" + ] + }, + { + "name": "symfony/browser-kit", + "version": "v4.4.5", + "version_normalized": "4.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "090ce406505149d6852a7c03b0346dec3b8cf612" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/090ce406505149d6852a7c03b0346dec3b8cf612", + "reference": "090ce406505149d6852a7c03b0346dec3b8cf612", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0" + }, + "require-dev": { + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/mime": "^4.3|^5.0", + "symfony/process": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/process": "" + }, + "time": "2020-02-23T10:00:59+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony BrowserKit Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/console", + "version": "v4.4.5", + "version_normalized": "4.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", + "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "time": "2020-02-24T13:10:00+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/css-selector", + "version": "v4.4.5", + "version_normalized": "4.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "d0a6dd288fa8848dcc3d1f58b94de6a7cc5d2d22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/d0a6dd288fa8848dcc3d1f58b94de6a7cc5d2d22", + "reference": "d0a6dd288fa8848dcc3d1f58b94de6a7cc5d2d22", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "time": "2020-02-04T09:01:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/dom-crawler", + "version": "v4.4.5", + "version_normalized": "4.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "11dcf08f12f29981bf770f097a5d64d65bce5929" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/11dcf08f12f29981bf770f097a5d64d65bce5929", + "reference": "11dcf08f12f29981bf770f097a5d64d65bce5929", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "time": "2020-02-29T10:05:28+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DomCrawler Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.4.5", + "version_normalized": "4.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4ad8e149799d3128621a3a1f70e92b9897a8930d", + "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "time": "2020-02-04T09:32:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.7", + "version_normalized": "1.1.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "time": "2019-09-17T09:54:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ] + }, + { + "name": "symfony/filesystem", + "version": "v3.4.38", + "version_normalized": "3.4.38.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "0a0d3b4bda11aa3a0464531c40e681e184e75628" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0a0d3b4bda11aa3a0464531c40e681e184e75628", + "reference": "0a0d3b4bda11aa3a0464531c40e681e184e75628", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" + }, + "time": "2020-01-17T08:50:08+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/finder", + "version": "v4.4.5", + "version_normalized": "4.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357", + "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "time": "2020-02-14T07:42:58+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.14.0", + "version_normalized": "1.14.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "time": "2020-01-13T11:15:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.14-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ] + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.14.0", + "version_normalized": "1.14.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2", + "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "time": "2020-01-13T11:15:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.14-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.14.0", + "version_normalized": "1.14.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675", + "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2020-01-13T11:15:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.14-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/process", + "version": "v4.4.5", + "version_normalized": "4.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/bf9166bac906c9e69fb7a11d94875e7ced97bcd7", + "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "time": "2020-02-07T20:06:44+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/service-contracts", + "version": "v2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "144c5e51266b281231e947b51223ba14acf1a749" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "time": "2019-11-18T17:27:11+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ] + }, + { + "name": "symfony/translation", + "version": "v5.0.5", + "version_normalized": "5.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b", + "reference": "e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "time": "2020-02-04T07:41:34+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "time": "2019-11-18T17:27:11+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ] + }, + { + "name": "symfony/yaml", + "version": "v4.4.5", + "version_normalized": "4.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "94d005c176db2080e98825d98e01e8b311a97a88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/94d005c176db2080e98825d98e01e8b311a97a88", + "reference": "94d005c176db2080e98825d98e01e8b311a97a88", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "time": "2020-02-03T10:46:43+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.3", + "version_normalized": "1.1.3.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "time": "2019-06-13T22:48:21+00:00", + "type": "library", + "installation-source": "dist", + "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" + }, + { + "name": "vlucas/phpdotenv", + "version": "v3.6.0", + "version_normalized": "3.6.0.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0", + "phpoption/phpoption": "^1.5", + "symfony/polyfill-ctype": "^1.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "time": "2019-09-10T21:37:39+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://vancelucas.com/" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ] + }, + { + "name": "voku/portable-ascii", + "version": "1.4.9", + "version_normalized": "1.4.9.0", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "9fd2b224c71448b5f84aef9d499a1428d79776a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9fd2b224c71448b5f84aef9d499a1428d79776a2", + "reference": "9fd2b224c71448b5f84aef9d499a1428d79776a2", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "time": "2020-03-06T02:47:42+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "voku\\": "src/voku/", + "voku\\tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ] + }, + { + "name": "webmozart/assert", + "version": "1.7.0", + "version_normalized": "1.7.0.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "vimeo/psalm": "<3.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "time": "2020-02-14T12:15:55+00:00", + "type": "library", + "installation-source": "dist", + "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" + ] + }, + { + "name": "wp-cli/cache-command", + "version": "v2.0.3", + "version_normalized": "2.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/cache-command.git", + "reference": "d3264aecf0e981b61adc020f5f6664f6538b7434" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/d3264aecf0e981b61adc020f5f6664f6538b7434", + "reference": "d3264aecf0e981b61adc020f5f6664f6538b7434", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:43:12+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "cache", + "cache add", + "cache decr", + "cache delete", + "cache flush", + "cache get", + "cache incr", + "cache replace", + "cache set", + "cache type", + "transient", + "transient delete", + "transient get", + "transient set", + "transient type", + "transient list" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "cache-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Manages object and transient caches.", + "homepage": "https://github.com/wp-cli/cache-command" + }, + { + "name": "wp-cli/checksum-command", + "version": "v2.0.3", + "version_normalized": "2.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/checksum-command.git", + "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/7db66668ec116c5ccef7bc27b4354fa81b85018a", + "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-04-25T00:28:02+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "core verify-checksums", + "plugin verify-checksums" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "checksum-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Verifies file integrity by comparing to published checksums.", + "homepage": "https://github.com/wp-cli/checksum-command" + }, + { + "name": "wp-cli/config-command", + "version": "v2.0.5", + "version_normalized": "2.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/config-command.git", + "reference": "9530dc42eebcae1fde10ad9e4aad312e06267eb9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/config-command/zipball/9530dc42eebcae1fde10ad9e4aad312e06267eb9", + "reference": "9530dc42eebcae1fde10ad9e4aad312e06267eb9", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2", + "wp-cli/wp-config-transformer": "^1.2.1" + }, + "require-dev": { + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:43:26+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "config", + "config edit", + "config delete", + "config create", + "config get", + "config has", + "config list", + "config path", + "config set", + "config shuffle-salts" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "config-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + }, + { + "name": "Alain Schlesser", + "email": "alain.schlesser@gmail.com", + "homepage": "https://www.alainschlesser.com" + } + ], + "description": "Generates and reads the wp-config.php file.", + "homepage": "https://github.com/wp-cli/config-command" + }, + { + "name": "wp-cli/core-command", + "version": "v2.0.8", + "version_normalized": "2.0.8.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/core-command.git", + "reference": "be62a9364c77a99698364a888362a8c8b9414f2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/core-command/zipball/be62a9364c77a99698364a888362a8c8b9414f2f", + "reference": "be62a9364c77a99698364a888362a8c8b9414f2f", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4", + "wp-cli/wp-cli": "^2.4" + }, + "require-dev": { + "wp-cli/checksum-command": "^1 || ^2", + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T15:31:38+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "core", + "core check-update", + "core download", + "core install", + "core is-installed", + "core multisite-convert", + "core multisite-install", + "core update", + "core update-db", + "core version" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "core-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Downloads, installs, updates, and manages a WordPress installation.", + "homepage": "https://github.com/wp-cli/core-command" + }, + { + "name": "wp-cli/cron-command", + "version": "v2.0.4", + "version_normalized": "2.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/cron-command.git", + "reference": "184ce82dfd6e7284a73f039ae39cf51a5f73174e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/184ce82dfd6e7284a73f039ae39cf51a5f73174e", + "reference": "184ce82dfd6e7284a73f039ae39cf51a5f73174e", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-12-17T17:53:36+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "cron", + "cron test", + "cron event", + "cron event delete", + "cron event list", + "cron event run", + "cron event schedule", + "cron schedule", + "cron schedule list", + "cron event unschedule" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "cron-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.", + "homepage": "https://github.com/wp-cli/cron-command" + }, + { + "name": "wp-cli/db-command", + "version": "v2.0.6", + "version_normalized": "2.0.6.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/db-command.git", + "reference": "8e3cd46987241ed97ddb7f682b3505dff8d6dce4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/db-command/zipball/8e3cd46987241ed97ddb7f682b3505dff8d6dce4", + "reference": "8e3cd46987241ed97ddb7f682b3505dff8d6dce4", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2020-01-28T16:39:32+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "db", + "db clean", + "db create", + "db drop", + "db reset", + "db check", + "db optimize", + "db prefix", + "db repair", + "db cli", + "db query", + "db export", + "db import", + "db search", + "db tables", + "db size", + "db columns" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "db-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Performs basic database operations using credentials stored in wp-config.php.", + "homepage": "https://github.com/wp-cli/db-command" + }, + { + "name": "wp-cli/embed-command", + "version": "v2.0.4", + "version_normalized": "2.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/embed-command.git", + "reference": "f67fd41a056c6cb847e8601e058fa836b9e5d325" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/f67fd41a056c6cb847e8601e058fa836b9e5d325", + "reference": "f67fd41a056c6cb847e8601e058fa836b9e5d325", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:43:50+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "embed", + "embed fetch", + "embed provider", + "embed provider list", + "embed provider match", + "embed handler", + "embed handler list", + "embed cache", + "embed cache clear", + "embed cache find", + "embed cache trigger" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "WP_CLI\\Embeds\\": "src/" + }, + "files": [ + "embed-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pascal Birchler", + "homepage": "https://pascalbirchler.com/" + } + ], + "description": "Inspects oEmbed providers, clears embed cache, and more.", + "homepage": "https://github.com/wp-cli/embed-command" + }, + { + "name": "wp-cli/entity-command", + "version": "v2.0.7", + "version_normalized": "2.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/entity-command.git", + "reference": "0df89e4fba48177acf768bff9c00cda95a3fe5b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/0df89e4fba48177acf768bff9c00cda95a3fe5b9", + "reference": "0df89e4fba48177acf768bff9c00cda95a3fe5b9", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/cache-command": "^1 || ^2", + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/media-command": "^1.1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T11:32:14+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "comment", + "comment approve", + "comment count", + "comment create", + "comment delete", + "comment exists", + "comment generate", + "comment get", + "comment list", + "comment meta", + "comment meta add", + "comment meta delete", + "comment meta get", + "comment meta list", + "comment meta patch", + "comment meta pluck", + "comment meta update", + "comment recount", + "comment spam", + "comment status", + "comment trash", + "comment unapprove", + "comment unspam", + "comment untrash", + "comment update", + "menu", + "menu create", + "menu delete", + "menu item", + "menu item add-custom", + "menu item add-post", + "menu item add-term", + "menu item delete", + "menu item list", + "menu item update", + "menu list", + "menu location", + "menu location assign", + "menu location list", + "menu location remove", + "network meta", + "network meta add", + "network meta delete", + "network meta get", + "network meta list", + "network meta patch", + "network meta pluck", + "network meta update", + "option", + "option add", + "option delete", + "option get", + "option list", + "option patch", + "option pluck", + "option update", + "post", + "post create", + "post delete", + "post edit", + "post exists", + "post generate", + "post get", + "post list", + "post meta", + "post meta add", + "post meta delete", + "post meta get", + "post meta list", + "post meta patch", + "post meta pluck", + "post meta update", + "post term", + "post term add", + "post term list", + "post term remove", + "post term set", + "post update", + "post-type", + "post-type get", + "post-type list", + "site", + "site activate", + "site archive", + "site create", + "site deactivate", + "site delete", + "site empty", + "site list", + "site mature", + "site option", + "site private", + "site public", + "site spam", + "site unarchive", + "site unmature", + "site unspam", + "taxonomy", + "taxonomy get", + "taxonomy list", + "term", + "term create", + "term delete", + "term generate", + "term get", + "term list", + "term meta", + "term meta add", + "term meta delete", + "term meta get", + "term meta list", + "term meta patch", + "term meta pluck", + "term meta update", + "term recount", + "term update", + "user", + "user add-cap", + "user add-role", + "user create", + "user delete", + "user generate", + "user get", + "user import-csv", + "user list", + "user list-caps", + "user meta", + "user meta add", + "user meta delete", + "user meta get", + "user meta list", + "user meta patch", + "user meta pluck", + "user meta update", + "user remove-cap", + "user remove-role", + "user reset-password", + "user session", + "user session destroy", + "user session list", + "user set-role", + "user spam", + "user term", + "user term add", + "user term list", + "user term remove", + "user term set", + "user unspam", + "user update" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/", + "WP_CLI\\": "src/WP_CLI" + }, + "files": [ + "entity-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Manage WordPress comments, menus, options, posts, sites, terms, and users.", + "homepage": "https://github.com/wp-cli/entity-command" + }, + { + "name": "wp-cli/eval-command", + "version": "v2.0.6", + "version_normalized": "2.0.6.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/eval-command.git", + "reference": "d379732f9899387a6a631ccea5116b3da6f16300" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/d379732f9899387a6a631ccea5116b3da6f16300", + "reference": "d379732f9899387a6a631ccea5116b3da6f16300", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2020-02-06T11:24:47+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "eval", + "eval-file" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "eval-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Executes arbitrary PHP code or files.", + "homepage": "https://github.com/wp-cli/eval-command" + }, + { + "name": "wp-cli/export-command", + "version": "v2.0.3", + "version_normalized": "2.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/export-command.git", + "reference": "a31b1777a199a8437127ad3db1b6b92e9cb5cd9b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/export-command/zipball/a31b1777a199a8437127ad3db1b6b92e9cb5cd9b", + "reference": "a31b1777a199a8437127ad3db1b6b92e9cb5cd9b", + "shasum": "" + }, + "require": { + "nb/oxymel": "~0.1.0", + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/import-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-07-16T16:39:17+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "export" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "export-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Exports WordPress content to a WXR file.", + "homepage": "https://github.com/wp-cli/export-command" + }, + { + "name": "wp-cli/extension-command", + "version": "v2.0.8", + "version_normalized": "2.0.8.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/extension-command.git", + "reference": "3f55805356ccc502f38a24f224b8943f181d4813" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/3f55805356ccc502f38a24f224b8943f181d4813", + "reference": "3f55805356ccc502f38a24f224b8943f181d4813", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4", + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/scaffold-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1.6" + }, + "time": "2020-02-24T02:53:35+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "plugin", + "plugin activate", + "plugin deactivate", + "plugin delete", + "plugin get", + "plugin install", + "plugin is-installed", + "plugin list", + "plugin path", + "plugin search", + "plugin status", + "plugin toggle", + "plugin uninstall", + "plugin update", + "theme", + "theme activate", + "theme delete", + "theme disable", + "theme enable", + "theme get", + "theme install", + "theme is-installed", + "theme list", + "theme mod", + "theme mod get", + "theme mod set", + "theme mod remove", + "theme path", + "theme search", + "theme status", + "theme update", + "theme mod list" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "extension-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Manages plugins and themes, including installs, activations, and updates.", + "homepage": "https://github.com/wp-cli/extension-command" + }, + { + "name": "wp-cli/i18n-command", + "version": "v2.2.2", + "version_normalized": "2.2.2.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/i18n-command.git", + "reference": "2804c5246d9338da59951737b03c54d257be8e47" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/2804c5246d9338da59951737b03c54d257be8e47", + "reference": "2804c5246d9338da59951737b03c54d257be8e47", + "shasum": "" + }, + "require": { + "gettext/gettext": "^4.8", + "mck89/peast": "^1.8", + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/scaffold-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1.3" + }, + "time": "2019-12-13T09:00:43+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "i18n", + "i18n make-pot", + "i18n make-json" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "WP_CLI\\I18n\\": "src/" + }, + "files": [ + "i18n-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pascal Birchler", + "homepage": "https://pascalbirchler.com/" + } + ], + "description": "Provides internationalization tools for WordPress projects.", + "homepage": "https://github.com/wp-cli/i18n-command" + }, + { + "name": "wp-cli/import-command", + "version": "v2.0.2", + "version_normalized": "2.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/import-command.git", + "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/import-command/zipball/e28a7f55138ceb53f2ff5926874d8e5582c87db8", + "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/export-command": "^1 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-04-19T14:32:57+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "import" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "import-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Imports content from a given WXR file.", + "homepage": "https://github.com/wp-cli/import-command" + }, + { + "name": "wp-cli/language-command", + "version": "v2.0.5", + "version_normalized": "2.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/language-command.git", + "reference": "a14a385efffba2060f947afa85f7ffd7e7cda5d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/language-command/zipball/a14a385efffba2060f947afa85f7ffd7e7cda5d7", + "reference": "a14a385efffba2060f947afa85f7ffd7e7cda5d7", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:33:31+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "language", + "language core", + "language core activate", + "language core is-installed", + "language core install", + "language core list", + "language core uninstall", + "language core update", + "language plugin", + "language plugin is-installed", + "language plugin install", + "language plugin list", + "language plugin uninstall", + "language plugin update", + "language theme", + "language theme is-installed", + "language theme install", + "language theme list", + "language theme uninstall", + "language theme update" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "language-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Installs, activates, and manages language packs.", + "homepage": "https://github.com/wp-cli/language-command" + }, + { + "name": "wp-cli/maintenance-mode-command", + "version": "v2.0.2", + "version_normalized": "2.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/maintenance-mode-command.git", + "reference": "3c80e731e1032607a2e9589ae6b6398e95c05b91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/maintenance-mode-command/zipball/3c80e731e1032607a2e9589ae6b6398e95c05b91", + "reference": "3c80e731e1032607a2e9589ae6b6398e95c05b91", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:32:41+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "maintenance-mode", + "maintenance-mode activate", + "maintenance-mode deactivate", + "maintenance-mode status", + "maintenance-mode is-active" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "WP_CLI\\MaintenanceMode\\": "src/" + }, + "files": [ + "maintenance-mode-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thrijith Thankachan", + "email": "thrijith13@gmail.com", + "homepage": "https://thrijith.com" + } + ], + "description": "Activates, deactivates or checks the status of the maintenance mode of a site.", + "homepage": "https://github.com/wp-cli/maintenance-mode-command" + }, + { + "name": "wp-cli/media-command", + "version": "v2.0.7", + "version_normalized": "2.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/media-command.git", + "reference": "0b7fbee4c4aa9335b83fd5c65183808949ba1c8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/media-command/zipball/0b7fbee4c4aa9335b83fd5c65183808949ba1c8e", + "reference": "0b7fbee4c4aa9335b83fd5c65183808949ba1c8e", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^2.0", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T11:32:15+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "media", + "media import", + "media regenerate", + "media image-size" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "media-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.", + "homepage": "https://github.com/wp-cli/media-command" + }, + { + "name": "wp-cli/mustangostang-spyc", + "version": "0.6.3", + "version_normalized": "0.6.3.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/spyc.git", + "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/spyc/zipball/6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7", + "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "4.3.*@dev" + }, + "time": "2017-04-25T11:26:20+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Mustangostang\\": "src/" + }, + "files": [ + "includes/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "mustangostang", + "email": "vlad.andersen@gmail.com" + } + ], + "description": "A simple YAML loader/dumper class for PHP (WP-CLI fork)", + "homepage": "https://github.com/mustangostang/spyc/" + }, + { + "name": "wp-cli/package-command", + "version": "v2.0.6", + "version_normalized": "2.0.6.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/package-command.git", + "reference": "92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/package-command/zipball/92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a", + "reference": "92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a", + "shasum": "" + }, + "require": { + "composer/composer": ">=1.2.0 <1.7.0 || ^1.7.1", + "ext-json": "*", + "wp-cli/wp-cli": "^2.1" + }, + "require-dev": { + "wp-cli/scaffold-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2020-01-28T12:55:09+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "package", + "package browse", + "package install", + "package list", + "package update", + "package uninstall" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "package-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Lists, installs, and removes WP-CLI packages.", + "homepage": "https://github.com/wp-cli/package-command" + }, + { + "name": "wp-cli/php-cli-tools", + "version": "v0.11.11", + "version_normalized": "0.11.11.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/php-cli-tools.git", + "reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f", + "reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f", + "shasum": "" + }, + "require": { + "php": ">= 5.3.0" + }, + "time": "2018-09-04T13:28:00+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "cli": "lib/" + }, + "files": [ + "lib/cli/cli.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "James Logsdon", + "email": "jlogsdon@php.net", + "role": "Developer" + }, + { + "name": "Daniel Bachhuber", + "email": "daniel@handbuilt.co", + "role": "Maintainer" + } + ], + "description": "Console utilities for PHP", + "homepage": "http://github.com/wp-cli/php-cli-tools", + "keywords": [ + "cli", + "console" + ] + }, + { + "name": "wp-cli/rewrite-command", + "version": "v2.0.4", + "version_normalized": "2.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/rewrite-command.git", + "reference": "3879bcbf7e695f68097cedb8415ed04915a25465" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/3879bcbf7e695f68097cedb8415ed04915a25465", + "reference": "3879bcbf7e695f68097cedb8415ed04915a25465", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:31:23+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "rewrite", + "rewrite flush", + "rewrite list", + "rewrite structure" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "rewrite-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.", + "homepage": "https://github.com/wp-cli/rewrite-command" + }, + { + "name": "wp-cli/role-command", + "version": "v2.0.3", + "version_normalized": "2.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/role-command.git", + "reference": "bad54a1b02331ee6460cc6a6f967e37dd91e07a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/role-command/zipball/bad54a1b02331ee6460cc6a6f967e37dd91e07a3", + "reference": "bad54a1b02331ee6460cc6a6f967e37dd91e07a3", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:30:59+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "role", + "role create", + "role delete", + "role exists", + "role list", + "role reset", + "cap", + "cap add", + "cap list", + "cap remove" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "role-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Adds, removes, lists, and resets roles and capabilities.", + "homepage": "https://github.com/wp-cli/role-command" + }, + { + "name": "wp-cli/scaffold-command", + "version": "v2.0.8", + "version_normalized": "2.0.8.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/scaffold-command.git", + "reference": "4814acbdf3d7af499530cc1ae1e82f3ed9f12674" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/4814acbdf3d7af499530cc1ae1e82f3ed9f12674", + "reference": "4814acbdf3d7af499530cc1ae1e82f3ed9f12674", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0", + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-25T13:26:31+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "scaffold", + "scaffold underscores", + "scaffold block", + "scaffold child-theme", + "scaffold plugin", + "scaffold plugin-tests", + "scaffold post-type", + "scaffold taxonomy", + "scaffold theme-tests" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "scaffold-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.", + "homepage": "https://github.com/wp-cli/scaffold-command" + }, + { + "name": "wp-cli/search-replace-command", + "version": "v2.0.6", + "version_normalized": "2.0.6.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/search-replace-command.git", + "reference": "f446ca1f90144b496dbacb373868118ba40df028" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/f446ca1f90144b496dbacb373868118ba40df028", + "reference": "f446ca1f90144b496dbacb373868118ba40df028", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-12-13T09:13:20+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "search-replace" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "search-replace-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Searches/replaces strings in the database.", + "homepage": "https://github.com/wp-cli/search-replace-command" + }, + { + "name": "wp-cli/server-command", + "version": "v2.0.4", + "version_normalized": "2.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/server-command.git", + "reference": "b0c8db803aea2133973a9a35b0d94fb62487b456" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/server-command/zipball/b0c8db803aea2133973a9a35b0d94fb62487b456", + "reference": "b0c8db803aea2133973a9a35b0d94fb62487b456", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T11:32:15+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "server" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "server-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Launches PHP's built-in web server for a specific WordPress installation.", + "homepage": "https://github.com/wp-cli/server-command" + }, + { + "name": "wp-cli/shell-command", + "version": "v2.0.4", + "version_normalized": "2.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/shell-command.git", + "reference": "293cc82fe6e99c0168bf834787ac5d0e17825723" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/293cc82fe6e99c0168bf834787ac5d0e17825723", + "reference": "293cc82fe6e99c0168bf834787ac5d0e17825723", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:29:25+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "shell" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/", + "WP_CLI\\": "src/WP_CLI" + }, + "files": [ + "shell-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Opens an interactive PHP console for running and testing PHP code.", + "homepage": "https://github.com/wp-cli/shell-command" + }, + { + "name": "wp-cli/super-admin-command", + "version": "v2.0.3", + "version_normalized": "2.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/super-admin-command.git", + "reference": "b3f3078d25c17ee586a5f31cb5ce3553613e85b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/b3f3078d25c17ee586a5f31cb5ce3553613e85b4", + "reference": "b3f3078d25c17ee586a5f31cb5ce3553613e85b4", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2019-11-12T01:28:59+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "super-admin", + "super-admin add", + "super-admin list", + "super-admin remove" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "super-admin-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Lists, adds, or removes super admin users on a multisite installation.", + "homepage": "https://github.com/wp-cli/super-admin-command" + }, + { + "name": "wp-cli/widget-command", + "version": "v2.1.0", + "version_normalized": "2.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/widget-command.git", + "reference": "ddbc2c3e9966fae8de05a3200b04e0faf42fe06f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/ddbc2c3e9966fae8de05a3200b04e0faf42fe06f", + "reference": "ddbc2c3e9966fae8de05a3200b04e0faf42fe06f", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2.4" + }, + "require-dev": { + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "time": "2020-01-18T02:17:30+00:00", + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "widget", + "widget add", + "widget deactivate", + "widget delete", + "widget list", + "widget move", + "widget reset", + "widget update", + "sidebar", + "sidebar list" + ] + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "widget-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Adds, moves, and removes widgets; lists sidebars.", + "homepage": "https://github.com/wp-cli/widget-command" + }, + { + "name": "wp-cli/wp-cli", + "version": "v2.4.1", + "version_normalized": "2.4.1.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/wp-cli.git", + "reference": "ceb18598e79befa9b2a37a51efbb34910628988b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/ceb18598e79befa9b2a37a51efbb34910628988b", + "reference": "ceb18598e79befa9b2a37a51efbb34910628988b", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "mustache/mustache": "~2.13", + "php": "^5.4 || ^7.0", + "rmccue/requests": "~1.6", + "symfony/finder": ">2.7", + "wp-cli/mustangostang-spyc": "^0.6.3", + "wp-cli/php-cli-tools": "~0.11.2" + }, + "require-dev": { + "roave/security-advisories": "dev-master", + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.2 || ^2", + "wp-cli/extension-command": "^1.1 || ^2", + "wp-cli/package-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "suggest": { + "ext-readline": "Include for a better --prompt implementation", + "ext-zip": "Needed to support extraction of ZIP archives when doing downloads or updates" + }, + "time": "2020-02-18T08:15:37+00:00", + "bin": [ + "bin/wp", + "bin/wp.bat" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "WP_CLI": "php" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WP-CLI framework", + "homepage": "https://wp-cli.org", + "keywords": [ + "cli", + "wordpress" + ] + }, + { + "name": "wp-cli/wp-cli-bundle", + "version": "v2.4.0", + "version_normalized": "2.4.0.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/wp-cli-bundle.git", + "reference": "713bc75b2f88550920dedc4f2ad3e1daf9f76326" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/wp-cli-bundle/zipball/713bc75b2f88550920dedc4f2ad3e1daf9f76326", + "reference": "713bc75b2f88550920dedc4f2ad3e1daf9f76326", + "shasum": "" + }, + "require": { + "cweagans/composer-patches": "^1.6", + "php": ">=5.4", + "wp-cli/cache-command": "^2", + "wp-cli/checksum-command": "^2", + "wp-cli/config-command": "^2", + "wp-cli/core-command": "^2", + "wp-cli/cron-command": "^2", + "wp-cli/db-command": "^2", + "wp-cli/embed-command": "^2", + "wp-cli/entity-command": "^2", + "wp-cli/eval-command": "^2", + "wp-cli/export-command": "^2", + "wp-cli/extension-command": "^2", + "wp-cli/i18n-command": "^2", + "wp-cli/import-command": "^2", + "wp-cli/language-command": "^2", + "wp-cli/maintenance-mode-command": "^2", + "wp-cli/media-command": "^2", + "wp-cli/package-command": "^2", + "wp-cli/rewrite-command": "^2", + "wp-cli/role-command": "^2", + "wp-cli/scaffold-command": "^2", + "wp-cli/search-replace-command": "^2", + "wp-cli/server-command": "^2", + "wp-cli/shell-command": "^2", + "wp-cli/super-admin-command": "^2", + "wp-cli/widget-command": "^2", + "wp-cli/wp-cli": "^2.4" + }, + "require-dev": { + "roave/security-advisories": "dev-master", + "wp-cli/wp-cli-tests": "^2.1" + }, + "suggest": { + "psy/psysh": "Enhanced `wp shell` functionality" + }, + "time": "2019-11-12T17:43:58+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + }, + "enable-patching": true + }, + "installation-source": "dist", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WP-CLI bundle package with default commands.", + "homepage": "https://wp-cli.org", + "keywords": [ + "cli", + "wordpress" + ] + }, + { + "name": "wp-cli/wp-config-transformer", + "version": "v1.2.6", + "version_normalized": "1.2.6.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/wp-config-transformer.git", + "reference": "1ca98343443a8e4585865db5f50e8e6121fee70b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/wp-config-transformer/zipball/1ca98343443a8e4585865db5f50e8e6121fee70b", + "reference": "1ca98343443a8e4585865db5f50e8e6121fee70b", + "shasum": "" + }, + "require": { + "php": ">=5.3.29" + }, + "require-dev": { + "composer/composer": "^1.5.6", + "phpunit/phpunit": "^6.5.5", + "wp-coding-standards/wpcs": "^0.14.0 || ^1.0.0 || ^2.0.0" + }, + "time": "2019-07-23T17:24:43+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "src/WPConfigTransformer.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frankie Jarrett", + "email": "fjarrett@gmail.com" + } + ], + "description": "Programmatically edit a wp-config.php file." + }, + { + "name": "xamin/handlebars.php", + "version": "v0.10.4", + "version_normalized": "0.10.4.0", + "source": { + "type": "git", + "url": "https://github.com/XaminProject/handlebars.php.git", + "reference": "b85cee07eae96db0e1eec224ca90f5ce1e4d857a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/XaminProject/handlebars.php/zipball/b85cee07eae96db0e1eec224ca90f5ce1e4d857a", + "reference": "b85cee07eae96db0e1eec224ca90f5ce1e4d857a", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "~4.4", + "squizlabs/php_codesniffer": "~1.5" + }, + "time": "2016-12-12T13:51:02+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Handlebars": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "fzerorubigd", + "email": "fzerorubigd@gmail.com" + }, + { + "name": "Behrooz Shabani (everplays)", + "email": "everplays@gmail.com" + } + ], + "description": "Handlebars processor for php", + "homepage": "https://github.com/XaminProject/handlebars.php", + "abandoned": true } ] diff --git a/vendor/composer/semver/CHANGELOG.md b/vendor/composer/semver/CHANGELOG.md new file mode 100644 index 0000000..ee0c2ef --- /dev/null +++ b/vendor/composer/semver/CHANGELOG.md @@ -0,0 +1,78 @@ +# Change Log + +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + +### [1.5.1] 2020-01-13 + + * Fixed: Parsing of aliased version was not validating the alias to be a valid version + +### [1.5.0] 2019-03-19 + + * Added: some support for date versions (e.g. 201903) in `~` operator + * Fixed: support for stabilities in `~` operator was inconsistent + +### [1.4.2] 2016-08-30 + + * Fixed: collapsing of complex constraints lead to buggy constraints + +### [1.4.1] 2016-06-02 + + * Changed: branch-like requirements no longer strip build metadata - [composer/semver#38](https://github.com/composer/semver/pull/38). + +### [1.4.0] 2016-03-30 + + * Added: getters on MultiConstraint - [composer/semver#35](https://github.com/composer/semver/pull/35). + +### [1.3.0] 2016-02-25 + + * Fixed: stability parsing - [composer/composer#1234](https://github.com/composer/composer/issues/4889). + * Changed: collapse contiguous constraints when possible. + +### [1.2.0] 2015-11-10 + + * Changed: allow multiple numerical identifiers in 'pre-release' version part. + * Changed: add more 'v' prefix support. + +### [1.1.0] 2015-11-03 + + * Changed: dropped redundant `test` namespace. + * Changed: minor adjustment in datetime parsing normalization. + * Changed: `ConstraintInterface` relaxed, setPrettyString is not required anymore. + * Changed: `AbstractConstraint` marked deprecated, will be removed in 2.0. + * Changed: `Constraint` is now extensible. + +### [1.0.0] 2015-09-21 + + * Break: `VersionConstraint` renamed to `Constraint`. + * Break: `SpecificConstraint` renamed to `AbstractConstraint`. + * Break: `LinkConstraintInterface` renamed to `ConstraintInterface`. + * Break: `VersionParser::parseNameVersionPairs` was removed. + * Changed: `VersionParser::parseConstraints` allows (but ignores) build metadata now. + * Changed: `VersionParser::parseConstraints` allows (but ignores) prefixing numeric versions with a 'v' now. + * Changed: Fixed namespace(s) of test files. + * Changed: `Comparator::compare` no longer throws `InvalidArgumentException`. + * Changed: `Constraint` now throws `InvalidArgumentException`. + +### [0.1.0] 2015-07-23 + + * Added: `Composer\Semver\Comparator`, various methods to compare versions. + * Added: various documents such as README.md, LICENSE, etc. + * Added: configuration files for Git, Travis, php-cs-fixer, phpunit. + * Break: the following namespaces were renamed: + - Namespace: `Composer\Package\Version` -> `Composer\Semver` + - Namespace: `Composer\Package\LinkConstraint` -> `Composer\Semver\Constraint` + - Namespace: `Composer\Test\Package\Version` -> `Composer\Test\Semver` + - Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint` + * Changed: code style using php-cs-fixer. + +[1.5.1]: https://github.com/composer/semver/compare/1.5.0...1.5.1 +[1.5.0]: https://github.com/composer/semver/compare/1.4.2...1.5.0 +[1.4.2]: https://github.com/composer/semver/compare/1.4.1...1.4.2 +[1.4.1]: https://github.com/composer/semver/compare/1.4.0...1.4.1 +[1.4.0]: https://github.com/composer/semver/compare/1.3.0...1.4.0 +[1.3.0]: https://github.com/composer/semver/compare/1.2.0...1.3.0 +[1.2.0]: https://github.com/composer/semver/compare/1.1.0...1.2.0 +[1.1.0]: https://github.com/composer/semver/compare/1.0.0...1.1.0 +[1.0.0]: https://github.com/composer/semver/compare/0.1.0...1.0.0 +[0.1.0]: https://github.com/composer/semver/compare/5e0b9a4da...0.1.0 diff --git a/vendor/composer/semver/LICENSE b/vendor/composer/semver/LICENSE new file mode 100644 index 0000000..4669758 --- /dev/null +++ b/vendor/composer/semver/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2015 Composer + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/composer/semver/README.md b/vendor/composer/semver/README.md new file mode 100644 index 0000000..143daa0 --- /dev/null +++ b/vendor/composer/semver/README.md @@ -0,0 +1,70 @@ +composer/semver +=============== + +Semver library that offers utilities, version constraint parsing and validation. + +Originally written as part of [composer/composer](https://github.com/composer/composer), +now extracted and made available as a stand-alone library. + +[![Build Status](https://travis-ci.org/composer/semver.svg?branch=master)](https://travis-ci.org/composer/semver) + + +Installation +------------ + +Install the latest version with: + +```bash +$ composer require composer/semver +``` + + +Requirements +------------ + +* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. + + +Version Comparison +------------------ + +For details on how versions are compared, refer to the [Versions](https://getcomposer.org/doc/articles/versions.md) +article in the documentation section of the [getcomposer.org](https://getcomposer.org) website. + + +Basic usage +----------- + +### Comparator + +The `Composer\Semver\Comparator` class provides the following methods for comparing versions: + +* greaterThan($v1, $v2) +* greaterThanOrEqualTo($v1, $v2) +* lessThan($v1, $v2) +* lessThanOrEqualTo($v1, $v2) +* equalTo($v1, $v2) +* notEqualTo($v1, $v2) + +Each function takes two version strings as arguments. For example: + +```php +use Composer\Semver\Comparator; + +Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0 +``` + +### Semver + +The `Composer\Semver\Semver` class provides the following methods: + +* satisfies($version, $constraints) +* satisfiedBy(array $versions, $constraint) +* sort($versions) +* rsort($versions) + + +License +------- + +composer/semver is licensed under the MIT License, see the LICENSE file for details. diff --git a/vendor/composer/semver/composer.json b/vendor/composer/semver/composer.json new file mode 100644 index 0000000..981e7d1 --- /dev/null +++ b/vendor/composer/semver/composer.json @@ -0,0 +1,57 @@ +{ + "name": "composer/semver", + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "type": "library", + "license": "MIT", + "keywords": [ + "semver", + "semantic", + "versioning", + "validation" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5" + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Composer\\Semver\\": "tests" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "scripts": { + "test": "phpunit" + } +} diff --git a/vendor/composer/semver/src/Comparator.php b/vendor/composer/semver/src/Comparator.php new file mode 100644 index 0000000..a9d758f --- /dev/null +++ b/vendor/composer/semver/src/Comparator.php @@ -0,0 +1,111 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Semver; + +use Composer\Semver\Constraint\Constraint; + +class Comparator +{ + /** + * Evaluates the expression: $version1 > $version2. + * + * @param string $version1 + * @param string $version2 + * + * @return bool + */ + public static function greaterThan($version1, $version2) + { + return self::compare($version1, '>', $version2); + } + + /** + * Evaluates the expression: $version1 >= $version2. + * + * @param string $version1 + * @param string $version2 + * + * @return bool + */ + public static function greaterThanOrEqualTo($version1, $version2) + { + return self::compare($version1, '>=', $version2); + } + + /** + * Evaluates the expression: $version1 < $version2. + * + * @param string $version1 + * @param string $version2 + * + * @return bool + */ + public static function lessThan($version1, $version2) + { + return self::compare($version1, '<', $version2); + } + + /** + * Evaluates the expression: $version1 <= $version2. + * + * @param string $version1 + * @param string $version2 + * + * @return bool + */ + public static function lessThanOrEqualTo($version1, $version2) + { + return self::compare($version1, '<=', $version2); + } + + /** + * Evaluates the expression: $version1 == $version2. + * + * @param string $version1 + * @param string $version2 + * + * @return bool + */ + public static function equalTo($version1, $version2) + { + return self::compare($version1, '==', $version2); + } + + /** + * Evaluates the expression: $version1 != $version2. + * + * @param string $version1 + * @param string $version2 + * + * @return bool + */ + public static function notEqualTo($version1, $version2) + { + return self::compare($version1, '!=', $version2); + } + + /** + * Evaluates the expression: $version1 $operator $version2. + * + * @param string $version1 + * @param string $operator + * @param string $version2 + * + * @return bool + */ + public static function compare($version1, $operator, $version2) + { + $constraint = new Constraint($operator, $version2); + + return $constraint->matches(new Constraint('==', $version1)); + } +} diff --git a/vendor/composer/semver/src/Constraint/AbstractConstraint.php b/vendor/composer/semver/src/Constraint/AbstractConstraint.php new file mode 100644 index 0000000..7b5270f --- /dev/null +++ b/vendor/composer/semver/src/Constraint/AbstractConstraint.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Semver\Constraint; + +trigger_error('The ' . __NAMESPACE__ . '\AbstractConstraint abstract class is deprecated, there is no replacement for it, it will be removed in the next major version.', E_USER_DEPRECATED); + +/** + * Base constraint class. + */ +abstract class AbstractConstraint implements ConstraintInterface +{ + /** @var string */ + protected $prettyString; + + /** + * @param ConstraintInterface $provider + * + * @return bool + */ + public function matches(ConstraintInterface $provider) + { + if ($provider instanceof $this) { + // see note at bottom of this class declaration + return $this->matchSpecific($provider); + } + + // turn matching around to find a match + return $provider->matches($this); + } + + /** + * @param string $prettyString + */ + public function setPrettyString($prettyString) + { + $this->prettyString = $prettyString; + } + + /** + * @return string + */ + public function getPrettyString() + { + if ($this->prettyString) { + return $this->prettyString; + } + + return $this->__toString(); + } + + // implementations must implement a method of this format: + // not declared abstract here because type hinting violates parameter coherence (TODO right word?) + // public function matchSpecific( $provider); +} diff --git a/vendor/composer/semver/src/Constraint/Constraint.php b/vendor/composer/semver/src/Constraint/Constraint.php new file mode 100644 index 0000000..c8c90f0 --- /dev/null +++ b/vendor/composer/semver/src/Constraint/Constraint.php @@ -0,0 +1,215 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Semver\Constraint; + +/** + * Defines a constraint. + */ +class Constraint implements ConstraintInterface +{ + /* operator integer values */ + const OP_EQ = 0; + const OP_LT = 1; + const OP_LE = 2; + const OP_GT = 3; + const OP_GE = 4; + const OP_NE = 5; + + /** + * Operator to integer translation table. + * + * @var array + */ + private static $transOpStr = array( + '=' => self::OP_EQ, + '==' => self::OP_EQ, + '<' => self::OP_LT, + '<=' => self::OP_LE, + '>' => self::OP_GT, + '>=' => self::OP_GE, + '<>' => self::OP_NE, + '!=' => self::OP_NE, + ); + + /** + * Integer to operator translation table. + * + * @var array + */ + private static $transOpInt = array( + self::OP_EQ => '==', + self::OP_LT => '<', + self::OP_LE => '<=', + self::OP_GT => '>', + self::OP_GE => '>=', + self::OP_NE => '!=', + ); + + /** @var string */ + protected $operator; + + /** @var string */ + protected $version; + + /** @var string */ + protected $prettyString; + + /** + * @param ConstraintInterface $provider + * + * @return bool + */ + public function matches(ConstraintInterface $provider) + { + if ($provider instanceof $this) { + return $this->matchSpecific($provider); + } + + // turn matching around to find a match + return $provider->matches($this); + } + + /** + * @param string $prettyString + */ + public function setPrettyString($prettyString) + { + $this->prettyString = $prettyString; + } + + /** + * @return string + */ + public function getPrettyString() + { + if ($this->prettyString) { + return $this->prettyString; + } + + return $this->__toString(); + } + + /** + * Get all supported comparison operators. + * + * @return array + */ + public static function getSupportedOperators() + { + return array_keys(self::$transOpStr); + } + + /** + * Sets operator and version to compare with. + * + * @param string $operator + * @param string $version + * + * @throws \InvalidArgumentException if invalid operator is given. + */ + public function __construct($operator, $version) + { + if (!isset(self::$transOpStr[$operator])) { + throw new \InvalidArgumentException(sprintf( + 'Invalid operator "%s" given, expected one of: %s', + $operator, + implode(', ', self::getSupportedOperators()) + )); + } + + $this->operator = self::$transOpStr[$operator]; + $this->version = $version; + } + + /** + * @param string $a + * @param string $b + * @param string $operator + * @param bool $compareBranches + * + * @throws \InvalidArgumentException if invalid operator is given. + * + * @return bool + */ + public function versionCompare($a, $b, $operator, $compareBranches = false) + { + if (!isset(self::$transOpStr[$operator])) { + throw new \InvalidArgumentException(sprintf( + 'Invalid operator "%s" given, expected one of: %s', + $operator, + implode(', ', self::getSupportedOperators()) + )); + } + + $aIsBranch = 'dev-' === substr($a, 0, 4); + $bIsBranch = 'dev-' === substr($b, 0, 4); + + if ($aIsBranch && $bIsBranch) { + return $operator === '==' && $a === $b; + } + + // when branches are not comparable, we make sure dev branches never match anything + if (!$compareBranches && ($aIsBranch || $bIsBranch)) { + return false; + } + + return version_compare($a, $b, $operator); + } + + /** + * @param Constraint $provider + * @param bool $compareBranches + * + * @return bool + */ + public function matchSpecific(Constraint $provider, $compareBranches = false) + { + $noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]); + $providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]); + + $isEqualOp = self::OP_EQ === $this->operator; + $isNonEqualOp = self::OP_NE === $this->operator; + $isProviderEqualOp = self::OP_EQ === $provider->operator; + $isProviderNonEqualOp = self::OP_NE === $provider->operator; + + // '!=' operator is match when other operator is not '==' operator or version is not match + // these kinds of comparisons always have a solution + if ($isNonEqualOp || $isProviderNonEqualOp) { + return (!$isEqualOp && !$isProviderEqualOp) + || $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); + } + + // an example for the condition is <= 2.0 & < 1.0 + // these kinds of comparisons always have a solution + if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { + return true; + } + + if ($this->versionCompare($provider->version, $this->version, self::$transOpInt[$this->operator], $compareBranches)) { + // special case, e.g. require >= 1.0 and provide < 1.0 + // 1.0 >= 1.0 but 1.0 is outside of the provided interval + return !($provider->version === $this->version + && self::$transOpInt[$provider->operator] === $providerNoEqualOp + && self::$transOpInt[$this->operator] !== $noEqualOp); + } + + return false; + } + + /** + * @return string + */ + public function __toString() + { + return self::$transOpInt[$this->operator] . ' ' . $this->version; + } +} diff --git a/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/vendor/composer/semver/src/Constraint/ConstraintInterface.php new file mode 100644 index 0000000..7cb13b6 --- /dev/null +++ b/vendor/composer/semver/src/Constraint/ConstraintInterface.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Semver\Constraint; + +interface ConstraintInterface +{ + /** + * @param ConstraintInterface $provider + * + * @return bool + */ + public function matches(ConstraintInterface $provider); + + /** + * @return string + */ + public function getPrettyString(); + + /** + * @return string + */ + public function __toString(); +} diff --git a/vendor/composer/semver/src/Constraint/EmptyConstraint.php b/vendor/composer/semver/src/Constraint/EmptyConstraint.php new file mode 100644 index 0000000..cb89cd2 --- /dev/null +++ b/vendor/composer/semver/src/Constraint/EmptyConstraint.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Semver\Constraint; + +/** + * Defines the absence of a constraint. + */ +class EmptyConstraint implements ConstraintInterface +{ + /** @var string */ + protected $prettyString; + + /** + * @param ConstraintInterface $provider + * + * @return bool + */ + public function matches(ConstraintInterface $provider) + { + return true; + } + + /** + * @param $prettyString + */ + public function setPrettyString($prettyString) + { + $this->prettyString = $prettyString; + } + + /** + * @return string + */ + public function getPrettyString() + { + if ($this->prettyString) { + return $this->prettyString; + } + + return (string) $this; + } + + /** + * @return string + */ + public function __toString() + { + return '[]'; + } +} diff --git a/vendor/composer/semver/src/Constraint/MultiConstraint.php b/vendor/composer/semver/src/Constraint/MultiConstraint.php new file mode 100644 index 0000000..f8a60e4 --- /dev/null +++ b/vendor/composer/semver/src/Constraint/MultiConstraint.php @@ -0,0 +1,120 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Semver\Constraint; + +/** + * Defines a conjunctive or disjunctive set of constraints. + */ +class MultiConstraint implements ConstraintInterface +{ + /** @var ConstraintInterface[] */ + protected $constraints; + + /** @var string */ + protected $prettyString; + + /** @var bool */ + protected $conjunctive; + + /** + * @param ConstraintInterface[] $constraints A set of constraints + * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive + */ + public function __construct(array $constraints, $conjunctive = true) + { + $this->constraints = $constraints; + $this->conjunctive = $conjunctive; + } + + /** + * @return ConstraintInterface[] + */ + public function getConstraints() + { + return $this->constraints; + } + + /** + * @return bool + */ + public function isConjunctive() + { + return $this->conjunctive; + } + + /** + * @return bool + */ + public function isDisjunctive() + { + return !$this->conjunctive; + } + + /** + * @param ConstraintInterface $provider + * + * @return bool + */ + public function matches(ConstraintInterface $provider) + { + if (false === $this->conjunctive) { + foreach ($this->constraints as $constraint) { + if ($constraint->matches($provider)) { + return true; + } + } + + return false; + } + + foreach ($this->constraints as $constraint) { + if (!$constraint->matches($provider)) { + return false; + } + } + + return true; + } + + /** + * @param string $prettyString + */ + public function setPrettyString($prettyString) + { + $this->prettyString = $prettyString; + } + + /** + * @return string + */ + public function getPrettyString() + { + if ($this->prettyString) { + return $this->prettyString; + } + + return (string) $this; + } + + /** + * @return string + */ + public function __toString() + { + $constraints = array(); + foreach ($this->constraints as $constraint) { + $constraints[] = (string) $constraint; + } + + return '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; + } +} diff --git a/vendor/composer/semver/src/Semver.php b/vendor/composer/semver/src/Semver.php new file mode 100644 index 0000000..3ab2b68 --- /dev/null +++ b/vendor/composer/semver/src/Semver.php @@ -0,0 +1,127 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Semver; + +use Composer\Semver\Constraint\Constraint; + +class Semver +{ + const SORT_ASC = 1; + const SORT_DESC = -1; + + /** @var VersionParser */ + private static $versionParser; + + /** + * Determine if given version satisfies given constraints. + * + * @param string $version + * @param string $constraints + * + * @return bool + */ + public static function satisfies($version, $constraints) + { + if (null === self::$versionParser) { + self::$versionParser = new VersionParser(); + } + + $versionParser = self::$versionParser; + $provider = new Constraint('==', $versionParser->normalize($version)); + $parsedConstraints = $versionParser->parseConstraints($constraints); + + return $parsedConstraints->matches($provider); + } + + /** + * Return all versions that satisfy given constraints. + * + * @param array $versions + * @param string $constraints + * + * @return array + */ + public static function satisfiedBy(array $versions, $constraints) + { + $versions = array_filter($versions, function ($version) use ($constraints) { + return Semver::satisfies($version, $constraints); + }); + + return array_values($versions); + } + + /** + * Sort given array of versions. + * + * @param array $versions + * + * @return array + */ + public static function sort(array $versions) + { + return self::usort($versions, self::SORT_ASC); + } + + /** + * Sort given array of versions in reverse. + * + * @param array $versions + * + * @return array + */ + public static function rsort(array $versions) + { + return self::usort($versions, self::SORT_DESC); + } + + /** + * @param array $versions + * @param int $direction + * + * @return array + */ + private static function usort(array $versions, $direction) + { + if (null === self::$versionParser) { + self::$versionParser = new VersionParser(); + } + + $versionParser = self::$versionParser; + $normalized = array(); + + // Normalize outside of usort() scope for minor performance increase. + // Creates an array of arrays: [[normalized, key], ...] + foreach ($versions as $key => $version) { + $normalized[] = array($versionParser->normalize($version), $key); + } + + usort($normalized, function (array $left, array $right) use ($direction) { + if ($left[0] === $right[0]) { + return 0; + } + + if (Comparator::lessThan($left[0], $right[0])) { + return -$direction; + } + + return $direction; + }); + + // Recreate input array, using the original indexes which are now in sorted order. + $sorted = array(); + foreach ($normalized as $item) { + $sorted[] = $versions[$item[1]]; + } + + return $sorted; + } +} diff --git a/vendor/composer/semver/src/VersionParser.php b/vendor/composer/semver/src/VersionParser.php new file mode 100644 index 0000000..9a7d0db --- /dev/null +++ b/vendor/composer/semver/src/VersionParser.php @@ -0,0 +1,545 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Semver; + +use Composer\Semver\Constraint\ConstraintInterface; +use Composer\Semver\Constraint\EmptyConstraint; +use Composer\Semver\Constraint\MultiConstraint; +use Composer\Semver\Constraint\Constraint; + +/** + * Version parser. + * + * @author Jordi Boggiano + */ +class VersionParser +{ + /** + * Regex to match pre-release data (sort of). + * + * Due to backwards compatibility: + * - Instead of enforcing hyphen, an underscore, dot or nothing at all are also accepted. + * - Only stabilities as recognized by Composer are allowed to precede a numerical identifier. + * - Numerical-only pre-release identifiers are not supported, see tests. + * + * |--------------| + * [major].[minor].[patch] -[pre-release] +[build-metadata] + * + * @var string + */ + private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)((?:[.-]?\d+)*+)?)?([.-]?dev)?'; + + /** @var array */ + private static $stabilities = array('stable', 'RC', 'beta', 'alpha', 'dev'); + + /** + * Returns the stability of a version. + * + * @param string $version + * + * @return string + */ + public static function parseStability($version) + { + $version = preg_replace('{#.+$}i', '', $version); + + if (strpos($version, 'dev-') === 0 || '-dev' === substr($version, -4)) { + return 'dev'; + } + + preg_match('{' . self::$modifierRegex . '(?:\+.*)?$}i', strtolower($version), $match); + + if (!empty($match[3])) { + return 'dev'; + } + + if (!empty($match[1])) { + if ('beta' === $match[1] || 'b' === $match[1]) { + return 'beta'; + } + if ('alpha' === $match[1] || 'a' === $match[1]) { + return 'alpha'; + } + if ('rc' === $match[1]) { + return 'RC'; + } + } + + return 'stable'; + } + + /** + * @param string $stability + * + * @return string + */ + public static function normalizeStability($stability) + { + $stability = strtolower($stability); + + return $stability === 'rc' ? 'RC' : $stability; + } + + /** + * Normalizes a version string to be able to perform comparisons on it. + * + * @param string $version + * @param string $fullVersion optional complete version string to give more context + * + * @throws \UnexpectedValueException + * + * @return string + */ + public function normalize($version, $fullVersion = null) + { + $version = trim($version); + if (null === $fullVersion) { + $fullVersion = $version; + } + + // strip off aliasing + if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $version, $match)) { + // verify that the alias is a version without constraint + $this->normalize($match[2]); + + $version = $match[1]; + } + + // match master-like branches + if (preg_match('{^(?:dev-)?(?:master|trunk|default)$}i', $version)) { + return '9999999-dev'; + } + + // if requirement is branch-like, use full name + if (stripos($version, 'dev-') === 0) { + return 'dev-' . substr($version, 4); + } + + // strip off build metadata + if (preg_match('{^([^,\s+]++)\+[^\s]++$}', $version, $match)) { + $version = $match[1]; + } + + // match classical versioning + if (preg_match('{^v?(\d{1,5})(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) { + $version = $matches[1] + . (!empty($matches[2]) ? $matches[2] : '.0') + . (!empty($matches[3]) ? $matches[3] : '.0') + . (!empty($matches[4]) ? $matches[4] : '.0'); + $index = 5; + // match date(time) based versioning + } elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) { + $version = preg_replace('{\D}', '.', $matches[1]); + $index = 2; + } + + // add version modifiers if a version was matched + if (isset($index)) { + if (!empty($matches[$index])) { + if ('stable' === $matches[$index]) { + return $version; + } + $version .= '-' . $this->expandStability($matches[$index]) . (!empty($matches[$index + 1]) ? ltrim($matches[$index + 1], '.-') : ''); + } + + if (!empty($matches[$index + 2])) { + $version .= '-dev'; + } + + return $version; + } + + // match dev branches + if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { + try { + return $this->normalizeBranch($match[1]); + } catch (\Exception $e) { + } + } + + $extraMessage = ''; + if (preg_match('{ +as +' . preg_quote($version) . '$}', $fullVersion)) { + $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; + } elseif (preg_match('{^' . preg_quote($version) . ' +as +}', $fullVersion)) { + $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; + } + + throw new \UnexpectedValueException('Invalid version string "' . $version . '"' . $extraMessage); + } + + /** + * Extract numeric prefix from alias, if it is in numeric format, suitable for version comparison. + * + * @param string $branch Branch name (e.g. 2.1.x-dev) + * + * @return string|false Numeric prefix if present (e.g. 2.1.) or false + */ + public function parseNumericAliasPrefix($branch) + { + if (preg_match('{^(?P(\d++\\.)*\d++)(?:\.x)?-dev$}i', $branch, $matches)) { + return $matches['version'] . '.'; + } + + return false; + } + + /** + * Normalizes a branch name to be able to perform comparisons on it. + * + * @param string $name + * + * @return string + */ + public function normalizeBranch($name) + { + $name = trim($name); + + if (in_array($name, array('master', 'trunk', 'default'))) { + return $this->normalize($name); + } + + if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) { + $version = ''; + for ($i = 1; $i < 5; ++$i) { + $version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; + } + + return str_replace('x', '9999999', $version) . '-dev'; + } + + return 'dev-' . $name; + } + + /** + * Parses a constraint string into MultiConstraint and/or Constraint objects. + * + * @param string $constraints + * + * @return ConstraintInterface + */ + public function parseConstraints($constraints) + { + $prettyConstraint = $constraints; + + if (preg_match('{^([^,\s]*?)@(' . implode('|', self::$stabilities) . ')$}i', $constraints, $match)) { + $constraints = empty($match[1]) ? '*' : $match[1]; + } + + if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraints, $match)) { + $constraints = $match[1]; + } + + $orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints)); + $orGroups = array(); + + foreach ($orConstraints as $constraints) { + $andConstraints = preg_split('{(?< ,]) *(? 1) { + $constraintObjects = array(); + foreach ($andConstraints as $constraint) { + foreach ($this->parseConstraint($constraint) as $parsedConstraint) { + $constraintObjects[] = $parsedConstraint; + } + } + } else { + $constraintObjects = $this->parseConstraint($andConstraints[0]); + } + + if (1 === count($constraintObjects)) { + $constraint = $constraintObjects[0]; + } else { + $constraint = new MultiConstraint($constraintObjects); + } + + $orGroups[] = $constraint; + } + + if (1 === count($orGroups)) { + $constraint = $orGroups[0]; + } elseif (2 === count($orGroups) + // parse the two OR groups and if they are contiguous we collapse + // them into one constraint + && $orGroups[0] instanceof MultiConstraint + && $orGroups[1] instanceof MultiConstraint + && 2 === count($orGroups[0]->getConstraints()) + && 2 === count($orGroups[1]->getConstraints()) + && ($a = (string) $orGroups[0]) + && strpos($a, '[>=') === 0 && (false !== ($posA = strpos($a, '<', 4))) + && ($b = (string) $orGroups[1]) + && strpos($b, '[>=') === 0 && (false !== ($posB = strpos($b, '<', 4))) + && substr($a, $posA + 2, -1) === substr($b, 4, $posB - 5) + ) { + $constraint = new MultiConstraint(array( + new Constraint('>=', substr($a, 4, $posA - 5)), + new Constraint('<', substr($b, $posB + 2, -1)), + )); + } else { + $constraint = new MultiConstraint($orGroups, false); + } + + $constraint->setPrettyString($prettyConstraint); + + return $constraint; + } + + /** + * @param string $constraint + * + * @throws \UnexpectedValueException + * + * @return array + */ + private function parseConstraint($constraint) + { + if (preg_match('{^([^,\s]+?)@(' . implode('|', self::$stabilities) . ')$}i', $constraint, $match)) { + $constraint = $match[1]; + if ($match[2] !== 'stable') { + $stabilityModifier = $match[2]; + } + } + + if (preg_match('{^v?[xX*](\.[xX*])*$}i', $constraint)) { + return array(new EmptyConstraint()); + } + + $versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?' . self::$modifierRegex . '(?:\+[^\s]+)?'; + + // Tilde Range + // + // Like wildcard constraints, unsuffixed tilde constraints say that they must be greater than the previous + // version, to ensure that unstable instances of the current version are allowed. However, if a stability + // suffix is added to the constraint, then a >= match on the current version is used instead. + if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { + if (strpos($constraint, '~>') === 0) { + throw new \UnexpectedValueException( + 'Could not parse version constraint ' . $constraint . ': ' . + 'Invalid operator "~>", you probably meant to use the "~" operator' + ); + } + + // Work out which position in the version we are operating at + if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { + $position = 4; + } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { + $position = 3; + } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { + $position = 2; + } else { + $position = 1; + } + + // Calculate the stability suffix + $stabilitySuffix = ''; + if (empty($matches[5]) && empty($matches[7])) { + $stabilitySuffix .= '-dev'; + } + + $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); + $lowerBound = new Constraint('>=', $lowVersion); + + // For upper bound, we increment the position of one more significance, + // but highPosition = 0 would be illegal + $highPosition = max(1, $position - 1); + $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; + $upperBound = new Constraint('<', $highVersion); + + return array( + $lowerBound, + $upperBound, + ); + } + + // Caret Range + // + // Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple. + // In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for + // versions 0.X >=0.1.0, and no updates for versions 0.0.X + if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) { + // Work out which position in the version we are operating at + if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { + $position = 1; + } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { + $position = 2; + } else { + $position = 3; + } + + // Calculate the stability suffix + $stabilitySuffix = ''; + if (empty($matches[5]) && empty($matches[7])) { + $stabilitySuffix .= '-dev'; + } + + $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); + $lowerBound = new Constraint('>=', $lowVersion); + + // For upper bound, we increment the position of one more significance, + // but highPosition = 0 would be illegal + $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; + $upperBound = new Constraint('<', $highVersion); + + return array( + $lowerBound, + $upperBound, + ); + } + + // X Range + // + // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple. + // A partial version range is treated as an X-Range, so the special character is in fact optional. + if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) { + if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { + $position = 3; + } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { + $position = 2; + } else { + $position = 1; + } + + $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; + $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; + + if ($lowVersion === '0.0.0.0-dev') { + return array(new Constraint('<', $highVersion)); + } + + return array( + new Constraint('>=', $lowVersion), + new Constraint('<', $highVersion), + ); + } + + // Hyphen Range + // + // Specifies an inclusive set. If a partial version is provided as the first version in the inclusive range, + // then the missing pieces are replaced with zeroes. If a partial version is provided as the second version in + // the inclusive range, then all versions that start with the supplied parts of the tuple are accepted, but + // nothing that would be greater than the provided tuple parts. + if (preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { + // Calculate the stability suffix + $lowStabilitySuffix = ''; + if (empty($matches[6]) && empty($matches[8])) { + $lowStabilitySuffix = '-dev'; + } + + $lowVersion = $this->normalize($matches['from']); + $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); + + $empty = function ($x) { + return ($x === 0 || $x === '0') ? false : empty($x); + }; + + if ((!$empty($matches[11]) && !$empty($matches[12])) || !empty($matches[14]) || !empty($matches[16])) { + $highVersion = $this->normalize($matches['to']); + $upperBound = new Constraint('<=', $highVersion); + } else { + $highMatch = array('', $matches[10], $matches[11], $matches[12], $matches[13]); + $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[11]) ? 1 : 2, 1) . '-dev'; + $upperBound = new Constraint('<', $highVersion); + } + + return array( + $lowerBound, + $upperBound, + ); + } + + // Basic Comparators + if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) { + try { + $version = $this->normalize($matches[2]); + + if (!empty($stabilityModifier) && self::parseStability($version) === 'stable') { + $version .= '-' . $stabilityModifier; + } elseif ('<' === $matches[1] || '>=' === $matches[1]) { + if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) { + if (strpos($matches[2], 'dev-') !== 0) { + $version .= '-dev'; + } + } + } + + return array(new Constraint($matches[1] ?: '=', $version)); + } catch (\Exception $e) { + } + } + + $message = 'Could not parse version constraint ' . $constraint; + if (isset($e)) { + $message .= ': ' . $e->getMessage(); + } + + throw new \UnexpectedValueException($message); + } + + /** + * Increment, decrement, or simply pad a version number. + * + * Support function for {@link parseConstraint()} + * + * @param array $matches Array with version parts in array indexes 1,2,3,4 + * @param int $position 1,2,3,4 - which segment of the version to increment/decrement + * @param int $increment + * @param string $pad The string to pad version parts after $position + * + * @return string The new version + */ + private function manipulateVersionString($matches, $position, $increment = 0, $pad = '0') + { + for ($i = 4; $i > 0; --$i) { + if ($i > $position) { + $matches[$i] = $pad; + } elseif ($i === $position && $increment) { + $matches[$i] += $increment; + // If $matches[$i] was 0, carry the decrement + if ($matches[$i] < 0) { + $matches[$i] = $pad; + --$position; + + // Return null on a carry overflow + if ($i === 1) { + return null; + } + } + } + } + + return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; + } + + /** + * Expand shorthand stability string to long version. + * + * @param string $stability + * + * @return string + */ + private function expandStability($stability) + { + $stability = strtolower($stability); + + switch ($stability) { + case 'a': + return 'alpha'; + case 'b': + return 'beta'; + case 'p': + case 'pl': + return 'patch'; + case 'rc': + return 'RC'; + default: + return $stability; + } + } +} diff --git a/vendor/composer/spdx-licenses/.php_cs.dist b/vendor/composer/spdx-licenses/.php_cs.dist new file mode 100644 index 0000000..6c05540 --- /dev/null +++ b/vendor/composer/spdx-licenses/.php_cs.dist @@ -0,0 +1,59 @@ + + +For the full copyright and license information, please view +the LICENSE file that was distributed with this source code. +EOF; + +$finder = PhpCsFixer\Finder::create() + ->files() + ->name('*.php') + ->in(__DIR__.'/src') + ->in(__DIR__.'/tests') +; + +/* fabpot/php-cs-fixer:^2.0-dev */ +return PhpCsFixer\Config::create() + ->setUsingCache(true) + //->setUsingLinter(false) + ->setRiskyAllowed(true) + ->setRules(array( + '@PSR2' => true, + 'binary_operator_spaces' => true, + 'blank_line_before_return' => true, + 'cast_spaces' => true, + 'header_comment' => array('header' => $header), + 'include' => true, + 'long_array_syntax' => true, + 'method_separation' => true, + 'no_blank_lines_after_class_opening' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_blank_lines_between_uses' => true, + 'no_duplicate_semicolons' => true, + 'no_extra_consecutive_blank_lines' => true, + 'no_leading_import_slash' => true, + 'no_leading_namespace_whitespace' => true, + 'no_trailing_comma_in_singleline_array' => true, + 'no_unused_imports' => true, + 'no_whitespace_in_blank_lines' => true, + 'object_operator_without_whitespace' => true, + 'phpdoc_align' => true, + 'phpdoc_indent' => true, + 'phpdoc_no_access' => true, + 'phpdoc_no_package' => true, + 'phpdoc_order' => true, + 'phpdoc_scalar' => true, + 'phpdoc_trim' => true, + 'phpdoc_type_to_var' => true, + 'psr0' => true, + 'single_blank_line_before_namespace' => true, + 'standardize_not_equals' => true, + 'ternary_operator_spaces' => true, + 'trailing_comma_in_multiline_array' => true, + )) + ->finder($finder) +; diff --git a/vendor/composer/spdx-licenses/CHANGELOG.md b/vendor/composer/spdx-licenses/CHANGELOG.md new file mode 100644 index 0000000..2fe451c --- /dev/null +++ b/vendor/composer/spdx-licenses/CHANGELOG.md @@ -0,0 +1,94 @@ +# Change Log + +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + +## [master] + + ... + +## [1.5.2] 2019-07-29 + + * Changed: updated licenses list to SPDX 3.6 + +## [1.5.1] 2019-03-26 + + * Changed: updated licenses list to SPDX 3.4 + +## [1.5.0] 2018-11-01 + + * Changed: updated licenses list to SPDX 3.3 + +## [1.4.0] 2018-05-04 + + * Changed: updated licenses list to SPDX 3.1 + +## [1.3.0] 2018-01-31 + + * Added: `SpdxLicenses::getLicenses` to get the whole list of methods. + * Changed: license identifiers are now case insensitive. + +## [1.2.0] 2018-01-03 + + * Added: deprecation status for all licenses and a `SpdxLicenses::isDeprecatedByIdentifier` method. + * Changed: updated licenses list to SPDX 3.0. + +## [1.1.6] 2017-04-03 + + * Changed: updated licenses list. + +## [1.1.5] 2016-09-28 + + * Changed: updated licenses list. + +## [1.1.4] 2016-05-04 + + * Changed: updated licenses list. + +## [1.1.3] 2016-03-25 + + * Changed: updated licenses list. + * Changed: dropped `test` namespace. + * Changed: tedious small things. + +## [1.1.2] 2015-10-05 + + * Changed: updated licenses list. + +## [1.1.1] 2015-09-07 + + * Changed: improved performance when looking up just one license. + * Changed: updated licenses list. + +## [1.1.0] 2015-07-17 + + * Changed: updater now sorts licenses and exceptions by key. + * Changed: filenames now class constants of SpdxLicenses (`LICENSES_FILE` and `EXCEPTIONS_FILE`). + * Changed: resources directory now available via static method `SpdxLicenses::getResourcesDir()`. + * Changed: updated licenses list. + * Changed: removed json-schema requirement. + +## [1.0.0] 2015-07-15 + + * Break: the following classes and namespaces were renamed: + - Namespace: `Composer\Util` -> `Composer\Spdx` + - Classname: `SpdxLicense` -> `SpdxLicenses` + - Classname: `SpdxLicenseTest` -> `SpdxLicensesTest` + - Classname: `Updater` -> `SpdxLicensesUpdater` + * Changed: validation via regex implementation instead of lexer. + +[master]: https://github.com/composer/spdx-licenses/compare/1.5.2...master +[1.5.2]: https://github.com/composer/spdx-licenses/compare/1.5.1...1.5.2 +[1.5.1]: https://github.com/composer/spdx-licenses/compare/1.5.0...1.5.1 +[1.5.0]: https://github.com/composer/spdx-licenses/compare/1.4.0...1.5.0 +[1.4.0]: https://github.com/composer/spdx-licenses/compare/1.3.0...1.4.0 +[1.3.0]: https://github.com/composer/spdx-licenses/compare/1.2.0...1.3.0 +[1.2.0]: https://github.com/composer/spdx-licenses/compare/1.1.6...1.2.0 +[1.1.6]: https://github.com/composer/spdx-licenses/compare/1.1.5...1.1.6 +[1.1.5]: https://github.com/composer/spdx-licenses/compare/1.1.4...1.1.5 +[1.1.4]: https://github.com/composer/spdx-licenses/compare/1.1.3...1.1.4 +[1.1.3]: https://github.com/composer/spdx-licenses/compare/1.1.2...1.1.3 +[1.1.2]: https://github.com/composer/spdx-licenses/compare/1.1.1...1.1.2 +[1.1.1]: https://github.com/composer/spdx-licenses/compare/1.1.0...1.1.1 +[1.1.0]: https://github.com/composer/spdx-licenses/compare/1.0.0...1.1.0 +[1.0.0]: https://github.com/composer/spdx-licenses/compare/0281a7fe7820c990db3058844e7d448d7b70e3ac...1.0.0 diff --git a/vendor/composer/spdx-licenses/LICENSE b/vendor/composer/spdx-licenses/LICENSE new file mode 100644 index 0000000..4669758 --- /dev/null +++ b/vendor/composer/spdx-licenses/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2015 Composer + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/composer/spdx-licenses/README.md b/vendor/composer/spdx-licenses/README.md new file mode 100644 index 0000000..4c4da81 --- /dev/null +++ b/vendor/composer/spdx-licenses/README.md @@ -0,0 +1,69 @@ +composer/spdx-licenses +====================== + +SPDX (Software Package Data Exchange) licenses list and validation library. + +Originally written as part of [composer/composer](https://github.com/composer/composer), +now extracted and made available as a stand-alone library. + +[![Build Status](https://travis-ci.org/composer/spdx-licenses.svg?branch=master)](https://travis-ci.org/composer/spdx-licenses) + +Installation +------------ + +Install the latest version with: + +```bash +$ composer require composer/spdx-licenses +``` + +Basic Usage +----------- + +```php +getLicenseByIdentifier('MIT'); + +// get a license exception by identifier +$licenses->getExceptionByIdentifier('Autoconf-exception-3.0'); + +// get a license identifier by name +$licenses->getIdentifierByName('MIT License'); + +// check if a license is OSI approved by identifier +$licenses->isOsiApprovedByIdentifier('MIT'); + +// check if a license identifier is deprecated +$licenses->isDeprecatedByIdentifier('MIT'); + +// check if input is a valid SPDX license expression +$licenses->validate($input); +``` + +> Read the [specifications](https://spdx.org/specifications) +> to find out more about valid license expressions. + +Requirements +------------ + +* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. + +License +------- + +composer/spdx-licenses is licensed under the MIT License, see the LICENSE file for details. + +Source +------ + +License information is curated by [SPDX](https://spdx.org/). The data is pulled from the +[License List Data](https://github.com/spdx/license-list-data) repository. + +* [Licenses](https://spdx.org/licenses/index.html) +* [License Exceptions](https://spdx.org/licenses/exceptions-index.html) diff --git a/vendor/composer/spdx-licenses/composer.json b/vendor/composer/spdx-licenses/composer.json new file mode 100644 index 0000000..bda5b2b --- /dev/null +++ b/vendor/composer/spdx-licenses/composer.json @@ -0,0 +1,56 @@ +{ + "name": "composer/spdx-licenses", + "description": "SPDX licenses list and validation library.", + "type": "library", + "license": "MIT", + "keywords": [ + "spdx", + "license", + "validator" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Composer\\Spdx\\": "tests" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "scripts": { + "test": "phpunit" + } +} diff --git a/vendor/composer/spdx-licenses/res/spdx-exceptions.json b/vendor/composer/spdx-licenses/res/spdx-exceptions.json new file mode 100644 index 0000000..2c36d6a --- /dev/null +++ b/vendor/composer/spdx-licenses/res/spdx-exceptions.json @@ -0,0 +1,116 @@ +{ + "389-exception": [ + "389 Directory Server Exception" + ], + "Autoconf-exception-2.0": [ + "Autoconf exception 2.0" + ], + "Autoconf-exception-3.0": [ + "Autoconf exception 3.0" + ], + "Bison-exception-2.2": [ + "Bison exception 2.2" + ], + "Bootloader-exception": [ + "Bootloader Distribution Exception" + ], + "Classpath-exception-2.0": [ + "Classpath exception 2.0" + ], + "CLISP-exception-2.0": [ + "CLISP exception 2.0" + ], + "DigiRule-FOSS-exception": [ + "DigiRule FOSS License Exception" + ], + "eCos-exception-2.0": [ + "eCos exception 2.0" + ], + "Fawkes-Runtime-exception": [ + "Fawkes Runtime Exception" + ], + "FLTK-exception": [ + "FLTK exception" + ], + "Font-exception-2.0": [ + "Font exception 2.0" + ], + "freertos-exception-2.0": [ + "FreeRTOS Exception 2.0" + ], + "GCC-exception-2.0": [ + "GCC Runtime Library exception 2.0" + ], + "GCC-exception-3.1": [ + "GCC Runtime Library exception 3.1" + ], + "gnu-javamail-exception": [ + "GNU JavaMail exception" + ], + "GPL-3.0-linking-exception": [ + "GPL-3.0 Linking Exception" + ], + "GPL-3.0-linking-source-exception": [ + "GPL-3.0 Linking Exception (with Corresponding Source)" + ], + "GPL-CC-1.0": [ + "GPL Cooperation Commitment 1.0" + ], + "i2p-gpl-java-exception": [ + "i2p GPL+Java Exception" + ], + "Libtool-exception": [ + "Libtool Exception" + ], + "Linux-syscall-note": [ + "Linux Syscall Note" + ], + "LLVM-exception": [ + "LLVM Exception" + ], + "LZMA-exception": [ + "LZMA exception" + ], + "mif-exception": [ + "Macros and Inline Functions Exception" + ], + "Nokia-Qt-exception-1.1": [ + "Nokia Qt LGPL exception 1.1" + ], + "OCaml-LGPL-linking-exception": [ + "OCaml LGPL Linking Exception" + ], + "OCCT-exception-1.0": [ + "Open CASCADE Exception 1.0" + ], + "OpenJDK-assembly-exception-1.0": [ + "OpenJDK Assembly exception 1.0" + ], + "openvpn-openssl-exception": [ + "OpenVPN OpenSSL Exception" + ], + "PS-or-PDF-font-exception-20170817": [ + "PS/PDF font exception (2017-08-17)" + ], + "Qt-GPL-exception-1.0": [ + "Qt GPL exception 1.0" + ], + "Qt-LGPL-exception-1.1": [ + "Qt LGPL exception 1.1" + ], + "Qwt-exception-1.0": [ + "Qwt exception 1.0" + ], + "Swift-exception": [ + "Swift Exception" + ], + "u-boot-exception-2.0": [ + "U-Boot exception 2.0" + ], + "Universal-FOSS-exception-1.0": [ + "Universal FOSS Exception, Version 1.0" + ], + "WxWindows-exception-3.1": [ + "WxWindows Library Exception 3.1" + ] +} \ No newline at end of file diff --git a/vendor/composer/spdx-licenses/res/spdx-licenses.json b/vendor/composer/spdx-licenses/res/spdx-licenses.json new file mode 100644 index 0000000..182bad6 --- /dev/null +++ b/vendor/composer/spdx-licenses/res/spdx-licenses.json @@ -0,0 +1,2047 @@ +{ + "0BSD": [ + "BSD Zero Clause License", + true, + false + ], + "AAL": [ + "Attribution Assurance License", + true, + false + ], + "Abstyles": [ + "Abstyles License", + false, + false + ], + "Adobe-2006": [ + "Adobe Systems Incorporated Source Code License Agreement", + false, + false + ], + "Adobe-Glyph": [ + "Adobe Glyph List License", + false, + false + ], + "ADSL": [ + "Amazon Digital Services License", + false, + false + ], + "AFL-1.1": [ + "Academic Free License v1.1", + true, + false + ], + "AFL-1.2": [ + "Academic Free License v1.2", + true, + false + ], + "AFL-2.0": [ + "Academic Free License v2.0", + true, + false + ], + "AFL-2.1": [ + "Academic Free License v2.1", + true, + false + ], + "AFL-3.0": [ + "Academic Free License v3.0", + true, + false + ], + "Afmparse": [ + "Afmparse License", + false, + false + ], + "AGPL-1.0": [ + "Affero General Public License v1.0", + false, + true + ], + "AGPL-1.0-only": [ + "Affero General Public License v1.0 only", + false, + false + ], + "AGPL-1.0-or-later": [ + "Affero General Public License v1.0 or later", + false, + false + ], + "AGPL-3.0": [ + "GNU Affero General Public License v3.0", + true, + true + ], + "AGPL-3.0-only": [ + "GNU Affero General Public License v3.0 only", + true, + false + ], + "AGPL-3.0-or-later": [ + "GNU Affero General Public License v3.0 or later", + true, + false + ], + "Aladdin": [ + "Aladdin Free Public License", + false, + false + ], + "AMDPLPA": [ + "AMD's plpa_map.c License", + false, + false + ], + "AML": [ + "Apple MIT License", + false, + false + ], + "AMPAS": [ + "Academy of Motion Picture Arts and Sciences BSD", + false, + false + ], + "ANTLR-PD": [ + "ANTLR Software Rights Notice", + false, + false + ], + "Apache-1.0": [ + "Apache License 1.0", + false, + false + ], + "Apache-1.1": [ + "Apache License 1.1", + true, + false + ], + "Apache-2.0": [ + "Apache License 2.0", + true, + false + ], + "APAFML": [ + "Adobe Postscript AFM License", + false, + false + ], + "APL-1.0": [ + "Adaptive Public License 1.0", + true, + false + ], + "APSL-1.0": [ + "Apple Public Source License 1.0", + true, + false + ], + "APSL-1.1": [ + "Apple Public Source License 1.1", + true, + false + ], + "APSL-1.2": [ + "Apple Public Source License 1.2", + true, + false + ], + "APSL-2.0": [ + "Apple Public Source License 2.0", + true, + false + ], + "Artistic-1.0": [ + "Artistic License 1.0", + true, + false + ], + "Artistic-1.0-cl8": [ + "Artistic License 1.0 w/clause 8", + true, + false + ], + "Artistic-1.0-Perl": [ + "Artistic License 1.0 (Perl)", + true, + false + ], + "Artistic-2.0": [ + "Artistic License 2.0", + true, + false + ], + "Bahyph": [ + "Bahyph License", + false, + false + ], + "Barr": [ + "Barr License", + false, + false + ], + "Beerware": [ + "Beerware License", + false, + false + ], + "BitTorrent-1.0": [ + "BitTorrent Open Source License v1.0", + false, + false + ], + "BitTorrent-1.1": [ + "BitTorrent Open Source License v1.1", + false, + false + ], + "blessing": [ + "SQLite Blessing", + false, + false + ], + "BlueOak-1.0.0": [ + "Blue Oak Model License 1.0.0", + false, + false + ], + "Borceux": [ + "Borceux license", + false, + false + ], + "BSD-1-Clause": [ + "BSD 1-Clause License", + false, + false + ], + "BSD-2-Clause": [ + "BSD 2-Clause \"Simplified\" License", + true, + false + ], + "BSD-2-Clause-FreeBSD": [ + "BSD 2-Clause FreeBSD License", + false, + false + ], + "BSD-2-Clause-NetBSD": [ + "BSD 2-Clause NetBSD License", + false, + false + ], + "BSD-2-Clause-Patent": [ + "BSD-2-Clause Plus Patent License", + true, + false + ], + "BSD-3-Clause": [ + "BSD 3-Clause \"New\" or \"Revised\" License", + true, + false + ], + "BSD-3-Clause-Attribution": [ + "BSD with attribution", + false, + false + ], + "BSD-3-Clause-Clear": [ + "BSD 3-Clause Clear License", + false, + false + ], + "BSD-3-Clause-LBNL": [ + "Lawrence Berkeley National Labs BSD variant license", + true, + false + ], + "BSD-3-Clause-No-Nuclear-License": [ + "BSD 3-Clause No Nuclear License", + false, + false + ], + "BSD-3-Clause-No-Nuclear-License-2014": [ + "BSD 3-Clause No Nuclear License 2014", + false, + false + ], + "BSD-3-Clause-No-Nuclear-Warranty": [ + "BSD 3-Clause No Nuclear Warranty", + false, + false + ], + "BSD-3-Clause-Open-MPI": [ + "BSD 3-Clause Open MPI variant", + false, + false + ], + "BSD-4-Clause": [ + "BSD 4-Clause \"Original\" or \"Old\" License", + false, + false + ], + "BSD-4-Clause-UC": [ + "BSD-4-Clause (University of California-Specific)", + false, + false + ], + "BSD-Protection": [ + "BSD Protection License", + false, + false + ], + "BSD-Source-Code": [ + "BSD Source Code Attribution", + false, + false + ], + "BSL-1.0": [ + "Boost Software License 1.0", + true, + false + ], + "bzip2-1.0.5": [ + "bzip2 and libbzip2 License v1.0.5", + false, + false + ], + "bzip2-1.0.6": [ + "bzip2 and libbzip2 License v1.0.6", + false, + false + ], + "Caldera": [ + "Caldera License", + false, + false + ], + "CATOSL-1.1": [ + "Computer Associates Trusted Open Source License 1.1", + true, + false + ], + "CC-BY-1.0": [ + "Creative Commons Attribution 1.0 Generic", + false, + false + ], + "CC-BY-2.0": [ + "Creative Commons Attribution 2.0 Generic", + false, + false + ], + "CC-BY-2.5": [ + "Creative Commons Attribution 2.5 Generic", + false, + false + ], + "CC-BY-3.0": [ + "Creative Commons Attribution 3.0 Unported", + false, + false + ], + "CC-BY-4.0": [ + "Creative Commons Attribution 4.0 International", + false, + false + ], + "CC-BY-NC-1.0": [ + "Creative Commons Attribution Non Commercial 1.0 Generic", + false, + false + ], + "CC-BY-NC-2.0": [ + "Creative Commons Attribution Non Commercial 2.0 Generic", + false, + false + ], + "CC-BY-NC-2.5": [ + "Creative Commons Attribution Non Commercial 2.5 Generic", + false, + false + ], + "CC-BY-NC-3.0": [ + "Creative Commons Attribution Non Commercial 3.0 Unported", + false, + false + ], + "CC-BY-NC-4.0": [ + "Creative Commons Attribution Non Commercial 4.0 International", + false, + false + ], + "CC-BY-NC-ND-1.0": [ + "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + false, + false + ], + "CC-BY-NC-ND-2.0": [ + "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + false, + false + ], + "CC-BY-NC-ND-2.5": [ + "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + false, + false + ], + "CC-BY-NC-ND-3.0": [ + "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + false, + false + ], + "CC-BY-NC-ND-4.0": [ + "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + false, + false + ], + "CC-BY-NC-SA-1.0": [ + "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + false, + false + ], + "CC-BY-NC-SA-2.0": [ + "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + false, + false + ], + "CC-BY-NC-SA-2.5": [ + "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + false, + false + ], + "CC-BY-NC-SA-3.0": [ + "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + false, + false + ], + "CC-BY-NC-SA-4.0": [ + "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + false, + false + ], + "CC-BY-ND-1.0": [ + "Creative Commons Attribution No Derivatives 1.0 Generic", + false, + false + ], + "CC-BY-ND-2.0": [ + "Creative Commons Attribution No Derivatives 2.0 Generic", + false, + false + ], + "CC-BY-ND-2.5": [ + "Creative Commons Attribution No Derivatives 2.5 Generic", + false, + false + ], + "CC-BY-ND-3.0": [ + "Creative Commons Attribution No Derivatives 3.0 Unported", + false, + false + ], + "CC-BY-ND-4.0": [ + "Creative Commons Attribution No Derivatives 4.0 International", + false, + false + ], + "CC-BY-SA-1.0": [ + "Creative Commons Attribution Share Alike 1.0 Generic", + false, + false + ], + "CC-BY-SA-2.0": [ + "Creative Commons Attribution Share Alike 2.0 Generic", + false, + false + ], + "CC-BY-SA-2.5": [ + "Creative Commons Attribution Share Alike 2.5 Generic", + false, + false + ], + "CC-BY-SA-3.0": [ + "Creative Commons Attribution Share Alike 3.0 Unported", + false, + false + ], + "CC-BY-SA-4.0": [ + "Creative Commons Attribution Share Alike 4.0 International", + false, + false + ], + "CC-PDDC": [ + "Creative Commons Public Domain Dedication and Certification", + false, + false + ], + "CC0-1.0": [ + "Creative Commons Zero v1.0 Universal", + false, + false + ], + "CDDL-1.0": [ + "Common Development and Distribution License 1.0", + true, + false + ], + "CDDL-1.1": [ + "Common Development and Distribution License 1.1", + false, + false + ], + "CDLA-Permissive-1.0": [ + "Community Data License Agreement Permissive 1.0", + false, + false + ], + "CDLA-Sharing-1.0": [ + "Community Data License Agreement Sharing 1.0", + false, + false + ], + "CECILL-1.0": [ + "CeCILL Free Software License Agreement v1.0", + false, + false + ], + "CECILL-1.1": [ + "CeCILL Free Software License Agreement v1.1", + false, + false + ], + "CECILL-2.0": [ + "CeCILL Free Software License Agreement v2.0", + false, + false + ], + "CECILL-2.1": [ + "CeCILL Free Software License Agreement v2.1", + true, + false + ], + "CECILL-B": [ + "CeCILL-B Free Software License Agreement", + false, + false + ], + "CECILL-C": [ + "CeCILL-C Free Software License Agreement", + false, + false + ], + "CERN-OHL-1.1": [ + "CERN Open Hardware Licence v1.1", + false, + false + ], + "CERN-OHL-1.2": [ + "CERN Open Hardware Licence v1.2", + false, + false + ], + "ClArtistic": [ + "Clarified Artistic License", + false, + false + ], + "CNRI-Jython": [ + "CNRI Jython License", + false, + false + ], + "CNRI-Python": [ + "CNRI Python License", + true, + false + ], + "CNRI-Python-GPL-Compatible": [ + "CNRI Python Open Source GPL Compatible License Agreement", + false, + false + ], + "Condor-1.1": [ + "Condor Public License v1.1", + false, + false + ], + "copyleft-next-0.3.0": [ + "copyleft-next 0.3.0", + false, + false + ], + "copyleft-next-0.3.1": [ + "copyleft-next 0.3.1", + false, + false + ], + "CPAL-1.0": [ + "Common Public Attribution License 1.0", + true, + false + ], + "CPL-1.0": [ + "Common Public License 1.0", + true, + false + ], + "CPOL-1.02": [ + "Code Project Open License 1.02", + false, + false + ], + "Crossword": [ + "Crossword License", + false, + false + ], + "CrystalStacker": [ + "CrystalStacker License", + false, + false + ], + "CUA-OPL-1.0": [ + "CUA Office Public License v1.0", + true, + false + ], + "Cube": [ + "Cube License", + false, + false + ], + "curl": [ + "curl License", + false, + false + ], + "D-FSL-1.0": [ + "Deutsche Freie Software Lizenz", + false, + false + ], + "diffmark": [ + "diffmark license", + false, + false + ], + "DOC": [ + "DOC License", + false, + false + ], + "Dotseqn": [ + "Dotseqn License", + false, + false + ], + "DSDP": [ + "DSDP License", + false, + false + ], + "dvipdfm": [ + "dvipdfm License", + false, + false + ], + "ECL-1.0": [ + "Educational Community License v1.0", + true, + false + ], + "ECL-2.0": [ + "Educational Community License v2.0", + true, + false + ], + "eCos-2.0": [ + "eCos license version 2.0", + false, + true + ], + "EFL-1.0": [ + "Eiffel Forum License v1.0", + true, + false + ], + "EFL-2.0": [ + "Eiffel Forum License v2.0", + true, + false + ], + "eGenix": [ + "eGenix.com Public License 1.1.0", + false, + false + ], + "Entessa": [ + "Entessa Public License v1.0", + true, + false + ], + "EPL-1.0": [ + "Eclipse Public License 1.0", + true, + false + ], + "EPL-2.0": [ + "Eclipse Public License 2.0", + true, + false + ], + "ErlPL-1.1": [ + "Erlang Public License v1.1", + false, + false + ], + "etalab-2.0": [ + "Etalab Open License 2.0", + false, + false + ], + "EUDatagrid": [ + "EU DataGrid Software License", + true, + false + ], + "EUPL-1.0": [ + "European Union Public License 1.0", + false, + false + ], + "EUPL-1.1": [ + "European Union Public License 1.1", + true, + false + ], + "EUPL-1.2": [ + "European Union Public License 1.2", + true, + false + ], + "Eurosym": [ + "Eurosym License", + false, + false + ], + "Fair": [ + "Fair License", + true, + false + ], + "Frameworx-1.0": [ + "Frameworx Open License 1.0", + true, + false + ], + "FreeImage": [ + "FreeImage Public License v1.0", + false, + false + ], + "FSFAP": [ + "FSF All Permissive License", + false, + false + ], + "FSFUL": [ + "FSF Unlimited License", + false, + false + ], + "FSFULLR": [ + "FSF Unlimited License (with License Retention)", + false, + false + ], + "FTL": [ + "Freetype Project License", + false, + false + ], + "GFDL-1.1": [ + "GNU Free Documentation License v1.1", + false, + true + ], + "GFDL-1.1-only": [ + "GNU Free Documentation License v1.1 only", + false, + false + ], + "GFDL-1.1-or-later": [ + "GNU Free Documentation License v1.1 or later", + false, + false + ], + "GFDL-1.2": [ + "GNU Free Documentation License v1.2", + false, + true + ], + "GFDL-1.2-only": [ + "GNU Free Documentation License v1.2 only", + false, + false + ], + "GFDL-1.2-or-later": [ + "GNU Free Documentation License v1.2 or later", + false, + false + ], + "GFDL-1.3": [ + "GNU Free Documentation License v1.3", + false, + true + ], + "GFDL-1.3-only": [ + "GNU Free Documentation License v1.3 only", + false, + false + ], + "GFDL-1.3-or-later": [ + "GNU Free Documentation License v1.3 or later", + false, + false + ], + "Giftware": [ + "Giftware License", + false, + false + ], + "GL2PS": [ + "GL2PS License", + false, + false + ], + "Glide": [ + "3dfx Glide License", + false, + false + ], + "Glulxe": [ + "Glulxe License", + false, + false + ], + "gnuplot": [ + "gnuplot License", + false, + false + ], + "GPL-1.0": [ + "GNU General Public License v1.0 only", + false, + true + ], + "GPL-1.0+": [ + "GNU General Public License v1.0 or later", + false, + true + ], + "GPL-1.0-only": [ + "GNU General Public License v1.0 only", + false, + false + ], + "GPL-1.0-or-later": [ + "GNU General Public License v1.0 or later", + false, + false + ], + "GPL-2.0": [ + "GNU General Public License v2.0 only", + true, + true + ], + "GPL-2.0+": [ + "GNU General Public License v2.0 or later", + true, + true + ], + "GPL-2.0-only": [ + "GNU General Public License v2.0 only", + true, + false + ], + "GPL-2.0-or-later": [ + "GNU General Public License v2.0 or later", + true, + false + ], + "GPL-2.0-with-autoconf-exception": [ + "GNU General Public License v2.0 w/Autoconf exception", + false, + true + ], + "GPL-2.0-with-bison-exception": [ + "GNU General Public License v2.0 w/Bison exception", + false, + true + ], + "GPL-2.0-with-classpath-exception": [ + "GNU General Public License v2.0 w/Classpath exception", + false, + true + ], + "GPL-2.0-with-font-exception": [ + "GNU General Public License v2.0 w/Font exception", + false, + true + ], + "GPL-2.0-with-GCC-exception": [ + "GNU General Public License v2.0 w/GCC Runtime Library exception", + false, + true + ], + "GPL-3.0": [ + "GNU General Public License v3.0 only", + true, + true + ], + "GPL-3.0+": [ + "GNU General Public License v3.0 or later", + true, + true + ], + "GPL-3.0-only": [ + "GNU General Public License v3.0 only", + true, + false + ], + "GPL-3.0-or-later": [ + "GNU General Public License v3.0 or later", + true, + false + ], + "GPL-3.0-with-autoconf-exception": [ + "GNU General Public License v3.0 w/Autoconf exception", + false, + true + ], + "GPL-3.0-with-GCC-exception": [ + "GNU General Public License v3.0 w/GCC Runtime Library exception", + true, + true + ], + "gSOAP-1.3b": [ + "gSOAP Public License v1.3b", + false, + false + ], + "HaskellReport": [ + "Haskell Language Report License", + false, + false + ], + "HPND": [ + "Historical Permission Notice and Disclaimer", + true, + false + ], + "HPND-sell-variant": [ + "Historical Permission Notice and Disclaimer - sell variant", + false, + false + ], + "IBM-pibs": [ + "IBM PowerPC Initialization and Boot Software", + false, + false + ], + "ICU": [ + "ICU License", + false, + false + ], + "IJG": [ + "Independent JPEG Group License", + false, + false + ], + "ImageMagick": [ + "ImageMagick License", + false, + false + ], + "iMatix": [ + "iMatix Standard Function Library Agreement", + false, + false + ], + "Imlib2": [ + "Imlib2 License", + false, + false + ], + "Info-ZIP": [ + "Info-ZIP License", + false, + false + ], + "Intel": [ + "Intel Open Source License", + true, + false + ], + "Intel-ACPI": [ + "Intel ACPI Software License Agreement", + false, + false + ], + "Interbase-1.0": [ + "Interbase Public License v1.0", + false, + false + ], + "IPA": [ + "IPA Font License", + true, + false + ], + "IPL-1.0": [ + "IBM Public License v1.0", + true, + false + ], + "ISC": [ + "ISC License", + true, + false + ], + "JasPer-2.0": [ + "JasPer License", + false, + false + ], + "JPNIC": [ + "Japan Network Information Center License", + false, + false + ], + "JSON": [ + "JSON License", + false, + false + ], + "LAL-1.2": [ + "Licence Art Libre 1.2", + false, + false + ], + "LAL-1.3": [ + "Licence Art Libre 1.3", + false, + false + ], + "Latex2e": [ + "Latex2e License", + false, + false + ], + "Leptonica": [ + "Leptonica License", + false, + false + ], + "LGPL-2.0": [ + "GNU Library General Public License v2 only", + true, + true + ], + "LGPL-2.0+": [ + "GNU Library General Public License v2 or later", + true, + true + ], + "LGPL-2.0-only": [ + "GNU Library General Public License v2 only", + true, + false + ], + "LGPL-2.0-or-later": [ + "GNU Library General Public License v2 or later", + true, + false + ], + "LGPL-2.1": [ + "GNU Lesser General Public License v2.1 only", + true, + true + ], + "LGPL-2.1+": [ + "GNU Library General Public License v2.1 or later", + true, + true + ], + "LGPL-2.1-only": [ + "GNU Lesser General Public License v2.1 only", + true, + false + ], + "LGPL-2.1-or-later": [ + "GNU Lesser General Public License v2.1 or later", + true, + false + ], + "LGPL-3.0": [ + "GNU Lesser General Public License v3.0 only", + true, + true + ], + "LGPL-3.0+": [ + "GNU Lesser General Public License v3.0 or later", + true, + true + ], + "LGPL-3.0-only": [ + "GNU Lesser General Public License v3.0 only", + true, + false + ], + "LGPL-3.0-or-later": [ + "GNU Lesser General Public License v3.0 or later", + true, + false + ], + "LGPLLR": [ + "Lesser General Public License For Linguistic Resources", + false, + false + ], + "Libpng": [ + "libpng License", + false, + false + ], + "libpng-2.0": [ + "PNG Reference Library version 2", + false, + false + ], + "libselinux-1.0": [ + "libselinux public domain notice", + false, + false + ], + "libtiff": [ + "libtiff License", + false, + false + ], + "LiLiQ-P-1.1": [ + "Licence Libre du Qu\u00e9bec \u2013 Permissive version 1.1", + true, + false + ], + "LiLiQ-R-1.1": [ + "Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 version 1.1", + true, + false + ], + "LiLiQ-Rplus-1.1": [ + "Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 forte version 1.1", + true, + false + ], + "Linux-OpenIB": [ + "Linux Kernel Variant of OpenIB.org license", + false, + false + ], + "LPL-1.0": [ + "Lucent Public License Version 1.0", + true, + false + ], + "LPL-1.02": [ + "Lucent Public License v1.02", + true, + false + ], + "LPPL-1.0": [ + "LaTeX Project Public License v1.0", + false, + false + ], + "LPPL-1.1": [ + "LaTeX Project Public License v1.1", + false, + false + ], + "LPPL-1.2": [ + "LaTeX Project Public License v1.2", + false, + false + ], + "LPPL-1.3a": [ + "LaTeX Project Public License v1.3a", + false, + false + ], + "LPPL-1.3c": [ + "LaTeX Project Public License v1.3c", + true, + false + ], + "MakeIndex": [ + "MakeIndex License", + false, + false + ], + "MirOS": [ + "The MirOS Licence", + true, + false + ], + "MIT": [ + "MIT License", + true, + false + ], + "MIT-0": [ + "MIT No Attribution", + false, + false + ], + "MIT-advertising": [ + "Enlightenment License (e16)", + false, + false + ], + "MIT-CMU": [ + "CMU License", + false, + false + ], + "MIT-enna": [ + "enna License", + false, + false + ], + "MIT-feh": [ + "feh License", + false, + false + ], + "MITNFA": [ + "MIT +no-false-attribs license", + false, + false + ], + "Motosoto": [ + "Motosoto License", + true, + false + ], + "mpich2": [ + "mpich2 License", + false, + false + ], + "MPL-1.0": [ + "Mozilla Public License 1.0", + true, + false + ], + "MPL-1.1": [ + "Mozilla Public License 1.1", + true, + false + ], + "MPL-2.0": [ + "Mozilla Public License 2.0", + true, + false + ], + "MPL-2.0-no-copyleft-exception": [ + "Mozilla Public License 2.0 (no copyleft exception)", + true, + false + ], + "MS-PL": [ + "Microsoft Public License", + true, + false + ], + "MS-RL": [ + "Microsoft Reciprocal License", + true, + false + ], + "MTLL": [ + "Matrix Template Library License", + false, + false + ], + "MulanPSL-1.0": [ + "Mulan Permissive Software License, Version 1", + false, + false + ], + "Multics": [ + "Multics License", + true, + false + ], + "Mup": [ + "Mup License", + false, + false + ], + "NASA-1.3": [ + "NASA Open Source Agreement 1.3", + true, + false + ], + "Naumen": [ + "Naumen Public License", + true, + false + ], + "NBPL-1.0": [ + "Net Boolean Public License v1", + false, + false + ], + "NCSA": [ + "University of Illinois/NCSA Open Source License", + true, + false + ], + "Net-SNMP": [ + "Net-SNMP License", + false, + false + ], + "NetCDF": [ + "NetCDF license", + false, + false + ], + "Newsletr": [ + "Newsletr License", + false, + false + ], + "NGPL": [ + "Nethack General Public License", + true, + false + ], + "NLOD-1.0": [ + "Norwegian Licence for Open Government Data", + false, + false + ], + "NLPL": [ + "No Limit Public License", + false, + false + ], + "Nokia": [ + "Nokia Open Source License", + true, + false + ], + "NOSL": [ + "Netizen Open Source License", + false, + false + ], + "Noweb": [ + "Noweb License", + false, + false + ], + "NPL-1.0": [ + "Netscape Public License v1.0", + false, + false + ], + "NPL-1.1": [ + "Netscape Public License v1.1", + false, + false + ], + "NPOSL-3.0": [ + "Non-Profit Open Software License 3.0", + true, + false + ], + "NRL": [ + "NRL License", + false, + false + ], + "NTP": [ + "NTP License", + true, + false + ], + "NTP-0": [ + "NTP No Attribution", + false, + false + ], + "Nunit": [ + "Nunit License", + false, + true + ], + "OCCT-PL": [ + "Open CASCADE Technology Public License", + false, + false + ], + "OCLC-2.0": [ + "OCLC Research Public License 2.0", + true, + false + ], + "ODbL-1.0": [ + "ODC Open Database License v1.0", + false, + false + ], + "ODC-By-1.0": [ + "Open Data Commons Attribution License v1.0", + false, + false + ], + "OFL-1.0": [ + "SIL Open Font License 1.0", + false, + false + ], + "OFL-1.0-no-RFN": [ + "SIL Open Font License 1.0 with no Reserved Font Name", + false, + false + ], + "OFL-1.0-RFN": [ + "SIL Open Font License 1.0 with Reserved Font Name", + false, + false + ], + "OFL-1.1": [ + "SIL Open Font License 1.1", + true, + false + ], + "OFL-1.1-no-RFN": [ + "SIL Open Font License 1.1 with no Reserved Font Name", + true, + false + ], + "OFL-1.1-RFN": [ + "SIL Open Font License 1.1 with Reserved Font Name", + true, + false + ], + "OGL-Canada-2.0": [ + "Open Government Licence - Canada", + false, + false + ], + "OGL-UK-1.0": [ + "Open Government Licence v1.0", + false, + false + ], + "OGL-UK-2.0": [ + "Open Government Licence v2.0", + false, + false + ], + "OGL-UK-3.0": [ + "Open Government Licence v3.0", + false, + false + ], + "OGTSL": [ + "Open Group Test Suite License", + true, + false + ], + "OLDAP-1.1": [ + "Open LDAP Public License v1.1", + false, + false + ], + "OLDAP-1.2": [ + "Open LDAP Public License v1.2", + false, + false + ], + "OLDAP-1.3": [ + "Open LDAP Public License v1.3", + false, + false + ], + "OLDAP-1.4": [ + "Open LDAP Public License v1.4", + false, + false + ], + "OLDAP-2.0": [ + "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + false, + false + ], + "OLDAP-2.0.1": [ + "Open LDAP Public License v2.0.1", + false, + false + ], + "OLDAP-2.1": [ + "Open LDAP Public License v2.1", + false, + false + ], + "OLDAP-2.2": [ + "Open LDAP Public License v2.2", + false, + false + ], + "OLDAP-2.2.1": [ + "Open LDAP Public License v2.2.1", + false, + false + ], + "OLDAP-2.2.2": [ + "Open LDAP Public License 2.2.2", + false, + false + ], + "OLDAP-2.3": [ + "Open LDAP Public License v2.3", + false, + false + ], + "OLDAP-2.4": [ + "Open LDAP Public License v2.4", + false, + false + ], + "OLDAP-2.5": [ + "Open LDAP Public License v2.5", + false, + false + ], + "OLDAP-2.6": [ + "Open LDAP Public License v2.6", + false, + false + ], + "OLDAP-2.7": [ + "Open LDAP Public License v2.7", + false, + false + ], + "OLDAP-2.8": [ + "Open LDAP Public License v2.8", + false, + false + ], + "OML": [ + "Open Market License", + false, + false + ], + "OpenSSL": [ + "OpenSSL License", + false, + false + ], + "OPL-1.0": [ + "Open Public License v1.0", + false, + false + ], + "OSET-PL-2.1": [ + "OSET Public License version 2.1", + true, + false + ], + "OSL-1.0": [ + "Open Software License 1.0", + true, + false + ], + "OSL-1.1": [ + "Open Software License 1.1", + false, + false + ], + "OSL-2.0": [ + "Open Software License 2.0", + true, + false + ], + "OSL-2.1": [ + "Open Software License 2.1", + true, + false + ], + "OSL-3.0": [ + "Open Software License 3.0", + true, + false + ], + "Parity-6.0.0": [ + "The Parity Public License 6.0.0", + false, + false + ], + "PDDL-1.0": [ + "ODC Public Domain Dedication & License 1.0", + false, + false + ], + "PHP-3.0": [ + "PHP License v3.0", + true, + false + ], + "PHP-3.01": [ + "PHP License v3.01", + false, + false + ], + "Plexus": [ + "Plexus Classworlds License", + false, + false + ], + "PostgreSQL": [ + "PostgreSQL License", + true, + false + ], + "PSF-2.0": [ + "Python Software Foundation License 2.0", + false, + false + ], + "psfrag": [ + "psfrag License", + false, + false + ], + "psutils": [ + "psutils License", + false, + false + ], + "Python-2.0": [ + "Python License 2.0", + true, + false + ], + "Qhull": [ + "Qhull License", + false, + false + ], + "QPL-1.0": [ + "Q Public License 1.0", + true, + false + ], + "Rdisc": [ + "Rdisc License", + false, + false + ], + "RHeCos-1.1": [ + "Red Hat eCos Public License v1.1", + false, + false + ], + "RPL-1.1": [ + "Reciprocal Public License 1.1", + true, + false + ], + "RPL-1.5": [ + "Reciprocal Public License 1.5", + true, + false + ], + "RPSL-1.0": [ + "RealNetworks Public Source License v1.0", + true, + false + ], + "RSA-MD": [ + "RSA Message-Digest License", + false, + false + ], + "RSCPL": [ + "Ricoh Source Code Public License", + true, + false + ], + "Ruby": [ + "Ruby License", + false, + false + ], + "SAX-PD": [ + "Sax Public Domain Notice", + false, + false + ], + "Saxpath": [ + "Saxpath License", + false, + false + ], + "SCEA": [ + "SCEA Shared Source License", + false, + false + ], + "Sendmail": [ + "Sendmail License", + false, + false + ], + "Sendmail-8.23": [ + "Sendmail License 8.23", + false, + false + ], + "SGI-B-1.0": [ + "SGI Free Software License B v1.0", + false, + false + ], + "SGI-B-1.1": [ + "SGI Free Software License B v1.1", + false, + false + ], + "SGI-B-2.0": [ + "SGI Free Software License B v2.0", + false, + false + ], + "SHL-0.5": [ + "Solderpad Hardware License v0.5", + false, + false + ], + "SHL-0.51": [ + "Solderpad Hardware License, Version 0.51", + false, + false + ], + "SimPL-2.0": [ + "Simple Public License 2.0", + true, + false + ], + "SISSL": [ + "Sun Industry Standards Source License v1.1", + true, + false + ], + "SISSL-1.2": [ + "Sun Industry Standards Source License v1.2", + false, + false + ], + "Sleepycat": [ + "Sleepycat License", + true, + false + ], + "SMLNJ": [ + "Standard ML of New Jersey License", + false, + false + ], + "SMPPL": [ + "Secure Messaging Protocol Public License", + false, + false + ], + "SNIA": [ + "SNIA Public License 1.1", + false, + false + ], + "Spencer-86": [ + "Spencer License 86", + false, + false + ], + "Spencer-94": [ + "Spencer License 94", + false, + false + ], + "Spencer-99": [ + "Spencer License 99", + false, + false + ], + "SPL-1.0": [ + "Sun Public License v1.0", + true, + false + ], + "SSH-OpenSSH": [ + "SSH OpenSSH license", + false, + false + ], + "SSH-short": [ + "SSH short notice", + false, + false + ], + "SSPL-1.0": [ + "Server Side Public License, v 1", + false, + false + ], + "StandardML-NJ": [ + "Standard ML of New Jersey License", + false, + true + ], + "SugarCRM-1.1.3": [ + "SugarCRM Public License v1.1.3", + false, + false + ], + "SWL": [ + "Scheme Widget Library (SWL) Software License Agreement", + false, + false + ], + "TAPR-OHL-1.0": [ + "TAPR Open Hardware License v1.0", + false, + false + ], + "TCL": [ + "TCL/TK License", + false, + false + ], + "TCP-wrappers": [ + "TCP Wrappers License", + false, + false + ], + "TMate": [ + "TMate Open Source License", + false, + false + ], + "TORQUE-1.1": [ + "TORQUE v2.5+ Software License v1.1", + false, + false + ], + "TOSL": [ + "Trusster Open Source License", + false, + false + ], + "TU-Berlin-1.0": [ + "Technische Universitaet Berlin License 1.0", + false, + false + ], + "TU-Berlin-2.0": [ + "Technische Universitaet Berlin License 2.0", + false, + false + ], + "UCL-1.0": [ + "Upstream Compatibility License v1.0", + true, + false + ], + "Unicode-DFS-2015": [ + "Unicode License Agreement - Data Files and Software (2015)", + false, + false + ], + "Unicode-DFS-2016": [ + "Unicode License Agreement - Data Files and Software (2016)", + false, + false + ], + "Unicode-TOU": [ + "Unicode Terms of Use", + false, + false + ], + "Unlicense": [ + "The Unlicense", + false, + false + ], + "UPL-1.0": [ + "Universal Permissive License v1.0", + true, + false + ], + "Vim": [ + "Vim License", + false, + false + ], + "VOSTROM": [ + "VOSTROM Public License for Open Source", + false, + false + ], + "VSL-1.0": [ + "Vovida Software License v1.0", + true, + false + ], + "W3C": [ + "W3C Software Notice and License (2002-12-31)", + true, + false + ], + "W3C-19980720": [ + "W3C Software Notice and License (1998-07-20)", + false, + false + ], + "W3C-20150513": [ + "W3C Software Notice and Document License (2015-05-13)", + false, + false + ], + "Watcom-1.0": [ + "Sybase Open Watcom Public License 1.0", + true, + false + ], + "Wsuipa": [ + "Wsuipa License", + false, + false + ], + "WTFPL": [ + "Do What The F*ck You Want To Public License", + false, + false + ], + "wxWindows": [ + "wxWindows Library License", + false, + true + ], + "X11": [ + "X11 License", + false, + false + ], + "Xerox": [ + "Xerox License", + false, + false + ], + "XFree86-1.1": [ + "XFree86 License 1.1", + false, + false + ], + "xinetd": [ + "xinetd License", + false, + false + ], + "Xnet": [ + "X.Net License", + true, + false + ], + "xpp": [ + "XPP License", + false, + false + ], + "XSkat": [ + "XSkat License", + false, + false + ], + "YPL-1.0": [ + "Yahoo! Public License v1.0", + false, + false + ], + "YPL-1.1": [ + "Yahoo! Public License v1.1", + false, + false + ], + "Zed": [ + "Zed License", + false, + false + ], + "Zend-2.0": [ + "Zend License v2.0", + false, + false + ], + "Zimbra-1.3": [ + "Zimbra Public License v1.3", + false, + false + ], + "Zimbra-1.4": [ + "Zimbra Public License v1.4", + false, + false + ], + "Zlib": [ + "zlib License", + true, + false + ], + "zlib-acknowledgement": [ + "zlib/libpng License with Acknowledgement", + false, + false + ], + "ZPL-1.1": [ + "Zope Public License 1.1", + false, + false + ], + "ZPL-2.0": [ + "Zope Public License 2.0", + true, + false + ], + "ZPL-2.1": [ + "Zope Public License 2.1", + false, + false + ] +} \ No newline at end of file diff --git a/vendor/composer/spdx-licenses/src/SpdxLicenses.php b/vendor/composer/spdx-licenses/src/SpdxLicenses.php new file mode 100644 index 0000000..db6f7ef --- /dev/null +++ b/vendor/composer/spdx-licenses/src/SpdxLicenses.php @@ -0,0 +1,343 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\Spdx; + +class SpdxLicenses +{ + /** @var string */ + const LICENSES_FILE = 'spdx-licenses.json'; + + /** @var string */ + const EXCEPTIONS_FILE = 'spdx-exceptions.json'; + + /** + * Contains all the licenses. + * + * The array is indexed by license identifiers, which contain + * a numerically indexed array with license details. + * + * [ lowercased license identifier => + * [ 0 => identifier (string), 1 => full name (string), 2 => osi certified (bool), 3 => deprecated (bool) ] + * , ... + * ] + * + * @var array + */ + private $licenses; + + /** + * @var string + */ + private $licensesExpression; + + /** + * Contains all the license exceptions. + * + * The array is indexed by license exception identifiers, which contain + * a numerically indexed array with license exception details. + * + * [ lowercased exception identifier => + * [ 0 => exception identifier (string), 1 => full name (string) ] + * , ... + * ] + * + * @var array + */ + private $exceptions; + + /** + * @var string + */ + private $exceptionsExpression; + + public function __construct() + { + $this->loadLicenses(); + $this->loadExceptions(); + } + + /** + * Returns license metadata by license identifier. + * + * This function adds a link to the full license text to the license metadata. + * The array returned is in the form of: + * + * [ 0 => full name (string), 1 => osi certified, 2 => link to license text (string), 3 => deprecation status (bool) ] + * + * @param string $identifier + * + * @return array|null + */ + public function getLicenseByIdentifier($identifier) + { + $key = strtolower($identifier); + + if (!isset($this->licenses[$key])) { + return; + } + + list($identifier, $name, $isOsiApproved, $isDeprecatedLicenseId) = $this->licenses[$key]; + + return array( + $name, + $isOsiApproved, + 'https://spdx.org/licenses/' . $identifier . '.html#licenseText', + $isDeprecatedLicenseId, + ); + } + + /** + * Returns all licenses information, keyed by the lowercased license identifier. + * + * @return array[] Each item is [ 0 => identifier (string), 1 => full name (string), 2 => osi certified (bool), 3 => deprecated (bool) ] + */ + public function getLicenses() + { + return $this->licenses; + } + + /** + * Returns license exception metadata by license exception identifier. + * + * This function adds a link to the full license exception text to the license exception metadata. + * The array returned is in the form of: + * + * [ 0 => full name (string), 1 => link to license text (string) ] + * + * @param string $identifier + * + * @return array|null + */ + public function getExceptionByIdentifier($identifier) + { + $key = strtolower($identifier); + + if (!isset($this->exceptions[$key])) { + return; + } + + list($identifier, $name) = $this->exceptions[$key]; + + return array( + $name, + 'https://spdx.org/licenses/' . $identifier . '.html#licenseExceptionText', + ); + } + + /** + * Returns the short identifier of a license (or license exception) by full name. + * + * @param string $name + * + * @return string|null + */ + public function getIdentifierByName($name) + { + foreach ($this->licenses as $licenseData) { + if ($licenseData[1] === $name) { + return $licenseData[0]; + } + } + + foreach ($this->exceptions as $licenseData) { + if ($licenseData[1] === $name) { + return $licenseData[0]; + } + } + } + + /** + * Returns the OSI Approved status for a license by identifier. + * + * @param string $identifier + * + * @return bool + */ + public function isOsiApprovedByIdentifier($identifier) + { + return $this->licenses[strtolower($identifier)][2]; + } + + /** + * Returns the deprecation status for a license by identifier. + * + * @param string $identifier + * + * @return bool + */ + public function isDeprecatedByIdentifier($identifier) + { + return $this->licenses[strtolower($identifier)][3]; + } + + /** + * @param array|string $license + * + * @throws \InvalidArgumentException + * + * @return bool + */ + public function validate($license) + { + if (is_array($license)) { + $count = count($license); + if ($count !== count(array_filter($license, 'is_string'))) { + throw new \InvalidArgumentException('Array of strings expected.'); + } + $license = $count > 1 ? '(' . implode(' OR ', $license) . ')' : (string) reset($license); + } + + if (!is_string($license)) { + throw new \InvalidArgumentException(sprintf( + 'Array or String expected, %s given.', + gettype($license) + )); + } + + return $this->isValidLicenseString($license); + } + + /** + * @return string + */ + public static function getResourcesDir() + { + return dirname(__DIR__) . '/res'; + } + + private function loadLicenses() + { + if (null !== $this->licenses) { + return; + } + + $json = file_get_contents(self::getResourcesDir() . '/' . self::LICENSES_FILE); + $this->licenses = array(); + + foreach (json_decode($json, true) as $identifier => $license) { + $this->licenses[strtolower($identifier)] = array($identifier, $license[0], $license[1], $license[2]); + } + } + + private function loadExceptions() + { + if (null !== $this->exceptions) { + return; + } + + $json = file_get_contents(self::getResourcesDir() . '/' . self::EXCEPTIONS_FILE); + $this->exceptions = array(); + + foreach (json_decode($json, true) as $identifier => $exception) { + $this->exceptions[strtolower($identifier)] = array($identifier, $exception[0]); + } + } + + /** + * @return string + */ + private function getLicensesExpression() + { + if (null === $this->licensesExpression) { + $licenses = array_map('preg_quote', array_keys($this->licenses)); + rsort($licenses); + $licenses = implode('|', $licenses); + $this->licensesExpression = $licenses; + } + + return $this->licensesExpression; + } + + /** + * @return string + */ + private function getExceptionsExpression() + { + if (null === $this->exceptionsExpression) { + $exceptions = array_map('preg_quote', array_keys($this->exceptions)); + rsort($exceptions); + $exceptions = implode('|', $exceptions); + $this->exceptionsExpression = $exceptions; + } + + return $this->exceptionsExpression; + } + + /** + * @param string $license + * + * @throws \RuntimeException + * + * @return bool + */ + private function isValidLicenseString($license) + { + if (isset($this->licenses[strtolower($license)])) { + return true; + } + + $licenses = $this->getLicensesExpression(); + $exceptions = $this->getExceptionsExpression(); + + $regex = <<[\pL\pN.-]{1,}) + + # license-id: taken from list + (?${licenses}) + + # license-exception-id: taken from list + (?${exceptions}) + + # license-ref: [DocumentRef-1*(idstring):]LicenseRef-1*(idstring) + (?(?:DocumentRef-(?&idstring):)?LicenseRef-(?&idstring)) + + # simple-expresssion: license-id / license-id+ / license-ref + (?(?&licenseid)\+? | (?&licenseid) | (?&licenseref)) + + # compound-expression: 1*( + # simple-expression / + # simple-expression WITH license-exception-id / + # compound-expression AND compound-expression / + # compound-expression OR compound-expression + # ) / ( compound-expression ) ) + (? + (?&simple_expression) ( \s+ WITH \s+ (?&licenseexceptionid))? + | \( \s* (?&compound_expression) \s* \) + ) + (? + (?&compound_head) (?: \s+ (?:AND|OR) \s+ (?&compound_expression))? + ) + + # license-expression: 1*1(simple-expression / compound-expression) + (?(?&compound_expression) | (?&simple_expression)) +) # end of define + +^(NONE | NOASSERTION | (?&license_expression))$ +}xi +REGEX; + + $match = preg_match($regex, $license); + + if (0 === $match) { + return false; + } + + if (false === $match) { + throw new \RuntimeException('Regex failed to compile/run.'); + } + + return true; + } +} diff --git a/vendor/composer/xdebug-handler/CHANGELOG.md b/vendor/composer/xdebug-handler/CHANGELOG.md new file mode 100644 index 0000000..7f54539 --- /dev/null +++ b/vendor/composer/xdebug-handler/CHANGELOG.md @@ -0,0 +1,70 @@ +## [Unreleased] + +## [1.4.1] - 2020-03-01 + * Fixed: restart fails if an ini file is empty. + +## [1.4.0] - 2019-11-06 + * Added: support for `NO_COLOR` environment variable: https://no-color.org + * Added: color support for Hyper terminal: https://github.com/zeit/hyper + * Fixed: correct capitalization of Xdebug (apparently). + * Fixed: improved handling for uopz extension. + +## [1.3.3] - 2019-05-27 + * Fixed: add environment changes to `$_ENV` if it is being used. + +## [1.3.2] - 2019-01-28 + * Fixed: exit call being blocked by uopz extension, resulting in application code running twice. + +## [1.3.1] - 2018-11-29 + * Fixed: fail restart if `passthru` has been disabled in `disable_functions`. + * Fixed: fail restart if an ini file cannot be opened, otherwise settings will be missing. + +## [1.3.0] - 2018-08-31 + * Added: `setPersistent` method to use environment variables for the restart. + * Fixed: improved debugging by writing output to stderr. + * Fixed: no restart when `php_ini_scanned_files` is not functional and is needed. + +## [1.2.1] - 2018-08-23 + * Fixed: fatal error with apc, when using `apc.mmap_file_mask`. + +## [1.2.0] - 2018-08-16 + * Added: debug information using `XDEBUG_HANDLER_DEBUG`. + * Added: fluent interface for setters. + * Added: `PhpConfig` helper class for calling PHP sub-processes. + * Added: `PHPRC` original value to restart stettings, for use in a restarted process. + * Changed: internal procedure to disable ini-scanning, using `-n` command-line option. + * Fixed: replaced `escapeshellarg` usage to avoid locale problems. + * Fixed: improved color-option handling to respect double-dash delimiter. + * Fixed: color-option handling regression from main script changes. + * Fixed: improved handling when checking main script. + * Fixed: handling for standard input, that never actually did anything. + * Fixed: fatal error when ctype extension is not available. + +## [1.1.0] - 2018-04-11 + * Added: `getRestartSettings` method for calling PHP processes in a restarted process. + * Added: API definition and @internal class annotations. + * Added: protected `requiresRestart` method for extending classes. + * Added: `setMainScript` method for applications that change the working directory. + * Changed: private `tmpIni` variable to protected for extending classes. + * Fixed: environment variables not available in $_SERVER when restored in the restart. + * Fixed: relative path problems caused by Phar::interceptFileFuncs. + * Fixed: incorrect handling when script file cannot be found. + +## [1.0.0] - 2018-03-08 + * Added: PSR3 logging for optional status output. + * Added: existing ini settings are merged to catch command-line overrides. + * Added: code, tests and other artefacts to decouple from Composer. + * Break: the following class was renamed: + - `Composer\XdebugHandler` -> `Composer\XdebugHandler\XdebugHandler` + +[Unreleased]: https://github.com/composer/xdebug-handler/compare/1.4.1...HEAD +[1.4.1]: https://github.com/composer/xdebug-handler/compare/1.4.0...1.4.1 +[1.4.0]: https://github.com/composer/xdebug-handler/compare/1.3.3...1.4.0 +[1.3.3]: https://github.com/composer/xdebug-handler/compare/1.3.2...1.3.3 +[1.3.2]: https://github.com/composer/xdebug-handler/compare/1.3.1...1.3.2 +[1.3.1]: https://github.com/composer/xdebug-handler/compare/1.3.0...1.3.1 +[1.3.0]: https://github.com/composer/xdebug-handler/compare/1.2.1...1.3.0 +[1.2.1]: https://github.com/composer/xdebug-handler/compare/1.2.0...1.2.1 +[1.2.0]: https://github.com/composer/xdebug-handler/compare/1.1.0...1.2.0 +[1.1.0]: https://github.com/composer/xdebug-handler/compare/1.0.0...1.1.0 +[1.0.0]: https://github.com/composer/xdebug-handler/compare/d66f0d15cb57...1.0.0 diff --git a/vendor/composer/xdebug-handler/LICENSE b/vendor/composer/xdebug-handler/LICENSE new file mode 100644 index 0000000..963618a --- /dev/null +++ b/vendor/composer/xdebug-handler/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Composer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/composer/xdebug-handler/README.md b/vendor/composer/xdebug-handler/README.md new file mode 100644 index 0000000..43d38d9 --- /dev/null +++ b/vendor/composer/xdebug-handler/README.md @@ -0,0 +1,288 @@ +# composer/xdebug-handler + +[![packagist](https://img.shields.io/packagist/v/composer/xdebug-handler.svg)](https://packagist.org/packages/composer/xdebug-handler) +[![linux build](https://img.shields.io/travis/composer/xdebug-handler/master.svg?label=linux+build)](https://travis-ci.org/composer/xdebug-handler) +[![windows build](https://img.shields.io/appveyor/ci/Seldaek/xdebug-handler/master.svg?label=windows+build)](https://ci.appveyor.com/project/Seldaek/xdebug-handler) +![license](https://img.shields.io/github/license/composer/xdebug-handler.svg) +![php](https://img.shields.io/packagist/php-v/composer/xdebug-handler.svg?colorB=8892BF&label=php) + +Restart a CLI process without loading the Xdebug extension. + +Originally written as part of [composer/composer](https://github.com/composer/composer), +now extracted and made available as a stand-alone library. + +## Installation + +Install the latest version with: + +```bash +$ composer require composer/xdebug-handler +``` + +## Requirements + +* PHP 5.3.2 minimum, although functionality is disabled below PHP 5.4.0. Using the latest PHP version is highly recommended. + +## Basic Usage +```php +use Composer\XdebugHandler\XdebugHandler; + +$xdebug = new XdebugHandler('myapp'); +$xdebug->check(); +unset($xdebug); +``` + +The constructor takes two parameters: + +#### _$envPrefix_ +This is used to create distinct environment variables and is upper-cased and prepended to default base values. The above example enables the use of: + +- `MYAPP_ALLOW_XDEBUG=1` to override automatic restart and allow Xdebug +- `MYAPP_ORIGINAL_INIS` to obtain ini file locations in a restarted process + +#### _$colorOption_ +This optional value is added to the restart command-line and is needed to force color output in a piped child process. Only long-options are supported, for example `--ansi` or `--colors=always` etc. + +If the original command-line contains an argument that pattern matches this value (for example `--no-ansi`, `--colors=never`) then _$colorOption_ is ignored. + +If the pattern match ends with `=auto` (for example `--colors=auto`), the argument is replaced by _$colorOption_. Otherwise it is added at either the end of the command-line, or preceding the first double-dash `--` delimiter. + +## Advanced Usage + +* [How it works](#how-it-works) +* [Limitations](#limitations) +* [Helper methods](#helper-methods) +* [Setter methods](#setter-methods) +* [Process configuration](#process-configuration) +* [Troubleshooting](#troubleshooting) +* [Extending the library](#extending-the-library) + +### How it works + +A temporary ini file is created from the loaded (and scanned) ini files, with any references to the Xdebug extension commented out. Current ini settings are merged, so that most ini settings made on the command-line or by the application are included (see [Limitations](#limitations)) + +* `MYAPP_ALLOW_XDEBUG` is set with internal data to flag and use in the restart. +* The command-line and environment are [configured](#process-configuration) for the restart. +* The application is restarted in a new process using `passthru`. + * The restart settings are stored in the environment. + * `MYAPP_ALLOW_XDEBUG` is unset. + * The application runs and exits. +* The main process exits with the exit code from the restarted process. + +### Limitations +There are a few things to be aware of when running inside a restarted process. + +* Extensions set on the command-line will not be loaded. +* Ini file locations will be reported as per the restart - see [getAllIniFiles()](#getallinifiles). +* Php sub-processes may be loaded with Xdebug enabled - see [Process configuration](#process-configuration). + +### Helper methods +These static methods provide information from the current process, regardless of whether it has been restarted or not. + +#### _getAllIniFiles()_ +Returns an array of the original ini file locations. Use this instead of calling `php_ini_loaded_file` and `php_ini_scanned_files`, which will report the wrong values in a restarted process. + +```php +use Composer\XdebugHandler\XdebugHandler; + +$files = XdebugHandler::getAllIniFiles(); + +# $files[0] always exists, it could be an empty string +$loadedIni = array_shift($files); +$scannedInis = $files; +``` + +These locations are also available in the `MYAPP_ORIGINAL_INIS` environment variable. This is a path-separated string comprising the location returned from `php_ini_loaded_file`, which could be empty, followed by locations parsed from calling `php_ini_scanned_files`. + +#### _getRestartSettings()_ +Returns an array of settings that can be used with PHP [sub-processes](#sub-processes), or null if the process was not restarted. + +```php +use Composer\XdebugHandler\XdebugHandler; + +$settings = XdebugHandler::getRestartSettings(); +/** + * $settings: array (if the current process was restarted, + * or called with the settings from a previous restart), or null + * + * 'tmpIni' => the temporary ini file used in the restart (string) + * 'scannedInis' => if there were any scanned inis (bool) + * 'scanDir' => the original PHP_INI_SCAN_DIR value (false|string) + * 'phprc' => the original PHPRC value (false|string) + * 'inis' => the original inis from getAllIniFiles (array) + * 'skipped' => the skipped version from getSkippedVersion (string) + */ +``` + +#### _getSkippedVersion()_ +Returns the Xdebug version string that was skipped by the restart, or an empty value if there was no restart (or Xdebug is still loaded, perhaps by an extending class restarting for a reason other than removing Xdebug). + +```php +use Composer\XdebugHandler\XdebugHandler; + +$version = XdebugHandler::getSkippedVersion(); +# $version: '2.6.0' (for example), or an empty string +``` + +### Setter methods +These methods implement a fluent interface and must be called before the main `check()` method. + +#### _setLogger($logger)_ +Enables the output of status messages to an external PSR3 logger. All messages are reported with either `DEBUG` or `WARNING` log levels. For example (showing the level and message): + +``` +// Restart overridden +DEBUG Checking MYAPP_ALLOW_XDEBUG +DEBUG The Xdebug extension is loaded (2.5.0) +DEBUG No restart (MYAPP_ALLOW_XDEBUG=1) + +// Failed restart +DEBUG Checking MYAPP_ALLOW_XDEBUG +DEBUG The Xdebug extension is loaded (2.5.0) +WARNING No restart (Unable to create temp ini file at: ...) +``` + +Status messages can also be output with `XDEBUG_HANDLER_DEBUG`. See [Troubleshooting](#troubleshooting). + +#### _setMainScript($script)_ +Sets the location of the main script to run in the restart. This is only needed in more esoteric use-cases, or if the `argv[0]` location is inaccessible. The script name `--` is supported for standard input. + +#### _setPersistent()_ +Configures the restart using [persistent settings](#persistent-settings), so that Xdebug is not loaded in any sub-process. + +Use this method if your application invokes one or more PHP sub-process and the Xdebug extension is not needed. This avoids the overhead of implementing specific [sub-process](#sub-processes) strategies. + +Alternatively, this method can be used to set up a default _Xdebug-free_ environment which can be changed if a sub-process requires Xdebug, then restored afterwards: + +```php +function SubProcessWithXdebug() +{ + $phpConfig = new Composer\XdebugHandler\PhpConfig(); + + # Set the environment to the original configuration + $phpConfig->useOriginal(); + + # run the process with Xdebug loaded + ... + + # Restore Xdebug-free environment + $phpConfig->usePersistent(); +} +``` + +### Process configuration +The library offers two strategies to invoke a new PHP process without loading Xdebug, using either _standard_ or _persistent_ settings. Note that this is only important if the application calls a PHP sub-process. + +#### Standard settings +Uses command-line options to remove Xdebug from the new process only. + +* The -n option is added to the command-line. This tells PHP not to scan for additional inis. +* The temporary ini is added to the command-line with the -c option. + +>_If the new process calls a PHP sub-process, Xdebug will be loaded in that sub-process (unless it implements xdebug-handler, in which case there will be another restart)._ + +This is the default strategy used in the restart. + +#### Persistent settings +Uses environment variables to remove Xdebug from the new process and persist these settings to any sub-process. + +* `PHP_INI_SCAN_DIR` is set to an empty string. This tells PHP not to scan for additional inis. +* `PHPRC` is set to the temporary ini. + +>_If the new process calls a PHP sub-process, Xdebug will not be loaded in that sub-process._ + +This strategy can be used in the restart by calling [setPersistent()](#setpersistent). + +#### Sub-processes +The `PhpConfig` helper class makes it easy to invoke a PHP sub-process (with or without Xdebug loaded), regardless of whether there has been a restart. + +Each of its methods returns an array of PHP options (to add to the command-line) and sets up the environment for the required strategy. The [getRestartSettings()](#getrestartsettings) method is used internally. + +* `useOriginal()` - Xdebug will be loaded in the new process. +* `useStandard()` - Xdebug will **not** be loaded in the new process - see [standard settings](#standard-settings). +* `userPersistent()` - Xdebug will **not** be loaded in the new process - see [persistent settings](#persistent-settings) + +If there was no restart, an empty options array is returned and the environment is not changed. + +```php +use Composer\XdebugHandler\PhpConfig; + +$config = new PhpConfig; + +$options = $config->useOriginal(); +# $options: empty array +# environment: PHPRC and PHP_INI_SCAN_DIR set to original values + +$options = $config->useStandard(); +# $options: [-n, -c, tmpIni] +# environment: PHPRC and PHP_INI_SCAN_DIR set to original values + +$options = $config->usePersistent(); +# $options: empty array +# environment: PHPRC=tmpIni, PHP_INI_SCAN_DIR='' +``` + +### Troubleshooting +The following environment settings can be used to troubleshoot unexpected behavior: + +* `XDEBUG_HANDLER_DEBUG=1` Outputs status messages to `STDERR`, if it is defined, irrespective of any PSR3 logger. Each message is prefixed `xdebug-handler[pid]`, where pid is the process identifier. + +* `XDEBUG_HANDLER_DEBUG=2` As above, but additionally saves the temporary ini file and reports its location in a status message. + +### Extending the library +The API is defined by classes and their accessible elements that are not annotated as @internal. The main class has two protected methods that can be overridden to provide additional functionality: + +#### _requiresRestart($isLoaded)_ +By default the process will restart if Xdebug is loaded. Extending this method allows an application to decide, by returning a boolean (or equivalent) value. It is only called if `MYAPP_ALLOW_XDEBUG` is empty, so it will not be called in the restarted process (where this variable contains internal data), or if the restart has been overridden. + +Note that the [setMainScript()](#setmainscriptscript) and [setPersistent()](#setpersistent) setters can be used here, if required. + +#### _restart($command)_ +An application can extend this to modify the temporary ini file, its location given in the `tmpIni` property. New settings can be safely appended to the end of the data, which is `PHP_EOL` terminated. + +Note that the `$command` parameter is the escaped command-line string that will be used for the new process and must be treated accordingly. + +Remember to finish with `parent::restart($command)`. + +#### Example +This example demonstrates two ways to extend basic functionality: + +* To avoid the overhead of spinning up a new process, the restart is skipped if a simple help command is requested. + +* The application needs write-access to phar files, so it will force a restart if `phar.readonly` is set (regardless of whether Xdebug is loaded) and change this value in the temporary ini file. + +```php +use Composer\XdebugHandler\XdebugHandler; +use MyApp\Command; + +class MyRestarter extends XdebugHandler +{ + private $required; + + protected function requiresRestart($isLoaded) + { + if (Command::isHelp()) { + # No need to disable Xdebug for this + return false; + } + + $this->required = (bool) ini_get('phar.readonly'); + return $isLoaded || $this->required; + } + + protected function restart($command) + { + if ($this->required) { + # Add required ini setting to tmpIni + $content = file_get_contents($this->tmpIni); + $content .= 'phar.readonly=0'.PHP_EOL; + file_put_contents($this->tmpIni, $content); + } + + parent::restart($command); + } +} +``` + +## License +composer/xdebug-handler is licensed under the MIT License, see the LICENSE file for details. diff --git a/vendor/composer/xdebug-handler/composer.json b/vendor/composer/xdebug-handler/composer.json new file mode 100644 index 0000000..ea40a2f --- /dev/null +++ b/vendor/composer/xdebug-handler/composer.json @@ -0,0 +1,40 @@ +{ + "name": "composer/xdebug-handler", + "description": "Restarts a process without Xdebug.", + "type": "library", + "license": "MIT", + "keywords": [ + "xdebug", + "performance" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Composer\\XdebugHandler\\": "tests" + } + }, + "scripts": { + "test": "phpunit" + } +} diff --git a/vendor/composer/xdebug-handler/src/PhpConfig.php b/vendor/composer/xdebug-handler/src/PhpConfig.php new file mode 100644 index 0000000..5535eca --- /dev/null +++ b/vendor/composer/xdebug-handler/src/PhpConfig.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\XdebugHandler; + +/** + * @author John Stevenson + */ +class PhpConfig +{ + /** + * Use the original PHP configuration + * + * @return array PHP cli options + */ + public function useOriginal() + { + $this->getDataAndReset(); + return array(); + } + + /** + * Use standard restart settings + * + * @return array PHP cli options + */ + public function useStandard() + { + if ($data = $this->getDataAndReset()) { + return array('-n', '-c', $data['tmpIni']); + } + + return array(); + } + + /** + * Use environment variables to persist settings + * + * @return array PHP cli options + */ + public function usePersistent() + { + if ($data = $this->getDataAndReset()) { + Process::setEnv('PHPRC', $data['tmpIni']); + Process::setEnv('PHP_INI_SCAN_DIR', ''); + } + + return array(); + } + + /** + * Returns restart data if available and resets the environment + * + * @return array|null + */ + private function getDataAndReset() + { + if ($data = XdebugHandler::getRestartSettings()) { + Process::setEnv('PHPRC', $data['phprc']); + Process::setEnv('PHP_INI_SCAN_DIR', $data['scanDir']); + } + + return $data; + } +} diff --git a/vendor/composer/xdebug-handler/src/Process.php b/vendor/composer/xdebug-handler/src/Process.php new file mode 100644 index 0000000..eb2ad2b --- /dev/null +++ b/vendor/composer/xdebug-handler/src/Process.php @@ -0,0 +1,181 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\XdebugHandler; + +/** + * Provides utility functions to prepare a child process command-line and set + * environment variables in that process. + * + * @author John Stevenson + * @internal + */ +class Process +{ + /** + * Returns an array of parameters, including a color option if required + * + * A color option is needed because child process output is piped. + * + * @param array $args The script parameters + * @param string $colorOption The long option to force color output + * + * @return array + */ + public static function addColorOption(array $args, $colorOption) + { + if (!$colorOption + || in_array($colorOption, $args) + || !preg_match('/^--([a-z]+$)|(^--[a-z]+=)/', $colorOption, $matches)) { + return $args; + } + + if (isset($matches[2])) { + // Handle --color(s)= options + if (false !== ($index = array_search($matches[2].'auto', $args))) { + $args[$index] = $colorOption; + return $args; + } elseif (preg_grep('/^'.$matches[2].'/', $args)) { + return $args; + } + } elseif (in_array('--no-'.$matches[1], $args)) { + return $args; + } + + // Check for NO_COLOR variable (https://no-color.org/) + if (false !== getenv('NO_COLOR')) { + return $args; + } + + if (false !== ($index = array_search('--', $args))) { + // Position option before double-dash delimiter + array_splice($args, $index, 0, $colorOption); + } else { + $args[] = $colorOption; + } + + return $args; + } + + /** + * Escapes a string to be used as a shell argument. + * + * From https://github.com/johnstevenson/winbox-args + * MIT Licensed (c) John Stevenson + * + * @param string $arg The argument to be escaped + * @param bool $meta Additionally escape cmd.exe meta characters + * @param bool $module The argument is the module to invoke + * + * @return string The escaped argument + */ + public static function escape($arg, $meta = true, $module = false) + { + if (!defined('PHP_WINDOWS_VERSION_BUILD')) { + return "'".str_replace("'", "'\\''", $arg)."'"; + } + + $quote = strpbrk($arg, " \t") !== false || $arg === ''; + + $arg = preg_replace('/(\\\\*)"/', '$1$1\\"', $arg, -1, $dquotes); + + if ($meta) { + $meta = $dquotes || preg_match('/%[^%]+%/', $arg); + + if (!$meta) { + $quote = $quote || strpbrk($arg, '^&|<>()') !== false; + } elseif ($module && !$dquotes && $quote) { + $meta = false; + } + } + + if ($quote) { + $arg = '"'.preg_replace('/(\\\\*)$/', '$1$1', $arg).'"'; + } + + if ($meta) { + $arg = preg_replace('/(["^&|<>()%])/', '^$1', $arg); + } + + return $arg; + } + + /** + * Returns true if the output stream supports colors + * + * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo + * terminals via named pipes, so we can only check the environment. + * + * @param mixed $output A valid CLI output stream + * + * @return bool + */ + public static function supportsColor($output) + { + if ('Hyper' === getenv('TERM_PROGRAM')) { + return true; + } + + if (defined('PHP_WINDOWS_VERSION_BUILD')) { + return (function_exists('sapi_windows_vt100_support') + && sapi_windows_vt100_support($output)) + || false !== getenv('ANSICON') + || 'ON' === getenv('ConEmuANSI') + || 'xterm' === getenv('TERM'); + } + + if (function_exists('stream_isatty')) { + return stream_isatty($output); + } + + if (function_exists('posix_isatty')) { + return posix_isatty($output); + } + + $stat = fstat($output); + // Check if formatted mode is S_IFCHR + return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; + } + + /** + * Makes putenv environment changes available in $_SERVER and $_ENV + * + * @param string $name + * @param string|false $value A false value unsets the variable + * + * @return bool Whether the environment variable was set + */ + public static function setEnv($name, $value = false) + { + $unset = false === $value; + + if (!putenv($unset ? $name : $name.'='.$value)) { + return false; + } + + if ($unset) { + unset($_SERVER[$name]); + } else { + $_SERVER[$name] = $value; + } + + // Update $_ENV if it is being used + if (false !== stripos((string) ini_get('variables_order'), 'E')) { + if ($unset) { + unset($_ENV[$name]); + } else { + $_ENV[$name] = $value; + } + } + + return true; + } +} diff --git a/vendor/composer/xdebug-handler/src/Status.php b/vendor/composer/xdebug-handler/src/Status.php new file mode 100644 index 0000000..e714b1c --- /dev/null +++ b/vendor/composer/xdebug-handler/src/Status.php @@ -0,0 +1,163 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\XdebugHandler; + +use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; + +/** + * @author John Stevenson + * @internal + */ +class Status +{ + const ENV_RESTART = 'XDEBUG_HANDLER_RESTART'; + const CHECK = 'Check'; + const ERROR = 'Error'; + const INFO = 'Info'; + const NORESTART = 'NoRestart'; + const RESTART = 'Restart'; + const RESTARTING = 'Restarting'; + const RESTARTED = 'Restarted'; + + private $debug; + private $envAllowXdebug; + private $loaded; + private $logger; + private $time; + + /** + * Constructor + * + * @param string $envAllowXdebug Prefixed _ALLOW_XDEBUG name + * @param bool $debug Whether debug output is required + */ + public function __construct($envAllowXdebug, $debug) + { + $start = getenv(self::ENV_RESTART); + Process::setEnv(self::ENV_RESTART); + $this->time = $start ? round((microtime(true) - $start) * 1000) : 0; + + $this->envAllowXdebug = $envAllowXdebug; + $this->debug = $debug && defined('STDERR'); + } + + /** + * @param LoggerInterface $logger + */ + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } + + /** + * Calls a handler method to report a message + * + * @param string $op The handler constant + * @param null|string $data Data required by the handler + */ + public function report($op, $data) + { + if ($this->logger || $this->debug) { + call_user_func(array($this, 'report'.$op), $data); + } + } + + /** + * Outputs a status message + * + * @param string $text + * @param string $level + */ + private function output($text, $level = null) + { + if ($this->logger) { + $this->logger->log($level ?: LogLevel::DEBUG, $text); + } + + if ($this->debug) { + fwrite(STDERR, sprintf('xdebug-handler[%d] %s', getmypid(), $text.PHP_EOL)); + } + } + + private function reportCheck($loaded) + { + $this->loaded = $loaded; + $this->output('Checking '.$this->envAllowXdebug); + } + + private function reportError($error) + { + $this->output(sprintf('No restart (%s)', $error), LogLevel::WARNING); + } + + private function reportInfo($info) + { + $this->output($info); + } + + private function reportNoRestart() + { + $this->output($this->getLoadedMessage()); + + if ($this->loaded) { + $text = sprintf('No restart (%s)', $this->getEnvAllow()); + if (!getenv($this->envAllowXdebug)) { + $text .= ' Allowed by application'; + } + $this->output($text); + } + } + + private function reportRestart() + { + $this->output($this->getLoadedMessage()); + Process::setEnv(self::ENV_RESTART, (string) microtime(true)); + } + + private function reportRestarted() + { + $loaded = $this->getLoadedMessage(); + $text = sprintf('Restarted (%d ms). %s', $this->time, $loaded); + $level = $this->loaded ? LogLevel::WARNING : null; + $this->output($text, $level); + } + + private function reportRestarting($command) + { + $text = sprintf('Process restarting (%s)', $this->getEnvAllow()); + $this->output($text); + $text = 'Running '.$command; + $this->output($text); + } + + /** + * Returns the _ALLOW_XDEBUG environment variable as name=value + * + * @return string + */ + private function getEnvAllow() + { + return $this->envAllowXdebug.'='.getenv($this->envAllowXdebug); + } + + /** + * Returns the Xdebug status and version + * + * @return string + */ + private function getLoadedMessage() + { + $loaded = $this->loaded ? sprintf('loaded (%s)', $this->loaded) : 'not loaded'; + return 'The Xdebug extension is '.$loaded; + } +} diff --git a/vendor/composer/xdebug-handler/src/XdebugHandler.php b/vendor/composer/xdebug-handler/src/XdebugHandler.php new file mode 100644 index 0000000..3d48447 --- /dev/null +++ b/vendor/composer/xdebug-handler/src/XdebugHandler.php @@ -0,0 +1,565 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\XdebugHandler; + +use Psr\Log\LoggerInterface; + +/** + * @author John Stevenson + */ +class XdebugHandler +{ + const SUFFIX_ALLOW = '_ALLOW_XDEBUG'; + const SUFFIX_INIS = '_ORIGINAL_INIS'; + const RESTART_ID = 'internal'; + const RESTART_SETTINGS = 'XDEBUG_HANDLER_SETTINGS'; + const DEBUG = 'XDEBUG_HANDLER_DEBUG'; + + /** @var string|null */ + protected $tmpIni; + + private static $inRestart; + private static $name; + private static $skipped; + + private $cli; + private $colorOption; + private $debug; + private $envAllowXdebug; + private $envOriginalInis; + private $loaded; + private $persistent; + private $script; + /** @var Status|null */ + private $statusWriter; + + /** + * Constructor + * + * The $envPrefix is used to create distinct environment variables. It is + * uppercased and prepended to the default base values. For example 'myapp' + * would result in MYAPP_ALLOW_XDEBUG and MYAPP_ORIGINAL_INIS. + * + * @param string $envPrefix Value used in environment variables + * @param string $colorOption Command-line long option to force color output + * @throws \RuntimeException If a parameter is invalid + */ + public function __construct($envPrefix, $colorOption = '') + { + if (!is_string($envPrefix) || empty($envPrefix) || !is_string($colorOption)) { + throw new \RuntimeException('Invalid constructor parameter'); + } + + self::$name = strtoupper($envPrefix); + $this->envAllowXdebug = self::$name.self::SUFFIX_ALLOW; + $this->envOriginalInis = self::$name.self::SUFFIX_INIS; + + $this->colorOption = $colorOption; + + if (extension_loaded('xdebug')) { + $ext = new \ReflectionExtension('xdebug'); + $this->loaded = $ext->getVersion() ?: 'unknown'; + } + + if ($this->cli = PHP_SAPI === 'cli') { + $this->debug = getenv(self::DEBUG); + } + + $this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug); + } + + /** + * Activates status message output to a PSR3 logger + * + * @param LoggerInterface $logger + * + * @return $this + */ + public function setLogger(LoggerInterface $logger) + { + $this->statusWriter->setLogger($logger); + return $this; + } + + /** + * Sets the main script location if it cannot be called from argv + * + * @param string $script + * + * @return $this + */ + public function setMainScript($script) + { + $this->script = $script; + return $this; + } + + /** + * Persist the settings to keep Xdebug out of sub-processes + * + * @return $this + */ + public function setPersistent() + { + $this->persistent = true; + return $this; + } + + /** + * Checks if Xdebug is loaded and the process needs to be restarted + * + * This behaviour can be disabled by setting the MYAPP_ALLOW_XDEBUG + * environment variable to 1. This variable is used internally so that + * the restarted process is created only once. + */ + public function check() + { + $this->notify(Status::CHECK, $this->loaded); + $envArgs = explode('|', (string) getenv($this->envAllowXdebug)); + + if (empty($envArgs[0]) && $this->requiresRestart((bool) $this->loaded)) { + // Restart required + $this->notify(Status::RESTART); + + if ($this->prepareRestart()) { + $command = $this->getCommand(); + $this->notify(Status::RESTARTING, $command); + $this->restart($command); + } + return; + } + + if (self::RESTART_ID === $envArgs[0] && count($envArgs) === 5) { + // Restarting, so unset environment variable and use saved values + $this->notify(Status::RESTARTED); + + Process::setEnv($this->envAllowXdebug); + self::$inRestart = true; + + if (!$this->loaded) { + // Skipped version is only set if Xdebug is not loaded + self::$skipped = $envArgs[1]; + } + + // Put restart settings in the environment + $this->setEnvRestartSettings($envArgs); + return; + } + + $this->notify(Status::NORESTART); + + if ($settings = self::getRestartSettings()) { + // Called with existing settings, so sync our settings + $this->syncSettings($settings); + } + } + + /** + * Returns an array of php.ini locations with at least one entry + * + * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files. + * The loaded ini location is the first entry and may be empty. + * + * @return array + */ + public static function getAllIniFiles() + { + if (!empty(self::$name)) { + $env = getenv(self::$name.self::SUFFIX_INIS); + + if (false !== $env) { + return explode(PATH_SEPARATOR, $env); + } + } + + $paths = array((string) php_ini_loaded_file()); + + if ($scanned = php_ini_scanned_files()) { + $paths = array_merge($paths, array_map('trim', explode(',', $scanned))); + } + + return $paths; + } + + /** + * Returns an array of restart settings or null + * + * Settings will be available if the current process was restarted, or + * called with the settings from an existing restart. + * + * @return array|null + */ + public static function getRestartSettings() + { + $envArgs = explode('|', (string) getenv(self::RESTART_SETTINGS)); + + if (count($envArgs) !== 6 + || (!self::$inRestart && php_ini_loaded_file() !== $envArgs[0])) { + return; + } + + return array( + 'tmpIni' => $envArgs[0], + 'scannedInis' => (bool) $envArgs[1], + 'scanDir' => '*' === $envArgs[2] ? false : $envArgs[2], + 'phprc' => '*' === $envArgs[3] ? false : $envArgs[3], + 'inis' => explode(PATH_SEPARATOR, $envArgs[4]), + 'skipped' => $envArgs[5], + ); + } + + /** + * Returns the Xdebug version that triggered a successful restart + * + * @return string + */ + public static function getSkippedVersion() + { + return (string) self::$skipped; + } + + /** + * Returns true if Xdebug is loaded, or as directed by an extending class + * + * @param bool $isLoaded Whether Xdebug is loaded + * + * @return bool + */ + protected function requiresRestart($isLoaded) + { + return $isLoaded; + } + + /** + * Allows an extending class to access the tmpIni + * + * @param string $command + */ + protected function restart($command) + { + $this->doRestart($command); + } + + /** + * Executes the restarted command then deletes the tmp ini + * + * @param string $command + */ + private function doRestart($command) + { + passthru($command, $exitCode); + $this->notify(Status::INFO, 'Restarted process exited '.$exitCode); + + if ($this->debug === '2') { + $this->notify(Status::INFO, 'Temp ini saved: '.$this->tmpIni); + } else { + @unlink($this->tmpIni); + } + + exit($exitCode); + } + + /** + * Returns true if everything was written for the restart + * + * If any of the following fails (however unlikely) we must return false to + * stop potential recursion: + * - tmp ini file creation + * - environment variable creation + * + * @return bool + */ + private function prepareRestart() + { + $error = ''; + $iniFiles = self::getAllIniFiles(); + $scannedInis = count($iniFiles) > 1; + $tmpDir = sys_get_temp_dir(); + + if (!$this->cli) { + $error = 'Unsupported SAPI: '.PHP_SAPI; + } elseif (!defined('PHP_BINARY')) { + $error = 'PHP version is too old: '.PHP_VERSION; + } elseif (!$this->checkConfiguration($info)) { + $error = $info; + } elseif (!$this->checkScanDirConfig()) { + $error = 'PHP version does not report scanned inis: '.PHP_VERSION; + } elseif (!$this->checkMainScript()) { + $error = 'Unable to access main script: '.$this->script; + } elseif (!$this->writeTmpIni($iniFiles, $tmpDir, $error)) { + $error = $error ?: 'Unable to create temp ini file at: '.$tmpDir; + } elseif (!$this->setEnvironment($scannedInis, $iniFiles)) { + $error = 'Unable to set environment variables'; + } + + if ($error) { + $this->notify(Status::ERROR, $error); + } + + return empty($error); + } + + /** + * Returns true if the tmp ini file was written + * + * @param array $iniFiles All ini files used in the current process + * @param string $tmpDir The system temporary directory + * @param string $error Set by method if ini file cannot be read + * + * @return bool + */ + private function writeTmpIni(array $iniFiles, $tmpDir, &$error) + { + if (!$this->tmpIni = @tempnam($tmpDir, '')) { + return false; + } + + // $iniFiles has at least one item and it may be empty + if (empty($iniFiles[0])) { + array_shift($iniFiles); + } + + $content = ''; + $regex = '/^\s*(zend_extension\s*=.*xdebug.*)$/mi'; + + foreach ($iniFiles as $file) { + // Check for inaccessible ini files + if (($data = @file_get_contents($file)) === false) { + $error = 'Unable to read ini: '.$file; + return false; + } + $content .= preg_replace($regex, ';$1', $data).PHP_EOL; + } + + // Merge loaded settings into our ini content, if it is valid + if ($config = parse_ini_string($content)) { + $loaded = ini_get_all(null, false); + $content .= $this->mergeLoadedConfig($loaded, $config); + } + + // Work-around for https://bugs.php.net/bug.php?id=75932 + $content .= 'opcache.enable_cli=0'.PHP_EOL; + + return @file_put_contents($this->tmpIni, $content); + } + + /** + * Returns the restart command line + * + * @return string + */ + private function getCommand() + { + $php = array(PHP_BINARY); + $args = array_slice($_SERVER['argv'], 1); + + if (!$this->persistent) { + // Use command-line options + array_push($php, '-n', '-c', $this->tmpIni); + } + + if (defined('STDOUT') && Process::supportsColor(STDOUT)) { + $args = Process::addColorOption($args, $this->colorOption); + } + + $args = array_merge($php, array($this->script), $args); + + $cmd = Process::escape(array_shift($args), true, true); + foreach ($args as $arg) { + $cmd .= ' '.Process::escape($arg); + } + + return $cmd; + } + + /** + * Returns true if the restart environment variables were set + * + * No need to update $_SERVER since this is set in the restarted process. + * + * @param bool $scannedInis Whether there were scanned ini files + * @param array $iniFiles All ini files used in the current process + * + * @return bool + */ + private function setEnvironment($scannedInis, array $iniFiles) + { + $scanDir = getenv('PHP_INI_SCAN_DIR'); + $phprc = getenv('PHPRC'); + + // Make original inis available to restarted process + if (!putenv($this->envOriginalInis.'='.implode(PATH_SEPARATOR, $iniFiles))) { + return false; + } + + if ($this->persistent) { + // Use the environment to persist the settings + if (!putenv('PHP_INI_SCAN_DIR=') || !putenv('PHPRC='.$this->tmpIni)) { + return false; + } + } + + // Flag restarted process and save values for it to use + $envArgs = array( + self::RESTART_ID, + $this->loaded, + (int) $scannedInis, + false === $scanDir ? '*' : $scanDir, + false === $phprc ? '*' : $phprc, + ); + + return putenv($this->envAllowXdebug.'='.implode('|', $envArgs)); + } + + /** + * Logs status messages + * + * @param string $op Status handler constant + * @param null|string $data Optional data + */ + private function notify($op, $data = null) + { + $this->statusWriter->report($op, $data); + } + + /** + * Returns default, changed and command-line ini settings + * + * @param array $loadedConfig All current ini settings + * @param array $iniConfig Settings from user ini files + * + * @return string + */ + private function mergeLoadedConfig(array $loadedConfig, array $iniConfig) + { + $content = ''; + + foreach ($loadedConfig as $name => $value) { + // Value will either be null, string or array (HHVM only) + if (!is_string($value) + || strpos($name, 'xdebug') === 0 + || $name === 'apc.mmap_file_mask') { + continue; + } + + if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) { + // Double-quote escape each value + $content .= $name.'="'.addcslashes($value, '\\"').'"'.PHP_EOL; + } + } + + return $content; + } + + /** + * Returns true if the script name can be used + * + * @return bool + */ + private function checkMainScript() + { + if (null !== $this->script) { + // Allow an application to set -- for standard input + return file_exists($this->script) || '--' === $this->script; + } + + if (file_exists($this->script = $_SERVER['argv'][0])) { + return true; + } + + // Use a backtrace to resolve Phar and chdir issues + $options = PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_IGNORE_ARGS : false; + $trace = debug_backtrace($options); + + if (($main = end($trace)) && isset($main['file'])) { + return file_exists($this->script = $main['file']); + } + + return false; + } + + /** + * Adds restart settings to the environment + * + * @param string $envArgs + */ + private function setEnvRestartSettings($envArgs) + { + $settings = array( + php_ini_loaded_file(), + $envArgs[2], + $envArgs[3], + $envArgs[4], + getenv($this->envOriginalInis), + self::$skipped, + ); + + Process::setEnv(self::RESTART_SETTINGS, implode('|', $settings)); + } + + /** + * Syncs settings and the environment if called with existing settings + * + * @param array $settings + */ + private function syncSettings(array $settings) + { + if (false === getenv($this->envOriginalInis)) { + // Called by another app, so make original inis available + Process::setEnv($this->envOriginalInis, implode(PATH_SEPARATOR, $settings['inis'])); + } + + self::$skipped = $settings['skipped']; + $this->notify(Status::INFO, 'Process called with existing restart settings'); + } + + /** + * Returns true if there are scanned inis and PHP is able to report them + * + * php_ini_scanned_files will fail when PHP_CONFIG_FILE_SCAN_DIR is empty. + * Fixed in 7.1.13 and 7.2.1 + * + * @return bool + */ + private function checkScanDirConfig() + { + return !(getenv('PHP_INI_SCAN_DIR') + && !PHP_CONFIG_FILE_SCAN_DIR + && (PHP_VERSION_ID < 70113 + || PHP_VERSION_ID === 70200)); + } + + /** + * Returns true if there are no known configuration issues + * + * @param string $info Set by method + */ + private function checkConfiguration(&$info) + { + if (false !== strpos(ini_get('disable_functions'), 'passthru')) { + $info = 'passthru function is disabled'; + return false; + } + + if (extension_loaded('uopz') && !ini_get('uopz.disable')) { + // uopz works at opcode level and disables exit calls + if (function_exists('uopz_allow_exit')) { + @uopz_allow_exit(true); + } else { + $info = 'uopz extension is not compatible'; + return false; + } + } + + return true; + } +} diff --git a/vendor/firebase/php-jwt/README.md b/vendor/firebase/php-jwt/README.md index d4589b1..9c8b545 100644 --- a/vendor/firebase/php-jwt/README.md +++ b/vendor/firebase/php-jwt/README.md @@ -23,7 +23,7 @@ Example use \Firebase\JWT\JWT; $key = "example_key"; -$token = array( +$payload = array( "iss" => "http://example.org", "aud" => "http://example.com", "iat" => 1356999524, @@ -36,7 +36,7 @@ $token = array( * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40 * for a list of spec-compliant algorithms. */ -$jwt = JWT::encode($token, $key); +$jwt = JWT::encode($payload, $key); $decoded = JWT::decode($jwt, $key, array('HS256')); print_r($decoded); @@ -58,12 +58,87 @@ $decoded_array = (array) $decoded; JWT::$leeway = 60; // $leeway in seconds $decoded = JWT::decode($jwt, $key, array('HS256')); +?> +``` +Example with RS256 (openssl) +---------------------------- +```php + "example.org", + "aud" => "example.com", + "iat" => 1356999524, + "nbf" => 1357000000 +); + +$jwt = JWT::encode($payload, $privateKey, 'RS256'); +echo "Encode:\n" . print_r($jwt, true) . "\n"; + +$decoded = JWT::decode($jwt, $publicKey, array('RS256')); + +/* + NOTE: This will now be an object instead of an associative array. To get + an associative array, you will need to cast it as such: +*/ + +$decoded_array = (array) $decoded; +echo "Decode:\n" . print_r($decoded_array, true) . "\n"; ?> ``` Changelog --------- +#### 5.0.0 / 2017-06-26 +- Support RS384 and RS512. + See [#117](https://github.com/firebase/php-jwt/pull/117). Thanks [@joostfaassen](https://github.com/joostfaassen)! +- Add an example for RS256 openssl. + See [#125](https://github.com/firebase/php-jwt/pull/125). Thanks [@akeeman](https://github.com/akeeman)! +- Detect invalid Base64 encoding in signature. + See [#162](https://github.com/firebase/php-jwt/pull/162). Thanks [@psignoret](https://github.com/psignoret)! +- Update `JWT::verify` to handle OpenSSL errors. + See [#159](https://github.com/firebase/php-jwt/pull/159). Thanks [@bshaffer](https://github.com/bshaffer)! +- Add `array` type hinting to `decode` method + See [#101](https://github.com/firebase/php-jwt/pull/101). Thanks [@hywak](https://github.com/hywak)! +- Add all JSON error types. + See [#110](https://github.com/firebase/php-jwt/pull/110). Thanks [@gbalduzzi](https://github.com/gbalduzzi)! +- Bugfix 'kid' not in given key list. + See [#129](https://github.com/firebase/php-jwt/pull/129). Thanks [@stampycode](https://github.com/stampycode)! +- Miscellaneous cleanup, documentation and test fixes. + See [#107](https://github.com/firebase/php-jwt/pull/107), [#115](https://github.com/firebase/php-jwt/pull/115), + [#160](https://github.com/firebase/php-jwt/pull/160), [#161](https://github.com/firebase/php-jwt/pull/161), and + [#165](https://github.com/firebase/php-jwt/pull/165). Thanks [@akeeman](https://github.com/akeeman), + [@chinedufn](https://github.com/chinedufn), and [@bshaffer](https://github.com/bshaffer)! + #### 4.0.0 / 2016-07-17 - Add support for late static binding. See [#88](https://github.com/firebase/php-jwt/pull/88) for details. Thanks to [@chappy84](https://github.com/chappy84)! - Use static `$timestamp` instead of `time()` to improve unit testing. See [#93](https://github.com/firebase/php-jwt/pull/93) for details. Thanks to [@josephmcdermott](https://github.com/josephmcdermott)! @@ -114,6 +189,12 @@ Time: 0 seconds, Memory: 2.50Mb OK (5 tests, 5 assertions) ``` +New Lines in private keys +----- + +If your private key contains `\n` characters, be sure to wrap it in double quotes `""` +and not single quotes `''` in order to properly interpret the escaped characters. + License ------- [3-Clause BSD](http://opensource.org/licenses/BSD-3-Clause). diff --git a/vendor/firebase/php-jwt/composer.json b/vendor/firebase/php-jwt/composer.json index 1a5e93b..9f1a42c 100644 --- a/vendor/firebase/php-jwt/composer.json +++ b/vendor/firebase/php-jwt/composer.json @@ -23,5 +23,7 @@ "Firebase\\JWT\\": "src" } }, - "minimum-stability": "dev" + "require-dev": { + "phpunit/phpunit": "^4.8|^5" + } } diff --git a/vendor/firebase/php-jwt/composer.lock b/vendor/firebase/php-jwt/composer.lock deleted file mode 100644 index 5518ae4..0000000 --- a/vendor/firebase/php-jwt/composer.lock +++ /dev/null @@ -1,19 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "hash": "60a5df5d283a7ae9000173248eba8909", - "packages": [], - "packages-dev": [], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=5.2.0" - }, - "platform-dev": [] -} diff --git a/vendor/firebase/php-jwt/package.xml b/vendor/firebase/php-jwt/package.xml deleted file mode 100644 index a95b056..0000000 --- a/vendor/firebase/php-jwt/package.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - JWT - pear.php.net - A JWT encoder/decoder. - A JWT encoder/decoder library for PHP. - - Neuman Vong - lcfrs - neuman+pear@twilio.com - yes - - - Firebase Operations - firebase - operations@firebase.com - yes - - 2015-07-22 - - 3.0.0 - 3.0.0 - - - beta - beta - - BSD 3-Clause License - -Initial release with basic support for JWT encoding, decoding and signature verification. - - - - - - - - - - - - - 5.1 - - - 1.7.0 - - - json - - - hash - - - - - - - - 0.1.0 - 0.1.0 - - - beta - beta - - 2015-04-01 - BSD 3-Clause License - -Initial release with basic support for JWT encoding, decoding and signature verification. - - - - diff --git a/vendor/firebase/php-jwt/src/JWT.php b/vendor/firebase/php-jwt/src/JWT.php index 6d30e94..af20661 100644 --- a/vendor/firebase/php-jwt/src/JWT.php +++ b/vendor/firebase/php-jwt/src/JWT.php @@ -1,6 +1,7 @@ array('openssl', 'SHA256'), 'HS256' => array('hash_hmac', 'SHA256'), - 'HS512' => array('hash_hmac', 'SHA512'), 'HS384' => array('hash_hmac', 'SHA384'), + 'HS512' => array('hash_hmac', 'SHA512'), 'RS256' => array('openssl', 'SHA256'), + 'RS384' => array('openssl', 'SHA384'), + 'RS512' => array('openssl', 'SHA512'), ); /** * Decodes a JWT string into a PHP object. * - * @param string $jwt The JWT - * @param string|array $key The key, or map of keys. - * If the algorithm used is asymmetric, this is the public key - * @param array $allowed_algs List of supported verification algorithms - * Supported algorithms are 'HS256', 'HS384', 'HS512' and 'RS256' + * @param string $jwt The JWT + * @param string|array|resource $key The key, or map of keys. + * If the algorithm used is asymmetric, this is the public key + * @param array $allowed_algs List of supported verification algorithms + * Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512' * * @return object The JWT's payload as a PHP object * @@ -64,16 +71,13 @@ class JWT * @uses jsonDecode * @uses urlsafeB64Decode */ - public static function decode($jwt, $key, $allowed_algs = array()) + public static function decode($jwt, $key, array $allowed_algs = array()) { $timestamp = is_null(static::$timestamp) ? time() : static::$timestamp; if (empty($key)) { throw new InvalidArgumentException('Key may not be empty'); } - if (!is_array($allowed_algs)) { - throw new InvalidArgumentException('Algorithm not allowed'); - } $tks = explode('.', $jwt); if (count($tks) != 3) { throw new UnexpectedValueException('Wrong number of segments'); @@ -85,8 +89,9 @@ public static function decode($jwt, $key, $allowed_algs = array()) if (null === $payload = static::jsonDecode(static::urlsafeB64Decode($bodyb64))) { throw new UnexpectedValueException('Invalid claims encoding'); } - $sig = static::urlsafeB64Decode($cryptob64); - + if (false === ($sig = static::urlsafeB64Decode($cryptob64))) { + throw new UnexpectedValueException('Invalid signature encoding'); + } if (empty($header->alg)) { throw new UnexpectedValueException('Empty algorithm'); } @@ -96,8 +101,16 @@ public static function decode($jwt, $key, $allowed_algs = array()) if (!in_array($header->alg, $allowed_algs)) { throw new UnexpectedValueException('Algorithm not allowed'); } + if ($header->alg === 'ES256') { + // OpenSSL expects an ASN.1 DER sequence for ES256 signatures + $sig = self::signatureToDER($sig); + } + if (is_array($key) || $key instanceof \ArrayAccess) { if (isset($header->kid)) { + if (!isset($key[$header->kid])) { + throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key'); + } $key = $key[$header->kid]; } else { throw new UnexpectedValueException('"kid" empty, unable to lookup correct key'); @@ -109,7 +122,7 @@ public static function decode($jwt, $key, $allowed_algs = array()) throw new SignatureInvalidException('Signature verification failed'); } - // Check if the nbf if it is defined. This is the time that the + // Check the nbf if it is defined. This is the time that the // token can actually be used. If it's not yet that time, abort. if (isset($payload->nbf) && $payload->nbf > ($timestamp + static::$leeway)) { throw new BeforeValidException( @@ -141,7 +154,7 @@ public static function decode($jwt, $key, $allowed_algs = array()) * @param string $key The secret key. * If the algorithm used is asymmetric, this is the private key * @param string $alg The signing algorithm. - * Supported algorithms are 'HS256', 'HS384', 'HS512' and 'RS256' + * Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512' * @param mixed $keyId * @param array $head An array with header elements to attach * @@ -156,7 +169,7 @@ public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $he if ($keyId !== null) { $header['kid'] = $keyId; } - if ( isset($head) && is_array($head) ) { + if (isset($head) && is_array($head)) { $header = array_merge($head, $header); } $segments = array(); @@ -176,7 +189,7 @@ public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $he * @param string $msg The message to sign * @param string|resource $key The secret key * @param string $alg The signing algorithm. - * Supported algorithms are 'HS256', 'HS384', 'HS512' and 'RS256' + * Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512' * * @return string An encrypted message * @@ -188,7 +201,7 @@ public static function sign($msg, $key, $alg = 'HS256') throw new DomainException('Algorithm not supported'); } list($function, $algorithm) = static::$supported_algs[$alg]; - switch($function) { + switch ($function) { case 'hash_hmac': return hash_hmac($algorithm, $msg, $key, true); case 'openssl': @@ -197,6 +210,9 @@ public static function sign($msg, $key, $alg = 'HS256') if (!$success) { throw new DomainException("OpenSSL unable to sign data"); } else { + if ($alg === 'ES256') { + $signature = self::signatureFromDER($signature, 256); + } return $signature; } } @@ -222,14 +238,18 @@ private static function verify($msg, $signature, $key, $alg) } list($function, $algorithm) = static::$supported_algs[$alg]; - switch($function) { + switch ($function) { case 'openssl': $success = openssl_verify($msg, $signature, $key, $algorithm); - if (!$success) { - throw new DomainException("OpenSSL unable to verify data: " . openssl_error_string()); - } else { - return $signature; + if ($success === 1) { + return true; + } elseif ($success === 0) { + return false; } + // returns 1 on success, 0 on failure, -1 on error. + throw new DomainException( + 'OpenSSL error: ' . openssl_error_string() + ); case 'hash_hmac': default: $hash = hash_hmac($algorithm, $msg, $key, true); @@ -275,7 +295,7 @@ public static function jsonDecode($input) $obj = json_decode($json_without_bigints); } - if (function_exists('json_last_error') && $errno = json_last_error()) { + if ($errno = json_last_error()) { static::handleJsonError($errno); } elseif ($obj === null && $input !== 'null') { throw new DomainException('Null result with non-null input'); @@ -295,7 +315,7 @@ public static function jsonDecode($input) public static function jsonEncode($input) { $json = json_encode($input); - if (function_exists('json_last_error') && $errno = json_last_error()) { + if ($errno = json_last_error()) { static::handleJsonError($errno); } elseif ($json === 'null' && $input !== null) { throw new DomainException('Null result with non-null input'); @@ -343,8 +363,10 @@ private static function handleJsonError($errno) { $messages = array( JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', + JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON', JSON_ERROR_CTRL_CHAR => 'Unexpected control character found', - JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON' + JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON', + JSON_ERROR_UTF8 => 'Malformed UTF-8 characters' //PHP >= 5.3.3 ); throw new DomainException( isset($messages[$errno]) @@ -356,7 +378,7 @@ private static function handleJsonError($errno) /** * Get the number of bytes in cryptographic strings. * - * @param string + * @param string $str * * @return int */ @@ -367,4 +389,126 @@ private static function safeStrlen($str) } return strlen($str); } + + /** + * Convert an ECDSA signature to an ASN.1 DER sequence + * + * @param string $sig The ECDSA signature to convert + * @return string The encoded DER object + */ + private static function signatureToDER($sig) + { + // Separate the signature into r-value and s-value + list($r, $s) = str_split($sig, (int) (strlen($sig) / 2)); + + // Trim leading zeros + $r = ltrim($r, "\x00"); + $s = ltrim($s, "\x00"); + + // Convert r-value and s-value from unsigned big-endian integers to + // signed two's complement + if (ord($r[0]) > 0x7f) { + $r = "\x00" . $r; + } + if (ord($s[0]) > 0x7f) { + $s = "\x00" . $s; + } + + return self::encodeDER( + self::ASN1_SEQUENCE, + self::encodeDER(self::ASN1_INTEGER, $r) . + self::encodeDER(self::ASN1_INTEGER, $s) + ); + } + + /** + * Encodes a value into a DER object. + * + * @param int $type DER tag + * @param string $value the value to encode + * @return string the encoded object + */ + private static function encodeDER($type, $value) + { + $tag_header = 0; + if ($type === self::ASN1_SEQUENCE) { + $tag_header |= 0x20; + } + + // Type + $der = chr($tag_header | $type); + + // Length + $der .= chr(strlen($value)); + + return $der . $value; + } + + /** + * Encodes signature from a DER object. + * + * @param string $der binary signature in DER format + * @param int $keySize the nubmer of bits in the key + * @return string the signature + */ + private static function signatureFromDER($der, $keySize) + { + // OpenSSL returns the ECDSA signatures as a binary ASN.1 DER SEQUENCE + list($offset, $_) = self::readDER($der); + list($offset, $r) = self::readDER($der, $offset); + list($offset, $s) = self::readDER($der, $offset); + + // Convert r-value and s-value from signed two's compliment to unsigned + // big-endian integers + $r = ltrim($r, "\x00"); + $s = ltrim($s, "\x00"); + + // Pad out r and s so that they are $keySize bits long + $r = str_pad($r, $keySize / 8, "\x00", STR_PAD_LEFT); + $s = str_pad($s, $keySize / 8, "\x00", STR_PAD_LEFT); + + return $r . $s; + } + + /** + * Reads binary DER-encoded data and decodes into a single object + * + * @param string $der the binary data in DER format + * @param int $offset the offset of the data stream containing the object + * to decode + * @return array [$offset, $data] the new offset and the decoded object + */ + private static function readDER($der, $offset = 0) + { + $pos = $offset; + $size = strlen($der); + $constructed = (ord($der[$pos]) >> 5) & 0x01; + $type = ord($der[$pos++]) & 0x1f; + + // Length + $len = ord($der[$pos++]); + if ($len & 0x80) { + $n = $len & 0x1f; + $len = 0; + while ($n-- && $pos < $size) { + $len = ($len << 8) | ord($der[$pos++]); + } + } + + // Value + if ($type == self::ASN1_BIT_STRING) { + $pos++; // Skip the first contents octet (padding indicator) + $data = substr($der, $pos, $len - 1); + if (!$ignore_bit_strings) { + $pos += $len - 1; + } + } elseif (!$constructed) { + $data = substr($der, $pos, $len); + $pos += $len; + } else { + $data = null; + } + + return array($pos, $data); + } } From d94c39f4db9ff66718fe41cf70f716e09df6123d Mon Sep 17 00:00:00 2001 From: Eike Foken Date: Sat, 14 Mar 2020 16:25:52 +0100 Subject: [PATCH 4/6] Remove Composer dev dependencies --- vendor/autoload.php | 2 +- vendor/composer/autoload_classmap.php | 2793 ------- vendor/composer/autoload_files.php | 47 - vendor/composer/autoload_namespaces.php | 9 - vendor/composer/autoload_psr4.php | 62 - vendor/composer/autoload_real.php | 26 +- vendor/composer/autoload_static.php | 3276 +------- vendor/composer/ca-bundle/LICENSE | 19 - vendor/composer/ca-bundle/README.md | 85 - vendor/composer/ca-bundle/composer.json | 54 - vendor/composer/ca-bundle/res/cacert.pem | 3466 -------- vendor/composer/ca-bundle/src/CaBundle.php | 324 - vendor/composer/composer/.editorconfig | 11 - vendor/composer/composer/.gitattributes | 17 - vendor/composer/composer/.gitignore | 11 - vendor/composer/composer/CHANGELOG.md | 855 -- vendor/composer/composer/LICENSE | 19 - vendor/composer/composer/PORTING_INFO | 39 - vendor/composer/composer/README.md | 62 - vendor/composer/composer/bin/compile | 31 - vendor/composer/composer/bin/composer | 62 - vendor/composer/composer/composer.json | 86 - vendor/composer/composer/doc/00-intro.md | 156 - .../composer/composer/doc/01-basic-usage.md | 266 - vendor/composer/composer/doc/02-libraries.md | 153 - vendor/composer/composer/doc/03-cli.md | 941 --- vendor/composer/composer/doc/04-schema.md | 924 --- .../composer/composer/doc/05-repositories.md | 717 -- vendor/composer/composer/doc/06-config.md | 299 - vendor/composer/composer/doc/07-community.md | 35 - .../composer/composer/doc/articles/aliases.md | 111 - .../doc/articles/autoloader-optimization.md | 111 - .../doc/articles/custom-installers.md | 204 - .../handling-private-packages-with-satis.md | 356 - .../doc/articles/http-basic-authentication.md | 59 - .../composer/composer/doc/articles/plugins.md | 290 - .../composer/composer/doc/articles/scripts.md | 357 - .../composer/doc/articles/troubleshooting.md | 309 - .../composer/doc/articles/vendor-binaries.md | 110 - .../composer/doc/articles/versions.md | 230 - .../composer/doc/dev/DefaultPolicy.md | 55 - ...ckage-to-a-custom-path-for-my-framework.md | 50 - ...ow-to-install-composer-programmatically.md | 42 - ...ow-to-install-untrusted-packages-safely.md | 19 - ...the-dependencies-in-my-vendor-directory.md | 32 - ...mbering-system-does-composer-itself-use.md | 4 - ...-unbound-version-constraints-a-bad-idea.md | 21 - ...ng-comparisons-and-wildcards-a-bad-idea.md | 21 - ...-composer-load-repositories-recursively.md | 35 - .../composer/doc/fixtures/fixtures.md | 22 - .../repo-composer-plain/packages.json | 158 - ...156dd4d0821a97fd3e428bc910833e3e46dbe.json | 50 - ...138e5f3b79029c1f8d9ab5b477ea15776ba0a.json | 77 - ...67b9bea558b971e5b082f330ae4f1d484c321.json | 50 - ...791c612db0c05e22d90e9286e233cacd86ed8.json | 16 - ...d601923a5a00ccc5fcce50a77ecdd461eb72d.json | 22 - .../packages.json | 9 - .../res/composer-repository-schema.json | 110 - .../composer/res/composer-schema.json | 849 -- .../Composer/Autoload/AutoloadGenerator.php | 1013 --- .../src/Composer/Autoload/ClassLoader.php | 445 -- .../Composer/Autoload/ClassMapGenerator.php | 222 - .../composer/composer/src/Composer/Cache.php | 257 - .../src/Composer/Command/AboutCommand.php | 48 - .../src/Composer/Command/ArchiveCommand.php | 166 - .../src/Composer/Command/BaseCommand.php | 181 - .../Command/BaseDependencyCommand.php | 255 - .../Command/CheckPlatformReqsCommand.php | 162 - .../Composer/Command/ClearCacheCommand.php | 76 - .../src/Composer/Command/ConfigCommand.php | 755 -- .../Composer/Command/CreateProjectCommand.php | 387 - .../src/Composer/Command/DependsCommand.php | 57 - .../src/Composer/Command/DiagnoseCommand.php | 729 -- .../Composer/Command/DumpAutoloadCommand.php | 90 - .../src/Composer/Command/ExecCommand.php | 97 - .../src/Composer/Command/GlobalCommand.php | 111 - .../src/Composer/Command/HomeCommand.php | 168 - .../src/Composer/Command/InitCommand.php | 822 -- .../src/Composer/Command/InstallCommand.php | 124 - .../src/Composer/Command/LicensesCommand.php | 161 - .../src/Composer/Command/OutdatedCommand.php | 95 - .../src/Composer/Command/ProhibitsCommand.php | 57 - .../src/Composer/Command/RemoveCommand.php | 163 - .../src/Composer/Command/RequireCommand.php | 277 - .../src/Composer/Command/RunScriptCommand.php | 142 - .../Composer/Command/ScriptAliasCommand.php | 66 - .../src/Composer/Command/SearchCommand.php | 85 - .../Composer/Command/SelfUpdateCommand.php | 407 - .../src/Composer/Command/ShowCommand.php | 1015 --- .../src/Composer/Command/StatusCommand.php | 214 - .../src/Composer/Command/SuggestsCommand.php | 154 - .../src/Composer/Command/UpdateCommand.php | 228 - .../src/Composer/Command/ValidateCommand.php | 172 - .../composer/src/Composer/Compiler.php | 284 - .../composer/src/Composer/Composer.php | 283 - .../composer/composer/src/Composer/Config.php | 479 -- .../Composer/Config/ConfigSourceInterface.php | 91 - .../src/Composer/Config/JsonConfigSource.php | 271 - .../src/Composer/Console/Application.php | 494 -- .../Composer/Console/HtmlOutputFormatter.php | 90 - .../Composer/DependencyResolver/Decisions.php | 211 - .../DependencyResolver/DefaultPolicy.php | 285 - .../DependencyResolver/GenericRule.php | 91 - .../Operation/InstallOperation.php | 66 - .../Operation/MarkAliasInstalledOperation.php | 67 - .../MarkAliasUninstalledOperation.php | 67 - .../Operation/OperationInterface.php | 42 - .../Operation/SolverOperation.php | 50 - .../Operation/UninstallOperation.php | 66 - .../Operation/UpdateOperation.php | 80 - .../DependencyResolver/PolicyInterface.php | 27 - .../src/Composer/DependencyResolver/Pool.php | 378 - .../Composer/DependencyResolver/Problem.php | 257 - .../Composer/DependencyResolver/Request.php | 78 - .../src/Composer/DependencyResolver/Rule.php | 268 - .../DependencyResolver/Rule2Literals.php | 113 - .../Composer/DependencyResolver/RuleSet.php | 176 - .../DependencyResolver/RuleSetGenerator.php | 376 - .../DependencyResolver/RuleSetIterator.php | 94 - .../DependencyResolver/RuleWatchChain.php | 52 - .../DependencyResolver/RuleWatchGraph.php | 144 - .../DependencyResolver/RuleWatchNode.php | 113 - .../Composer/DependencyResolver/Solver.php | 874 --- .../DependencyResolver/SolverBugException.php | 27 - .../SolverProblemsException.php | 88 - .../DependencyResolver/Transaction.php | 244 - .../Composer/Downloader/ArchiveDownloader.php | 135 - .../Downloader/ChangeReportInterface.php | 32 - .../Composer/Downloader/DownloadManager.php | 325 - .../Downloader/DownloaderInterface.php | 64 - .../Downloader/DvcsDownloaderInterface.php | 32 - .../Composer/Downloader/FileDownloader.php | 322 - .../Downloader/FilesystemException.php | 26 - .../Composer/Downloader/FossilDownloader.php | 116 - .../src/Composer/Downloader/GitDownloader.php | 528 -- .../Composer/Downloader/GzipDownloader.php | 84 - .../src/Composer/Downloader/HgDownloader.php | 100 - .../Composer/Downloader/PathDownloader.php | 224 - .../Downloader/PearPackageExtractor.php | 266 - .../Downloader/PerforceDownloader.php | 112 - .../Composer/Downloader/PharDownloader.php | 36 - .../src/Composer/Downloader/RarDownloader.php | 91 - .../src/Composer/Downloader/SvnDownloader.php | 225 - .../src/Composer/Downloader/TarDownloader.php | 31 - .../Downloader/TransportException.php | 53 - .../VcsCapableDownloaderInterface.php | 32 - .../src/Composer/Downloader/VcsDownloader.php | 293 - .../src/Composer/Downloader/XzDownloader.php | 60 - .../src/Composer/Downloader/ZipDownloader.php | 230 - .../src/Composer/EventDispatcher/Event.php | 103 - .../EventDispatcher/EventDispatcher.php | 544 -- .../EventSubscriberInterface.php | 48 - .../ScriptExecutionException.php | 20 - .../src/Composer/Exception/NoSslException.php | 20 - .../composer/src/Composer/Factory.php | 653 -- .../composer/src/Composer/IO/BaseIO.php | 279 - .../composer/src/Composer/IO/BufferIO.php | 86 - .../composer/src/Composer/IO/ConsoleIO.php | 346 - .../composer/src/Composer/IO/IOInterface.php | 207 - .../composer/src/Composer/IO/NullIO.php | 129 - .../composer/src/Composer/Installer.php | 1803 ----- .../Composer/Installer/BinaryInstaller.php | 214 - .../Installer/BinaryPresenceInterface.php | 30 - .../Installer/InstallationManager.php | 326 - .../src/Composer/Installer/InstallerEvent.php | 161 - .../Composer/Installer/InstallerEvents.php | 43 - .../Composer/Installer/InstallerInterface.php | 79 - .../Composer/Installer/LibraryInstaller.php | 232 - .../Installer/MetapackageInstaller.php | 100 - .../src/Composer/Installer/NoopInstaller.php | 88 - .../src/Composer/Installer/PackageEvent.php | 65 - .../src/Composer/Installer/PackageEvents.php | 75 - .../Installer/PearBinaryInstaller.php | 144 - .../src/Composer/Installer/PearInstaller.php | 84 - .../Composer/Installer/PluginInstaller.php | 84 - .../Composer/Installer/ProjectInstaller.php | 99 - .../Installer/SuggestedPackagesReporter.php | 151 - .../composer/src/Composer/Json/JsonFile.php | 306 - .../src/Composer/Json/JsonFormatter.php | 134 - .../src/Composer/Json/JsonManipulator.php | 522 -- .../Composer/Json/JsonValidationException.php | 34 - .../src/Composer/Package/AliasPackage.php | 414 - .../Archiver/ArchivableFilesFilter.php | 44 - .../Archiver/ArchivableFilesFinder.php | 105 - .../Package/Archiver/ArchiveManager.php | 183 - .../Package/Archiver/ArchiverInterface.php | 43 - .../Package/Archiver/BaseExcludeFilter.php | 148 - .../Archiver/ComposerExcludeFilter.php | 31 - .../Package/Archiver/GitExcludeFilter.php | 79 - .../Package/Archiver/HgExcludeFilter.php | 107 - .../Package/Archiver/PharArchiver.php | 97 - .../Composer/Package/Archiver/ZipArchiver.php | 74 - .../src/Composer/Package/BasePackage.php | 251 - .../Composer/Package/Comparer/Comparer.php | 129 - .../src/Composer/Package/CompletePackage.php | 199 - .../Package/CompletePackageInterface.php | 95 - .../Composer/Package/Dumper/ArrayDumper.php | 151 - .../composer/src/Composer/Package/Link.php | 128 - .../LinkConstraint/EmptyConstraint.php | 24 - .../LinkConstraintInterface.php | 24 - .../LinkConstraint/MultiConstraint.php | 24 - .../LinkConstraint/SpecificConstraint.php | 24 - .../LinkConstraint/VersionConstraint.php | 24 - .../Composer/Package/Loader/ArrayLoader.php | 290 - .../Loader/InvalidPackageException.php | 46 - .../Composer/Package/Loader/JsonLoader.php | 45 - .../Package/Loader/LoaderInterface.php | 30 - .../Package/Loader/RootPackageLoader.php | 264 - .../Package/Loader/ValidatingArrayLoader.php | 499 -- .../composer/src/Composer/Package/Locker.php | 438 -- .../composer/src/Composer/Package/Package.php | 612 -- .../src/Composer/Package/PackageInterface.php | 389 - .../src/Composer/Package/RootAliasPackage.php | 173 - .../src/Composer/Package/RootPackage.php | 136 - .../Composer/Package/RootPackageInterface.php | 142 - .../Package/Version/VersionGuesser.php | 322 - .../Package/Version/VersionParser.php | 81 - .../Package/Version/VersionSelector.php | 176 - .../Composer/Plugin/Capability/Capability.php | 23 - .../Plugin/Capability/CommandProvider.php | 33 - .../composer/src/Composer/Plugin/Capable.php | 43 - .../src/Composer/Plugin/CommandEvent.php | 88 - .../src/Composer/Plugin/PluginEvents.php | 61 - .../src/Composer/Plugin/PluginInterface.php | 39 - .../src/Composer/Plugin/PluginManager.php | 406 - .../Composer/Plugin/PreCommandRunEvent.php | 68 - .../Composer/Plugin/PreFileDownloadEvent.php | 78 - .../Question/StrictConfirmationQuestion.php | 94 - .../Composer/Repository/ArrayRepository.php | 208 - .../Repository/ArtifactRepository.php | 107 - .../Composer/Repository/BaseRepository.php | 178 - .../Repository/ComposerRepository.php | 841 -- .../Repository/CompositeRepository.php | 164 - .../ConfigurableRepositoryInterface.php | 23 - .../Repository/FilesystemRepository.php | 97 - .../Repository/InstalledArrayRepository.php | 24 - .../InstalledFilesystemRepository.php | 22 - .../InstalledRepositoryInterface.php | 24 - .../Repository/InvalidRepositoryException.php | 22 - .../Composer/Repository/PackageRepository.php | 61 - .../Composer/Repository/PathRepository.php | 201 - .../Repository/Pear/BaseChannelReader.php | 82 - .../Composer/Repository/Pear/ChannelInfo.php | 67 - .../Repository/Pear/ChannelReader.php | 101 - .../Repository/Pear/ChannelRest10Reader.php | 164 - .../Repository/Pear/ChannelRest11Reader.php | 139 - .../Repository/Pear/DependencyConstraint.php | 60 - .../Repository/Pear/DependencyInfo.php | 50 - .../Pear/PackageDependencyParser.php | 317 - .../Composer/Repository/Pear/PackageInfo.php | 94 - .../Composer/Repository/Pear/ReleaseInfo.php | 50 - .../Composer/Repository/PearRepository.php | 198 - .../Repository/PlatformRepository.php | 342 - .../Composer/Repository/RepositoryFactory.php | 169 - .../Repository/RepositoryInterface.php | 74 - .../Composer/Repository/RepositoryManager.php | 177 - .../RepositorySecurityException.php | 22 - .../Repository/Vcs/BitbucketDriver.php | 452 -- .../Composer/Repository/Vcs/FossilDriver.php | 243 - .../Repository/Vcs/GitBitbucketDriver.php | 91 - .../src/Composer/Repository/Vcs/GitDriver.php | 226 - .../Composer/Repository/Vcs/GitHubDriver.php | 476 -- .../Composer/Repository/Vcs/GitLabDriver.php | 520 -- .../Repository/Vcs/HgBitbucketDriver.php | 91 - .../src/Composer/Repository/Vcs/HgDriver.php | 236 - .../Repository/Vcs/PerforceDriver.php | 186 - .../src/Composer/Repository/Vcs/SvnDriver.php | 397 - .../src/Composer/Repository/Vcs/VcsDriver.php | 175 - .../Repository/Vcs/VcsDriverInterface.php | 117 - .../src/Composer/Repository/VcsRepository.php | 410 - .../Repository/VersionCacheInterface.php | 23 - .../Repository/WritableArrayRepository.php | 66 - .../WritableRepositoryInterface.php | 54 - .../src/Composer/Script/CommandEvent.php | 22 - .../composer/src/Composer/Script/Event.php | 133 - .../src/Composer/Script/PackageEvent.php | 24 - .../src/Composer/Script/ScriptEvents.php | 193 - .../composer/src/Composer/SelfUpdate/Keys.php | 36 - .../src/Composer/SelfUpdate/Versions.php | 75 - .../composer/src/Composer/Util/AuthHelper.php | 63 - .../composer/src/Composer/Util/Bitbucket.php | 245 - .../src/Composer/Util/ComposerMirror.php | 57 - .../src/Composer/Util/ConfigValidator.php | 191 - .../src/Composer/Util/ErrorHandler.php | 82 - .../composer/src/Composer/Util/Filesystem.php | 717 -- .../composer/src/Composer/Util/Git.php | 401 - .../composer/src/Composer/Util/GitHub.php | 180 - .../composer/src/Composer/Util/GitLab.php | 172 - .../composer/src/Composer/Util/Hg.php | 94 - .../composer/src/Composer/Util/IniHelper.php | 64 - .../src/Composer/Util/NoProxyPattern.php | 147 - .../src/Composer/Util/PackageSorter.php | 92 - .../composer/src/Composer/Util/Perforce.php | 579 -- .../composer/src/Composer/Util/Platform.php | 92 - .../src/Composer/Util/ProcessExecutor.php | 201 - .../src/Composer/Util/RemoteFilesystem.php | 1133 --- .../composer/src/Composer/Util/Silencer.php | 78 - .../src/Composer/Util/SpdxLicense.php | 24 - .../Composer/Util/StreamContextFactory.php | 177 - .../composer/src/Composer/Util/Svn.php | 381 - .../composer/src/Composer/Util/TlsHelper.php | 202 - .../composer/src/Composer/Util/Url.php | 55 - .../composer/src/Composer/Util/Zip.php | 108 - .../composer/src/Composer/XdebugHandler.php | 31 - vendor/composer/composer/src/bootstrap.php | 24 - vendor/composer/installed.json | 6963 +---------------- vendor/composer/semver/CHANGELOG.md | 78 - vendor/composer/semver/LICENSE | 19 - vendor/composer/semver/README.md | 70 - vendor/composer/semver/composer.json | 57 - vendor/composer/semver/src/Comparator.php | 111 - .../src/Constraint/AbstractConstraint.php | 63 - .../semver/src/Constraint/Constraint.php | 215 - .../src/Constraint/ConstraintInterface.php | 32 - .../semver/src/Constraint/EmptyConstraint.php | 59 - .../semver/src/Constraint/MultiConstraint.php | 120 - vendor/composer/semver/src/Semver.php | 127 - vendor/composer/semver/src/VersionParser.php | 545 -- vendor/composer/spdx-licenses/.php_cs.dist | 59 - vendor/composer/spdx-licenses/CHANGELOG.md | 94 - vendor/composer/spdx-licenses/LICENSE | 19 - vendor/composer/spdx-licenses/README.md | 69 - vendor/composer/spdx-licenses/composer.json | 56 - .../spdx-licenses/res/spdx-exceptions.json | 116 - .../spdx-licenses/res/spdx-licenses.json | 2047 ----- .../spdx-licenses/src/SpdxLicenses.php | 343 - vendor/composer/xdebug-handler/CHANGELOG.md | 70 - vendor/composer/xdebug-handler/LICENSE | 21 - vendor/composer/xdebug-handler/README.md | 288 - vendor/composer/xdebug-handler/composer.json | 40 - .../composer/xdebug-handler/src/PhpConfig.php | 73 - .../composer/xdebug-handler/src/Process.php | 181 - vendor/composer/xdebug-handler/src/Status.php | 163 - .../xdebug-handler/src/XdebugHandler.php | 565 -- 334 files changed, 27 insertions(+), 78503 deletions(-) delete mode 100644 vendor/composer/autoload_files.php delete mode 100644 vendor/composer/ca-bundle/LICENSE delete mode 100644 vendor/composer/ca-bundle/README.md delete mode 100644 vendor/composer/ca-bundle/composer.json delete mode 100644 vendor/composer/ca-bundle/res/cacert.pem delete mode 100644 vendor/composer/ca-bundle/src/CaBundle.php delete mode 100644 vendor/composer/composer/.editorconfig delete mode 100644 vendor/composer/composer/.gitattributes delete mode 100644 vendor/composer/composer/.gitignore delete mode 100644 vendor/composer/composer/CHANGELOG.md delete mode 100644 vendor/composer/composer/LICENSE delete mode 100644 vendor/composer/composer/PORTING_INFO delete mode 100644 vendor/composer/composer/README.md delete mode 100755 vendor/composer/composer/bin/compile delete mode 100755 vendor/composer/composer/bin/composer delete mode 100644 vendor/composer/composer/composer.json delete mode 100644 vendor/composer/composer/doc/00-intro.md delete mode 100644 vendor/composer/composer/doc/01-basic-usage.md delete mode 100644 vendor/composer/composer/doc/02-libraries.md delete mode 100644 vendor/composer/composer/doc/03-cli.md delete mode 100644 vendor/composer/composer/doc/04-schema.md delete mode 100644 vendor/composer/composer/doc/05-repositories.md delete mode 100644 vendor/composer/composer/doc/06-config.md delete mode 100644 vendor/composer/composer/doc/07-community.md delete mode 100644 vendor/composer/composer/doc/articles/aliases.md delete mode 100644 vendor/composer/composer/doc/articles/autoloader-optimization.md delete mode 100644 vendor/composer/composer/doc/articles/custom-installers.md delete mode 100644 vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md delete mode 100644 vendor/composer/composer/doc/articles/http-basic-authentication.md delete mode 100644 vendor/composer/composer/doc/articles/plugins.md delete mode 100644 vendor/composer/composer/doc/articles/scripts.md delete mode 100644 vendor/composer/composer/doc/articles/troubleshooting.md delete mode 100644 vendor/composer/composer/doc/articles/vendor-binaries.md delete mode 100644 vendor/composer/composer/doc/articles/versions.md delete mode 100644 vendor/composer/composer/doc/dev/DefaultPolicy.md delete mode 100644 vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md delete mode 100644 vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md delete mode 100644 vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md delete mode 100644 vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md delete mode 100644 vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md delete mode 100644 vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md delete mode 100644 vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md delete mode 100644 vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md delete mode 100644 vendor/composer/composer/doc/fixtures/fixtures.md delete mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json delete mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json delete mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json delete mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json delete mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json delete mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json delete mode 100644 vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json delete mode 100644 vendor/composer/composer/res/composer-repository-schema.json delete mode 100644 vendor/composer/composer/res/composer-schema.json delete mode 100644 vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php delete mode 100644 vendor/composer/composer/src/Composer/Autoload/ClassLoader.php delete mode 100644 vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php delete mode 100644 vendor/composer/composer/src/Composer/Cache.php delete mode 100644 vendor/composer/composer/src/Composer/Command/AboutCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/ArchiveCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/BaseCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/ConfigCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/DependsCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/ExecCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/GlobalCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/HomeCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/InitCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/InstallCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/LicensesCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/OutdatedCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/RemoveCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/RequireCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/RunScriptCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/SearchCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/ShowCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/StatusCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/SuggestsCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/UpdateCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Command/ValidateCommand.php delete mode 100644 vendor/composer/composer/src/Composer/Compiler.php delete mode 100644 vendor/composer/composer/src/Composer/Composer.php delete mode 100644 vendor/composer/composer/src/Composer/Config.php delete mode 100644 vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Config/JsonConfigSource.php delete mode 100644 vendor/composer/composer/src/Composer/Console/Application.php delete mode 100644 vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Pool.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Problem.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Request.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Rule.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Solver.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php delete mode 100644 vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/DownloadManager.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/FileDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/FilesystemException.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/GitDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/HgDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/PathDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/PharDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/RarDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/TarDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/TransportException.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/XzDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php delete mode 100644 vendor/composer/composer/src/Composer/EventDispatcher/Event.php delete mode 100644 vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php delete mode 100644 vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php delete mode 100644 vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php delete mode 100644 vendor/composer/composer/src/Composer/Exception/NoSslException.php delete mode 100644 vendor/composer/composer/src/Composer/Factory.php delete mode 100644 vendor/composer/composer/src/Composer/IO/BaseIO.php delete mode 100644 vendor/composer/composer/src/Composer/IO/BufferIO.php delete mode 100644 vendor/composer/composer/src/Composer/IO/ConsoleIO.php delete mode 100644 vendor/composer/composer/src/Composer/IO/IOInterface.php delete mode 100644 vendor/composer/composer/src/Composer/IO/NullIO.php delete mode 100644 vendor/composer/composer/src/Composer/Installer.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/InstallationManager.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/InstallerEvent.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/InstallerEvents.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/InstallerInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/NoopInstaller.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/PackageEvent.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/PackageEvents.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/PearInstaller.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/PluginInstaller.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php delete mode 100644 vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php delete mode 100644 vendor/composer/composer/src/Composer/Json/JsonFile.php delete mode 100644 vendor/composer/composer/src/Composer/Json/JsonFormatter.php delete mode 100644 vendor/composer/composer/src/Composer/Json/JsonManipulator.php delete mode 100644 vendor/composer/composer/src/Composer/Json/JsonValidationException.php delete mode 100644 vendor/composer/composer/src/Composer/Package/AliasPackage.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php delete mode 100644 vendor/composer/composer/src/Composer/Package/BasePackage.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php delete mode 100644 vendor/composer/composer/src/Composer/Package/CompletePackage.php delete mode 100644 vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Link.php delete mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php delete mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php delete mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php delete mode 100644 vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Locker.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Package.php delete mode 100644 vendor/composer/composer/src/Composer/Package/PackageInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Package/RootAliasPackage.php delete mode 100644 vendor/composer/composer/src/Composer/Package/RootPackage.php delete mode 100644 vendor/composer/composer/src/Composer/Package/RootPackageInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Version/VersionParser.php delete mode 100644 vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/Capable.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/CommandEvent.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/PluginEvents.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/PluginInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/PluginManager.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php delete mode 100644 vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php delete mode 100644 vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/ArrayRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/BaseRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/ComposerRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/CompositeRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/PackageRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/PathRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/PearRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/PlatformRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/RepositoryManager.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/VcsRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php delete mode 100644 vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php delete mode 100644 vendor/composer/composer/src/Composer/Script/CommandEvent.php delete mode 100644 vendor/composer/composer/src/Composer/Script/Event.php delete mode 100644 vendor/composer/composer/src/Composer/Script/PackageEvent.php delete mode 100644 vendor/composer/composer/src/Composer/Script/ScriptEvents.php delete mode 100644 vendor/composer/composer/src/Composer/SelfUpdate/Keys.php delete mode 100644 vendor/composer/composer/src/Composer/SelfUpdate/Versions.php delete mode 100644 vendor/composer/composer/src/Composer/Util/AuthHelper.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Bitbucket.php delete mode 100644 vendor/composer/composer/src/Composer/Util/ComposerMirror.php delete mode 100644 vendor/composer/composer/src/Composer/Util/ConfigValidator.php delete mode 100644 vendor/composer/composer/src/Composer/Util/ErrorHandler.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Filesystem.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Git.php delete mode 100644 vendor/composer/composer/src/Composer/Util/GitHub.php delete mode 100644 vendor/composer/composer/src/Composer/Util/GitLab.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Hg.php delete mode 100644 vendor/composer/composer/src/Composer/Util/IniHelper.php delete mode 100644 vendor/composer/composer/src/Composer/Util/NoProxyPattern.php delete mode 100644 vendor/composer/composer/src/Composer/Util/PackageSorter.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Perforce.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Platform.php delete mode 100644 vendor/composer/composer/src/Composer/Util/ProcessExecutor.php delete mode 100644 vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Silencer.php delete mode 100644 vendor/composer/composer/src/Composer/Util/SpdxLicense.php delete mode 100644 vendor/composer/composer/src/Composer/Util/StreamContextFactory.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Svn.php delete mode 100644 vendor/composer/composer/src/Composer/Util/TlsHelper.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Url.php delete mode 100644 vendor/composer/composer/src/Composer/Util/Zip.php delete mode 100644 vendor/composer/composer/src/Composer/XdebugHandler.php delete mode 100644 vendor/composer/composer/src/bootstrap.php delete mode 100644 vendor/composer/semver/CHANGELOG.md delete mode 100644 vendor/composer/semver/LICENSE delete mode 100644 vendor/composer/semver/README.md delete mode 100644 vendor/composer/semver/composer.json delete mode 100644 vendor/composer/semver/src/Comparator.php delete mode 100644 vendor/composer/semver/src/Constraint/AbstractConstraint.php delete mode 100644 vendor/composer/semver/src/Constraint/Constraint.php delete mode 100644 vendor/composer/semver/src/Constraint/ConstraintInterface.php delete mode 100644 vendor/composer/semver/src/Constraint/EmptyConstraint.php delete mode 100644 vendor/composer/semver/src/Constraint/MultiConstraint.php delete mode 100644 vendor/composer/semver/src/Semver.php delete mode 100644 vendor/composer/semver/src/VersionParser.php delete mode 100644 vendor/composer/spdx-licenses/.php_cs.dist delete mode 100644 vendor/composer/spdx-licenses/CHANGELOG.md delete mode 100644 vendor/composer/spdx-licenses/LICENSE delete mode 100644 vendor/composer/spdx-licenses/README.md delete mode 100644 vendor/composer/spdx-licenses/composer.json delete mode 100644 vendor/composer/spdx-licenses/res/spdx-exceptions.json delete mode 100644 vendor/composer/spdx-licenses/res/spdx-licenses.json delete mode 100644 vendor/composer/spdx-licenses/src/SpdxLicenses.php delete mode 100644 vendor/composer/xdebug-handler/CHANGELOG.md delete mode 100644 vendor/composer/xdebug-handler/LICENSE delete mode 100644 vendor/composer/xdebug-handler/README.md delete mode 100644 vendor/composer/xdebug-handler/composer.json delete mode 100644 vendor/composer/xdebug-handler/src/PhpConfig.php delete mode 100644 vendor/composer/xdebug-handler/src/Process.php delete mode 100644 vendor/composer/xdebug-handler/src/Status.php delete mode 100644 vendor/composer/xdebug-handler/src/XdebugHandler.php diff --git a/vendor/autoload.php b/vendor/autoload.php index 68e172e..4641934 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit2bca884894f5dad38a04fb4589efa493::getLoader(); +return ComposerAutoloaderInitb81212723df6ec6a4125604686c14dbf::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index a52f44e..94f131b 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -6,2805 +6,12 @@ $baseDir = dirname($vendorDir); return array( - 'BaconStringUtils\\Filter\\Slugify' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/Filter/Slugify.php', - 'BaconStringUtils\\Filter\\SlugifyFactory' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/Filter/SlugifyFactory.php', - 'BaconStringUtils\\Module' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/Module.php', - 'BaconStringUtils\\Slugifier' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/Slugifier.php', - 'BaconStringUtils\\SlugifierFactory' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/SlugifierFactory.php', - 'BaconStringUtils\\UniDecoder' => $vendorDir . '/bacon/bacon-string-utils/src/BaconStringUtils/UniDecoder.php', - 'Behat\\Gherkin\\Cache\\CacheInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Cache/CacheInterface.php', - 'Behat\\Gherkin\\Cache\\FileCache' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Cache/FileCache.php', - 'Behat\\Gherkin\\Cache\\MemoryCache' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Cache/MemoryCache.php', - 'Behat\\Gherkin\\Exception\\CacheException' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/CacheException.php', - 'Behat\\Gherkin\\Exception\\Exception' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/Exception.php', - 'Behat\\Gherkin\\Exception\\LexerException' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/LexerException.php', - 'Behat\\Gherkin\\Exception\\NodeException' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/NodeException.php', - 'Behat\\Gherkin\\Exception\\ParserException' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Exception/ParserException.php', - 'Behat\\Gherkin\\Filter\\ComplexFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/ComplexFilter.php', - 'Behat\\Gherkin\\Filter\\ComplexFilterInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/ComplexFilterInterface.php', - 'Behat\\Gherkin\\Filter\\FeatureFilterInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/FeatureFilterInterface.php', - 'Behat\\Gherkin\\Filter\\FilterInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/FilterInterface.php', - 'Behat\\Gherkin\\Filter\\LineFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/LineFilter.php', - 'Behat\\Gherkin\\Filter\\LineRangeFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/LineRangeFilter.php', - 'Behat\\Gherkin\\Filter\\NameFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/NameFilter.php', - 'Behat\\Gherkin\\Filter\\NarrativeFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/NarrativeFilter.php', - 'Behat\\Gherkin\\Filter\\PathsFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/PathsFilter.php', - 'Behat\\Gherkin\\Filter\\RoleFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/RoleFilter.php', - 'Behat\\Gherkin\\Filter\\SimpleFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/SimpleFilter.php', - 'Behat\\Gherkin\\Filter\\TagFilter' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Filter/TagFilter.php', - 'Behat\\Gherkin\\Gherkin' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Gherkin.php', - 'Behat\\Gherkin\\Keywords\\ArrayKeywords' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/ArrayKeywords.php', - 'Behat\\Gherkin\\Keywords\\CachedArrayKeywords' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/CachedArrayKeywords.php', - 'Behat\\Gherkin\\Keywords\\CucumberKeywords' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/CucumberKeywords.php', - 'Behat\\Gherkin\\Keywords\\KeywordsDumper' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/KeywordsDumper.php', - 'Behat\\Gherkin\\Keywords\\KeywordsInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Keywords/KeywordsInterface.php', - 'Behat\\Gherkin\\Lexer' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Lexer.php', - 'Behat\\Gherkin\\Loader\\AbstractFileLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/AbstractFileLoader.php', - 'Behat\\Gherkin\\Loader\\ArrayLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/ArrayLoader.php', - 'Behat\\Gherkin\\Loader\\DirectoryLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/DirectoryLoader.php', - 'Behat\\Gherkin\\Loader\\FileLoaderInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/FileLoaderInterface.php', - 'Behat\\Gherkin\\Loader\\GherkinFileLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/GherkinFileLoader.php', - 'Behat\\Gherkin\\Loader\\LoaderInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/LoaderInterface.php', - 'Behat\\Gherkin\\Loader\\YamlFileLoader' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Loader/YamlFileLoader.php', - 'Behat\\Gherkin\\Node\\ArgumentInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ArgumentInterface.php', - 'Behat\\Gherkin\\Node\\BackgroundNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/BackgroundNode.php', - 'Behat\\Gherkin\\Node\\ExampleNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ExampleNode.php', - 'Behat\\Gherkin\\Node\\ExampleTableNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ExampleTableNode.php', - 'Behat\\Gherkin\\Node\\FeatureNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/FeatureNode.php', - 'Behat\\Gherkin\\Node\\KeywordNodeInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/KeywordNodeInterface.php', - 'Behat\\Gherkin\\Node\\NodeInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/NodeInterface.php', - 'Behat\\Gherkin\\Node\\OutlineNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/OutlineNode.php', - 'Behat\\Gherkin\\Node\\PyStringNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/PyStringNode.php', - 'Behat\\Gherkin\\Node\\ScenarioInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioInterface.php', - 'Behat\\Gherkin\\Node\\ScenarioLikeInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioLikeInterface.php', - 'Behat\\Gherkin\\Node\\ScenarioNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioNode.php', - 'Behat\\Gherkin\\Node\\StepContainerInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/StepContainerInterface.php', - 'Behat\\Gherkin\\Node\\StepNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/StepNode.php', - 'Behat\\Gherkin\\Node\\TableNode' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/TableNode.php', - 'Behat\\Gherkin\\Node\\TaggedNodeInterface' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Node/TaggedNodeInterface.php', - 'Behat\\Gherkin\\Parser' => $vendorDir . '/behat/gherkin/src/Behat/Gherkin/Parser.php', - 'Cache_Command' => $vendorDir . '/wp-cli/cache-command/src/Cache_Command.php', - 'Capabilities_Command' => $vendorDir . '/wp-cli/role-command/src/Capabilities_Command.php', - 'Carbon\\Carbon' => $vendorDir . '/nesbot/carbon/src/Carbon/Carbon.php', - 'Carbon\\CarbonImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonImmutable.php', - 'Carbon\\CarbonInterface' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterface.php', - 'Carbon\\CarbonInterval' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterval.php', - 'Carbon\\CarbonPeriod' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonPeriod.php', - 'Carbon\\CarbonTimeZone' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php', - 'Carbon\\Cli\\Invoker' => $vendorDir . '/nesbot/carbon/src/Carbon/Cli/Invoker.php', - 'Carbon\\Exceptions\\BadUnitException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/BadUnitException.php', - 'Carbon\\Exceptions\\InvalidDateException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php', - 'Carbon\\Exceptions\\NotAPeriodException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php', - 'Carbon\\Exceptions\\NotLocaleAwareException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php', - 'Carbon\\Exceptions\\ParseErrorException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php', - 'Carbon\\Factory' => $vendorDir . '/nesbot/carbon/src/Carbon/Factory.php', - 'Carbon\\FactoryImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/FactoryImmutable.php', - 'Carbon\\Language' => $vendorDir . '/nesbot/carbon/src/Carbon/Language.php', - 'Carbon\\Laravel\\ServiceProvider' => $vendorDir . '/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php', - 'Carbon\\Traits\\Boundaries' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Boundaries.php', - 'Carbon\\Traits\\Cast' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Cast.php', - 'Carbon\\Traits\\Comparison' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Comparison.php', - 'Carbon\\Traits\\Converter' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Converter.php', - 'Carbon\\Traits\\Creator' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Creator.php', - 'Carbon\\Traits\\Date' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Date.php', - 'Carbon\\Traits\\Difference' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Difference.php', - 'Carbon\\Traits\\Localization' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Localization.php', - 'Carbon\\Traits\\Macro' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Macro.php', - 'Carbon\\Traits\\Mixin' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Mixin.php', - 'Carbon\\Traits\\Modifiers' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Modifiers.php', - 'Carbon\\Traits\\Mutability' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Mutability.php', - 'Carbon\\Traits\\ObjectInitialisation' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php', - 'Carbon\\Traits\\Options' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Options.php', - 'Carbon\\Traits\\Rounding' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Rounding.php', - 'Carbon\\Traits\\Serialization' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Serialization.php', - 'Carbon\\Traits\\Test' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Test.php', - 'Carbon\\Traits\\Timestamp' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Timestamp.php', - 'Carbon\\Traits\\Units' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Units.php', - 'Carbon\\Traits\\Week' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Week.php', - 'Carbon\\Translator' => $vendorDir . '/nesbot/carbon/src/Carbon/Translator.php', - 'Checksum_Base_Command' => $vendorDir . '/wp-cli/checksum-command/src/Checksum_Base_Command.php', - 'Checksum_Core_Command' => $vendorDir . '/wp-cli/checksum-command/src/Checksum_Core_Command.php', - 'Checksum_Plugin_Command' => $vendorDir . '/wp-cli/checksum-command/src/Checksum_Plugin_Command.php', - 'Codeception\\Actor' => $vendorDir . '/codeception/codeception/src/Codeception/Actor.php', - 'Codeception\\Application' => $vendorDir . '/codeception/codeception/src/Codeception/Application.php', - 'Codeception\\Codecept' => $vendorDir . '/codeception/codeception/src/Codeception/Codecept.php', - 'Codeception\\Command\\Bootstrap' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Bootstrap.php', - 'Codeception\\Command\\Build' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Build.php', - 'Codeception\\Command\\Clean' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Clean.php', - 'Codeception\\Command\\Completion' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Completion.php', - 'Codeception\\Command\\CompletionFallback' => $vendorDir . '/codeception/codeception/src/Codeception/Command/CompletionFallback.php', - 'Codeception\\Command\\ConfigValidate' => $vendorDir . '/codeception/codeception/src/Codeception/Command/ConfigValidate.php', - 'Codeception\\Command\\Console' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Console.php', - 'Codeception\\Command\\DryRun' => $vendorDir . '/codeception/codeception/src/Codeception/Command/DryRun.php', - 'Codeception\\Command\\GenerateCept' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateCept.php', - 'Codeception\\Command\\GenerateCest' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateCest.php', - 'Codeception\\Command\\GenerateEnvironment' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateEnvironment.php', - 'Codeception\\Command\\GenerateFeature' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateFeature.php', - 'Codeception\\Command\\GenerateGroup' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateGroup.php', - 'Codeception\\Command\\GenerateHelper' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateHelper.php', - 'Codeception\\Command\\GeneratePageObject' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GeneratePageObject.php', - 'Codeception\\Command\\GenerateScenarios' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateScenarios.php', - 'Codeception\\Command\\GenerateSnapshot' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateSnapshot.php', - 'Codeception\\Command\\GenerateStepObject' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateStepObject.php', - 'Codeception\\Command\\GenerateSuite' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateSuite.php', - 'Codeception\\Command\\GenerateTest' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GenerateTest.php', - 'Codeception\\Command\\GenerateWPAjax' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPAjax.php', - 'Codeception\\Command\\GenerateWPCanonical' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPCanonical.php', - 'Codeception\\Command\\GenerateWPRestApi' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestApi.php', - 'Codeception\\Command\\GenerateWPRestController' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestController.php', - 'Codeception\\Command\\GenerateWPRestPostTypeController' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestPostTypeController.php', - 'Codeception\\Command\\GenerateWPUnit' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPUnit.php', - 'Codeception\\Command\\GenerateWPXMLRPC' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPXMLRPC.php', - 'Codeception\\Command\\GherkinSnippets' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GherkinSnippets.php', - 'Codeception\\Command\\GherkinSteps' => $vendorDir . '/codeception/codeception/src/Codeception/Command/GherkinSteps.php', - 'Codeception\\Command\\Init' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Init.php', - 'Codeception\\Command\\Run' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Run.php', - 'Codeception\\Command\\SelfUpdate' => $vendorDir . '/codeception/codeception/src/Codeception/Command/SelfUpdate.php', - 'Codeception\\Command\\Shared\\Config' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Shared/Config.php', - 'Codeception\\Command\\Shared\\FileSystem' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Shared/FileSystem.php', - 'Codeception\\Command\\Shared\\Style' => $vendorDir . '/codeception/codeception/src/Codeception/Command/Shared/Style.php', - 'Codeception\\Configuration' => $vendorDir . '/codeception/codeception/src/Codeception/Configuration.php', - 'Codeception\\Coverage\\Filter' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Filter.php', - 'Codeception\\Coverage\\Subscriber\\Local' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Subscriber/Local.php', - 'Codeception\\Coverage\\Subscriber\\LocalServer' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Subscriber/LocalServer.php', - 'Codeception\\Coverage\\Subscriber\\Printer' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Subscriber/Printer.php', - 'Codeception\\Coverage\\Subscriber\\RemoteServer' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/Subscriber/RemoteServer.php', - 'Codeception\\Coverage\\SuiteSubscriber' => $vendorDir . '/codeception/codeception/src/Codeception/Coverage/SuiteSubscriber.php', - 'Codeception\\CustomCommandInterface' => $vendorDir . '/codeception/codeception/src/Codeception/CustomCommandInterface.php', - 'Codeception\\Event\\FailEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/FailEvent.php', - 'Codeception\\Event\\PrintResultEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/PrintResultEvent.php', - 'Codeception\\Event\\StepEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/StepEvent.php', - 'Codeception\\Event\\SuiteEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/SuiteEvent.php', - 'Codeception\\Event\\TestEvent' => $vendorDir . '/codeception/codeception/src/Codeception/Event/TestEvent.php', - 'Codeception\\Events' => $vendorDir . '/codeception/codeception/src/Codeception/Events.php', - 'Codeception\\Example' => $vendorDir . '/codeception/codeception/src/Codeception/Example.php', - 'Codeception\\Exception\\ConditionalAssertionFailed' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ConditionalAssertionFailed.php', - 'Codeception\\Exception\\ConfigurationException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ConfigurationException.php', - 'Codeception\\Exception\\ConnectionException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ConnectionException.php', - 'Codeception\\Exception\\ContentNotFound' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ContentNotFound.php', - 'Codeception\\Exception\\ElementNotFound' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ElementNotFound.php', - 'Codeception\\Exception\\ExtensionException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ExtensionException.php', - 'Codeception\\Exception\\ExternalUrlException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ExternalUrlException.php', - 'Codeception\\Exception\\Fail' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/Fail.php', - 'Codeception\\Exception\\Incomplete' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/Incomplete.php', - 'Codeception\\Exception\\InjectionException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/InjectionException.php', - 'Codeception\\Exception\\MalformedLocatorException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/MalformedLocatorException.php', - 'Codeception\\Exception\\ModuleConfigException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ModuleConfigException.php', - 'Codeception\\Exception\\ModuleConflictException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ModuleConflictException.php', - 'Codeception\\Exception\\ModuleException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ModuleException.php', - 'Codeception\\Exception\\ModuleRequireException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ModuleRequireException.php', - 'Codeception\\Exception\\ParseException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/ParseException.php', - 'Codeception\\Exception\\RemoteException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/RemoteException.php', - 'Codeception\\Exception\\Skip' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/Skip.php', - 'Codeception\\Exception\\TestParseException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/TestParseException.php', - 'Codeception\\Exception\\TestRuntimeException' => $vendorDir . '/codeception/codeception/src/Codeception/Exception/TestRuntimeException.php', - 'Codeception\\Extension' => $vendorDir . '/codeception/codeception/src/Codeception/Extension.php', - 'Codeception\\Extension\\DotReporter' => $vendorDir . '/codeception/codeception/ext/DotReporter.php', - 'Codeception\\Extension\\Logger' => $vendorDir . '/codeception/codeception/ext/Logger.php', - 'Codeception\\Extension\\Recorder' => $vendorDir . '/codeception/codeception/ext/Recorder.php', - 'Codeception\\Extension\\RunBefore' => $vendorDir . '/codeception/codeception/ext/RunBefore.php', - 'Codeception\\Extension\\RunFailed' => $vendorDir . '/codeception/codeception/ext/RunFailed.php', - 'Codeception\\Extension\\RunProcess' => $vendorDir . '/codeception/codeception/ext/RunProcess.php', - 'Codeception\\Extension\\SimpleReporter' => $vendorDir . '/codeception/codeception/ext/SimpleReporter.php', - 'Codeception\\GroupObject' => $vendorDir . '/codeception/codeception/src/Codeception/GroupObject.php', - 'Codeception\\InitTemplate' => $vendorDir . '/codeception/codeception/src/Codeception/InitTemplate.php', - 'Codeception\\Lib\\Actor\\Shared\\Comment' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Actor/Shared/Comment.php', - 'Codeception\\Lib\\Actor\\Shared\\Friend' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Actor/Shared/Friend.php', - 'Codeception\\Lib\\Connector\\Guzzle' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Guzzle.php', - 'Codeception\\Lib\\Connector\\Guzzle6' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Guzzle6.php', - 'Codeception\\Lib\\Connector\\Laravel5' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Laravel5.php', - 'Codeception\\Lib\\Connector\\Laravel5\\ExceptionHandlerDecorator' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Laravel5/ExceptionHandlerDecorator.php', - 'Codeception\\Lib\\Connector\\Lumen' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Lumen.php', - 'Codeception\\Lib\\Connector\\Lumen\\DummyKernel' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Lumen/DummyKernel.php', - 'Codeception\\Lib\\Connector\\Phalcon' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Phalcon.php', - 'Codeception\\Lib\\Connector\\Phalcon\\MemorySession' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Phalcon/MemorySession.php', - 'Codeception\\Lib\\Connector\\Shared\\LaravelCommon' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Shared/LaravelCommon.php', - 'Codeception\\Lib\\Connector\\Shared\\PhpSuperGlobalsConverter' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Shared/PhpSuperGlobalsConverter.php', - 'Codeception\\Lib\\Connector\\Symfony' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Symfony.php', - 'Codeception\\Lib\\Connector\\Universal' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Universal.php', - 'Codeception\\Lib\\Connector\\Yii1' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii1.php', - 'Codeception\\Lib\\Connector\\Yii2' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2.php', - 'Codeception\\Lib\\Connector\\Yii2\\ConnectionWatcher' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/ConnectionWatcher.php', - 'Codeception\\Lib\\Connector\\Yii2\\FixturesStore' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/FixturesStore.php', - 'Codeception\\Lib\\Connector\\Yii2\\Logger' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/Logger.php', - 'Codeception\\Lib\\Connector\\Yii2\\TestMailer' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/TestMailer.php', - 'Codeception\\Lib\\Connector\\Yii2\\TransactionForcer' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/TransactionForcer.php', - 'Codeception\\Lib\\Connector\\ZF1' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZF1.php', - 'Codeception\\Lib\\Connector\\ZF2' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZF2.php', - 'Codeception\\Lib\\Connector\\ZF2\\PersistentServiceManager' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZF2/PersistentServiceManager.php', - 'Codeception\\Lib\\Connector\\ZendExpressive' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZendExpressive.php', - 'Codeception\\Lib\\Connector\\ZendExpressive\\ResponseCollector' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Connector/ZendExpressive/ResponseCollector.php', - 'Codeception\\Lib\\Console\\Colorizer' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/Colorizer.php', - 'Codeception\\Lib\\Console\\DiffFactory' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/DiffFactory.php', - 'Codeception\\Lib\\Console\\Message' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/Message.php', - 'Codeception\\Lib\\Console\\MessageFactory' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/MessageFactory.php', - 'Codeception\\Lib\\Console\\Output' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Console/Output.php', - 'Codeception\\Lib\\DbPopulator' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/DbPopulator.php', - 'Codeception\\Lib\\Di' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Di.php', - 'Codeception\\Lib\\Driver\\AmazonSQS' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/AmazonSQS.php', - 'Codeception\\Lib\\Driver\\Beanstalk' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Beanstalk.php', - 'Codeception\\Lib\\Driver\\Db' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Db.php', - 'Codeception\\Lib\\Driver\\ExtendedDbDriver' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Driver/ExtendedDbDriver.php', - 'Codeception\\Lib\\Driver\\ExtendedMySql' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Driver/ExtendedMySql.php', - 'Codeception\\Lib\\Driver\\Facebook' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Facebook.php', - 'Codeception\\Lib\\Driver\\Iron' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Iron.php', - 'Codeception\\Lib\\Driver\\MongoDb' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/MongoDb.php', - 'Codeception\\Lib\\Driver\\MySql' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/MySql.php', - 'Codeception\\Lib\\Driver\\Oci' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Oci.php', - 'Codeception\\Lib\\Driver\\PostgreSql' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/PostgreSql.php', - 'Codeception\\Lib\\Driver\\SqlSrv' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/SqlSrv.php', - 'Codeception\\Lib\\Driver\\Sqlite' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Driver/Sqlite.php', - 'Codeception\\Lib\\Framework' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Framework.php', - 'Codeception\\Lib\\Friend' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Friend.php', - 'Codeception\\Lib\\Generator\\AbstractGenerator' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/AbstractGenerator.php', - 'Codeception\\Lib\\Generator\\AcceptanceSuiteConfig' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/AcceptanceSuiteConfig.php', - 'Codeception\\Lib\\Generator\\Actions' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Actions.php', - 'Codeception\\Lib\\Generator\\Actor' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Actor.php', - 'Codeception\\Lib\\Generator\\Cept' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Cept.php', - 'Codeception\\Lib\\Generator\\Cest' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Cest.php', - 'Codeception\\Lib\\Generator\\Feature' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Feature.php', - 'Codeception\\Lib\\Generator\\FunctionalSuiteConfig' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/FunctionalSuiteConfig.php', - 'Codeception\\Lib\\Generator\\GeneratorInterface' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/GeneratorInterface.php', - 'Codeception\\Lib\\Generator\\GherkinSnippets' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/GherkinSnippets.php', - 'Codeception\\Lib\\Generator\\Group' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Group.php', - 'Codeception\\Lib\\Generator\\Helper' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Helper.php', - 'Codeception\\Lib\\Generator\\IntegrationSuiteConfig' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/IntegrationSuiteConfig.php', - 'Codeception\\Lib\\Generator\\IntegrationSuiteThemeConfig' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/IntegrationSuiteThemeConfig.php', - 'Codeception\\Lib\\Generator\\PageObject' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/PageObject.php', - 'Codeception\\Lib\\Generator\\Shared\\Classname' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Shared/Classname.php', - 'Codeception\\Lib\\Generator\\Snapshot' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Snapshot.php', - 'Codeception\\Lib\\Generator\\StepObject' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/StepObject.php', - 'Codeception\\Lib\\Generator\\Test' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Generator/Test.php', - 'Codeception\\Lib\\Generator\\WPUnit' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Lib/Generator/WPUnit.php', - 'Codeception\\Lib\\GroupManager' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/GroupManager.php', - 'Codeception\\Lib\\InnerBrowser' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/InnerBrowser.php', - 'Codeception\\Lib\\Interfaces\\API' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/API.php', - 'Codeception\\Lib\\Interfaces\\ActiveRecord' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ActiveRecord.php', - 'Codeception\\Lib\\Interfaces\\ConflictsWithModule' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ConflictsWithModule.php', - 'Codeception\\Lib\\Interfaces\\DataMapper' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/DataMapper.php', - 'Codeception\\Lib\\Interfaces\\Db' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/Db.php', - 'Codeception\\Lib\\Interfaces\\DependsOnModule' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/DependsOnModule.php', - 'Codeception\\Lib\\Interfaces\\DoctrineProvider' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/DoctrineProvider.php', - 'Codeception\\Lib\\Interfaces\\ElementLocator' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ElementLocator.php', - 'Codeception\\Lib\\Interfaces\\MultiSession' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/MultiSession.php', - 'Codeception\\Lib\\Interfaces\\ORM' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ORM.php', - 'Codeception\\Lib\\Interfaces\\PageSourceSaver' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/PageSourceSaver.php', - 'Codeception\\Lib\\Interfaces\\PartedModule' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/PartedModule.php', - 'Codeception\\Lib\\Interfaces\\Queue' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/Queue.php', - 'Codeception\\Lib\\Interfaces\\Remote' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/Remote.php', - 'Codeception\\Lib\\Interfaces\\RequiresPackage' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/RequiresPackage.php', - 'Codeception\\Lib\\Interfaces\\ScreenshotSaver' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/ScreenshotSaver.php', - 'Codeception\\Lib\\Interfaces\\SessionSnapshot' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/SessionSnapshot.php', - 'Codeception\\Lib\\Interfaces\\Web' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Interfaces/Web.php', - 'Codeception\\Lib\\ModuleContainer' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/ModuleContainer.php', - 'Codeception\\Lib\\Notification' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Notification.php', - 'Codeception\\Lib\\ParamsLoader' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/ParamsLoader.php', - 'Codeception\\Lib\\Parser' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Parser.php', - 'Codeception\\Lib\\Shared\\LaravelCommon' => $vendorDir . '/codeception/codeception/src/Codeception/Lib/Shared/LaravelCommon.php', - 'Codeception\\Module' => $vendorDir . '/codeception/codeception/src/Codeception/Module.php', - 'Codeception\\Module\\AMQP' => $vendorDir . '/codeception/codeception/src/Codeception/Module/AMQP.php', - 'Codeception\\Module\\AngularJS' => $vendorDir . '/codeception/codeception/src/Codeception/Module/AngularJS.php', - 'Codeception\\Module\\Apc' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Apc.php', - 'Codeception\\Module\\Asserts' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Asserts.php', - 'Codeception\\Module\\Cli' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Cli.php', - 'Codeception\\Module\\DataFactory' => $vendorDir . '/codeception/codeception/src/Codeception/Module/DataFactory.php', - 'Codeception\\Module\\Db' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Db.php', - 'Codeception\\Module\\Doctrine2' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Doctrine2.php', - 'Codeception\\Module\\FTP' => $vendorDir . '/codeception/codeception/src/Codeception/Module/FTP.php', - 'Codeception\\Module\\Facebook' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Facebook.php', - 'Codeception\\Module\\Filesystem' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Filesystem.php', - 'Codeception\\Module\\Laravel5' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Laravel5.php', - 'Codeception\\Module\\Lumen' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Lumen.php', - 'Codeception\\Module\\Memcache' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Memcache.php', - 'Codeception\\Module\\MongoDb' => $vendorDir . '/codeception/codeception/src/Codeception/Module/MongoDb.php', - 'Codeception\\Module\\Phalcon' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Phalcon.php', - 'Codeception\\Module\\PhpBrowser' => $vendorDir . '/codeception/codeception/src/Codeception/Module/PhpBrowser.php', - 'Codeception\\Module\\Queue' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Queue.php', - 'Codeception\\Module\\REST' => $vendorDir . '/codeception/codeception/src/Codeception/Module/REST.php', - 'Codeception\\Module\\Redis' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Redis.php', - 'Codeception\\Module\\SOAP' => $vendorDir . '/codeception/codeception/src/Codeception/Module/SOAP.php', - 'Codeception\\Module\\Sequence' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Sequence.php', - 'Codeception\\Module\\Silex' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Silex.php', - 'Codeception\\Module\\Symfony' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Symfony.php', - 'Codeception\\Module\\WPBrowser' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPBrowser.php', - 'Codeception\\Module\\WPBrowserMethods' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPBrowserMethods.php', - 'Codeception\\Module\\WPCLI' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPCLI.php', - 'Codeception\\Module\\WPDb' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPDb.php', - 'Codeception\\Module\\WPFilesystem' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPFilesystem.php', - 'Codeception\\Module\\WPLoader' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPLoader.php', - 'Codeception\\Module\\WPQueries' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPQueries.php', - 'Codeception\\Module\\WPWebDriver' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WPWebDriver.php', - 'Codeception\\Module\\WebDriver' => $vendorDir . '/codeception/codeception/src/Codeception/Module/WebDriver.php', - 'Codeception\\Module\\WordPress' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Module/WordPress.php', - 'Codeception\\Module\\XMLRPC' => $vendorDir . '/codeception/codeception/src/Codeception/Module/XMLRPC.php', - 'Codeception\\Module\\Yii1' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Yii1.php', - 'Codeception\\Module\\Yii2' => $vendorDir . '/codeception/codeception/src/Codeception/Module/Yii2.php', - 'Codeception\\Module\\ZF1' => $vendorDir . '/codeception/codeception/src/Codeception/Module/ZF1.php', - 'Codeception\\Module\\ZF2' => $vendorDir . '/codeception/codeception/src/Codeception/Module/ZF2.php', - 'Codeception\\Module\\ZendExpressive' => $vendorDir . '/codeception/codeception/src/Codeception/Module/ZendExpressive.php', - 'Codeception\\PHPUnit\\ConsolePrinter' => $vendorDir . '/codeception/phpunit-wrapper/src/ConsolePrinter.php', - 'Codeception\\PHPUnit\\Constraint\\Crawler' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/Crawler.php', - 'Codeception\\PHPUnit\\Constraint\\CrawlerNot' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/CrawlerNot.php', - 'Codeception\\PHPUnit\\Constraint\\JsonContains' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/JsonContains.php', - 'Codeception\\PHPUnit\\Constraint\\JsonType' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/JsonType.php', - 'Codeception\\PHPUnit\\Constraint\\Page' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/Page.php', - 'Codeception\\PHPUnit\\Constraint\\WebDriver' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/WebDriver.php', - 'Codeception\\PHPUnit\\Constraint\\WebDriverNot' => $vendorDir . '/codeception/phpunit-wrapper/src/Constraint/WebDriverNot.php', - 'Codeception\\PHPUnit\\DispatcherWrapper' => $vendorDir . '/codeception/phpunit-wrapper/src/DispatcherWrapper.php', - 'Codeception\\PHPUnit\\FilterTest' => $vendorDir . '/codeception/phpunit-wrapper/src/FilterTest.php', - 'Codeception\\PHPUnit\\Init' => $vendorDir . '/codeception/phpunit-wrapper/src/Init.php', - 'Codeception\\PHPUnit\\Listener' => $vendorDir . '/codeception/phpunit-wrapper/src/Listener.php', - 'Codeception\\PHPUnit\\Log\\JUnit' => $vendorDir . '/codeception/phpunit-wrapper/src/Log/JUnit.php', - 'Codeception\\PHPUnit\\Log\\PhpUnit' => $vendorDir . '/codeception/phpunit-wrapper/src/Log/PhpUnit.php', - 'Codeception\\PHPUnit\\ResultPrinter' => $vendorDir . '/codeception/phpunit-wrapper/src/ResultPrinter.php', - 'Codeception\\PHPUnit\\ResultPrinter\\HTML' => $vendorDir . '/codeception/phpunit-wrapper/src/ResultPrinter/HTML.php', - 'Codeception\\PHPUnit\\ResultPrinter\\Report' => $vendorDir . '/codeception/phpunit-wrapper/src/ResultPrinter/Report.php', - 'Codeception\\PHPUnit\\ResultPrinter\\UI' => $vendorDir . '/codeception/phpunit-wrapper/src/ResultPrinter/UI.php', - 'Codeception\\PHPUnit\\Runner' => $vendorDir . '/codeception/phpunit-wrapper/src/Runner.php', - 'Codeception\\PHPUnit\\TestCase' => $vendorDir . '/codeception/phpunit-wrapper/src/TestCase.php', - 'Codeception\\Scenario' => $vendorDir . '/codeception/codeception/src/Codeception/Scenario.php', - 'Codeception\\Snapshot' => $vendorDir . '/codeception/codeception/src/Codeception/Snapshot.php', - 'Codeception\\Step' => $vendorDir . '/codeception/codeception/src/Codeception/Step.php', - 'Codeception\\Step\\Action' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Action.php', - 'Codeception\\Step\\Argument\\FormattedOutput' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Argument/FormattedOutput.php', - 'Codeception\\Step\\Argument\\PasswordArgument' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Argument/PasswordArgument.php', - 'Codeception\\Step\\Assertion' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Assertion.php', - 'Codeception\\Step\\Comment' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Comment.php', - 'Codeception\\Step\\Condition' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Condition.php', - 'Codeception\\Step\\ConditionalAssertion' => $vendorDir . '/codeception/codeception/src/Codeception/Step/ConditionalAssertion.php', - 'Codeception\\Step\\Executor' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Executor.php', - 'Codeception\\Step\\Incomplete' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Incomplete.php', - 'Codeception\\Step\\Meta' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Meta.php', - 'Codeception\\Step\\Skip' => $vendorDir . '/codeception/codeception/src/Codeception/Step/Skip.php', - 'Codeception\\Stub' => $vendorDir . '/codeception/stub/src/Stub.php', - 'Codeception\\Stub\\ConsecutiveMap' => $vendorDir . '/codeception/stub/src/Stub/ConsecutiveMap.php', - 'Codeception\\Stub\\Expected' => $vendorDir . '/codeception/stub/src/Stub/Expected.php', - 'Codeception\\Stub\\StubMarshaler' => $vendorDir . '/codeception/stub/src/Stub/StubMarshaler.php', - 'Codeception\\Subscriber\\AutoRebuild' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/AutoRebuild.php', - 'Codeception\\Subscriber\\BeforeAfterTest' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/BeforeAfterTest.php', - 'Codeception\\Subscriber\\Bootstrap' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Bootstrap.php', - 'Codeception\\Subscriber\\Console' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Console.php', - 'Codeception\\Subscriber\\Dependencies' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Dependencies.php', - 'Codeception\\Subscriber\\ErrorHandler' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/ErrorHandler.php', - 'Codeception\\Subscriber\\ExtensionLoader' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/ExtensionLoader.php', - 'Codeception\\Subscriber\\FailFast' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/FailFast.php', - 'Codeception\\Subscriber\\GracefulTermination' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/GracefulTermination.php', - 'Codeception\\Subscriber\\Module' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Module.php', - 'Codeception\\Subscriber\\PrepareTest' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/PrepareTest.php', - 'Codeception\\Subscriber\\Shared\\StaticEvents' => $vendorDir . '/codeception/codeception/src/Codeception/Subscriber/Shared/StaticEvents.php', - 'Codeception\\Suite' => $vendorDir . '/codeception/codeception/src/Codeception/Suite.php', - 'Codeception\\SuiteManager' => $vendorDir . '/codeception/codeception/src/Codeception/SuiteManager.php', - 'Codeception\\Template\\Acceptance' => $vendorDir . '/codeception/codeception/src/Codeception/Template/Acceptance.php', - 'Codeception\\Template\\Api' => $vendorDir . '/codeception/codeception/src/Codeception/Template/Api.php', - 'Codeception\\Template\\Bootstrap' => $vendorDir . '/codeception/codeception/src/Codeception/Template/Bootstrap.php', - 'Codeception\\Template\\Unit' => $vendorDir . '/codeception/codeception/src/Codeception/Template/Unit.php', - 'Codeception\\Template\\Wpbrowser' => $vendorDir . '/lucatume/wp-browser/src/Codeception/Template/Wpbrowser.php', - 'Codeception\\TestCase\\WPAjaxTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPAjaxTestCase.php', - 'Codeception\\TestCase\\WPCanonicalTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPCanonicalTestCase.php', - 'Codeception\\TestCase\\WPRestApiTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestApiTestCase.php', - 'Codeception\\TestCase\\WPRestControllerTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestControllerTestCase.php', - 'Codeception\\TestCase\\WPRestPostTypeControllerTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestPostTypeControllerTestCase.php', - 'Codeception\\TestCase\\WPTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPTestCase.php', - 'Codeception\\TestCase\\WPXMLRPCTestCase' => $vendorDir . '/lucatume/wp-browser/src/Codeception/TestCase/WPXMLRPCTestCase.php', - 'Codeception\\TestInterface' => $vendorDir . '/codeception/codeception/src/Codeception/TestInterface.php', - 'Codeception\\Test\\Cept' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Cept.php', - 'Codeception\\Test\\Cest' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Cest.php', - 'Codeception\\Test\\Descriptor' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Descriptor.php', - 'Codeception\\Test\\Feature\\AssertionCounter' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/AssertionCounter.php', - 'Codeception\\Test\\Feature\\CodeCoverage' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/CodeCoverage.php', - 'Codeception\\Test\\Feature\\ErrorLogger' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/ErrorLogger.php', - 'Codeception\\Test\\Feature\\IgnoreIfMetadataBlocked' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/IgnoreIfMetadataBlocked.php', - 'Codeception\\Test\\Feature\\MetadataCollector' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/MetadataCollector.php', - 'Codeception\\Test\\Feature\\ScenarioLoader' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Feature/ScenarioLoader.php', - 'Codeception\\Test\\Feature\\Stub' => $vendorDir . '/codeception/stub/src/Test/Feature/Stub.php', - 'Codeception\\Test\\Gherkin' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Gherkin.php', - 'Codeception\\Test\\Interfaces\\Dependent' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/Dependent.php', - 'Codeception\\Test\\Interfaces\\Descriptive' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/Descriptive.php', - 'Codeception\\Test\\Interfaces\\Plain' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/Plain.php', - 'Codeception\\Test\\Interfaces\\Reported' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/Reported.php', - 'Codeception\\Test\\Interfaces\\ScenarioDriven' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/ScenarioDriven.php', - 'Codeception\\Test\\Interfaces\\StrictCoverage' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Interfaces/StrictCoverage.php', - 'Codeception\\Test\\Loader' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader.php', - 'Codeception\\Test\\Loader\\Cept' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/Cept.php', - 'Codeception\\Test\\Loader\\Cest' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/Cest.php', - 'Codeception\\Test\\Loader\\Gherkin' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/Gherkin.php', - 'Codeception\\Test\\Loader\\LoaderInterface' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/LoaderInterface.php', - 'Codeception\\Test\\Loader\\Unit' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Loader/Unit.php', - 'Codeception\\Test\\Metadata' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Metadata.php', - 'Codeception\\Test\\Test' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Test.php', - 'Codeception\\Test\\Unit' => $vendorDir . '/codeception/codeception/src/Codeception/Test/Unit.php', - 'Codeception\\Util\\ActionSequence' => $vendorDir . '/codeception/codeception/src/Codeception/Util/ActionSequence.php', - 'Codeception\\Util\\Annotation' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Annotation.php', - 'Codeception\\Util\\ArrayContainsComparator' => $vendorDir . '/codeception/codeception/src/Codeception/Util/ArrayContainsComparator.php', - 'Codeception\\Util\\Autoload' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Autoload.php', - 'Codeception\\Util\\Debug' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Debug.php', - 'Codeception\\Util\\FileSystem' => $vendorDir . '/codeception/codeception/src/Codeception/Util/FileSystem.php', - 'Codeception\\Util\\Fixtures' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Fixtures.php', - 'Codeception\\Util\\HttpCode' => $vendorDir . '/codeception/codeception/src/Codeception/Util/HttpCode.php', - 'Codeception\\Util\\JsonArray' => $vendorDir . '/codeception/codeception/src/Codeception/Util/JsonArray.php', - 'Codeception\\Util\\JsonType' => $vendorDir . '/codeception/codeception/src/Codeception/Util/JsonType.php', - 'Codeception\\Util\\Locator' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Locator.php', - 'Codeception\\Util\\Maybe' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Maybe.php', - 'Codeception\\Util\\PathResolver' => $vendorDir . '/codeception/codeception/src/Codeception/Util/PathResolver.php', - 'Codeception\\Util\\PropertyAccess' => $vendorDir . '/codeception/codeception/src/Codeception/Util/PropertyAccess.php', - 'Codeception\\Util\\ReflectionHelper' => $vendorDir . '/codeception/codeception/src/Codeception/Util/ReflectionHelper.php', - 'Codeception\\Util\\Shared\\Asserts' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Shared/Asserts.php', - 'Codeception\\Util\\Shared\\Namespaces' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Shared/Namespaces.php', - 'Codeception\\Util\\Soap' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Soap.php', - 'Codeception\\Util\\Stub' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Stub.php', - 'Codeception\\Util\\Template' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Template.php', - 'Codeception\\Util\\Uri' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Uri.php', - 'Codeception\\Util\\Xml' => $vendorDir . '/codeception/codeception/src/Codeception/Util/Xml.php', - 'Codeception\\Util\\XmlBuilder' => $vendorDir . '/codeception/codeception/src/Codeception/Util/XmlBuilder.php', - 'Codeception\\Util\\XmlStructure' => $vendorDir . '/codeception/codeception/src/Codeception/Util/XmlStructure.php', - 'Comment_Command' => $vendorDir . '/wp-cli/entity-command/src/Comment_Command.php', - 'Comment_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Comment_Meta_Command.php', - 'Composer\\Autoload\\AutoloadGenerator' => $vendorDir . '/composer/composer/src/Composer/Autoload/AutoloadGenerator.php', - 'Composer\\Autoload\\ClassLoader' => $vendorDir . '/composer/composer/src/Composer/Autoload/ClassLoader.php', - 'Composer\\Autoload\\ClassMapGenerator' => $vendorDir . '/composer/composer/src/Composer/Autoload/ClassMapGenerator.php', - 'Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php', - 'Composer\\Cache' => $vendorDir . '/composer/composer/src/Composer/Cache.php', - 'Composer\\Command\\AboutCommand' => $vendorDir . '/composer/composer/src/Composer/Command/AboutCommand.php', - 'Composer\\Command\\ArchiveCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ArchiveCommand.php', - 'Composer\\Command\\BaseCommand' => $vendorDir . '/composer/composer/src/Composer/Command/BaseCommand.php', - 'Composer\\Command\\BaseDependencyCommand' => $vendorDir . '/composer/composer/src/Composer/Command/BaseDependencyCommand.php', - 'Composer\\Command\\CheckPlatformReqsCommand' => $vendorDir . '/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php', - 'Composer\\Command\\ClearCacheCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ClearCacheCommand.php', - 'Composer\\Command\\ConfigCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ConfigCommand.php', - 'Composer\\Command\\CreateProjectCommand' => $vendorDir . '/composer/composer/src/Composer/Command/CreateProjectCommand.php', - 'Composer\\Command\\DependsCommand' => $vendorDir . '/composer/composer/src/Composer/Command/DependsCommand.php', - 'Composer\\Command\\DiagnoseCommand' => $vendorDir . '/composer/composer/src/Composer/Command/DiagnoseCommand.php', - 'Composer\\Command\\DumpAutoloadCommand' => $vendorDir . '/composer/composer/src/Composer/Command/DumpAutoloadCommand.php', - 'Composer\\Command\\ExecCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ExecCommand.php', - 'Composer\\Command\\GlobalCommand' => $vendorDir . '/composer/composer/src/Composer/Command/GlobalCommand.php', - 'Composer\\Command\\HomeCommand' => $vendorDir . '/composer/composer/src/Composer/Command/HomeCommand.php', - 'Composer\\Command\\InitCommand' => $vendorDir . '/composer/composer/src/Composer/Command/InitCommand.php', - 'Composer\\Command\\InstallCommand' => $vendorDir . '/composer/composer/src/Composer/Command/InstallCommand.php', - 'Composer\\Command\\LicensesCommand' => $vendorDir . '/composer/composer/src/Composer/Command/LicensesCommand.php', - 'Composer\\Command\\OutdatedCommand' => $vendorDir . '/composer/composer/src/Composer/Command/OutdatedCommand.php', - 'Composer\\Command\\ProhibitsCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ProhibitsCommand.php', - 'Composer\\Command\\RemoveCommand' => $vendorDir . '/composer/composer/src/Composer/Command/RemoveCommand.php', - 'Composer\\Command\\RequireCommand' => $vendorDir . '/composer/composer/src/Composer/Command/RequireCommand.php', - 'Composer\\Command\\RunScriptCommand' => $vendorDir . '/composer/composer/src/Composer/Command/RunScriptCommand.php', - 'Composer\\Command\\ScriptAliasCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ScriptAliasCommand.php', - 'Composer\\Command\\SearchCommand' => $vendorDir . '/composer/composer/src/Composer/Command/SearchCommand.php', - 'Composer\\Command\\SelfUpdateCommand' => $vendorDir . '/composer/composer/src/Composer/Command/SelfUpdateCommand.php', - 'Composer\\Command\\ShowCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ShowCommand.php', - 'Composer\\Command\\StatusCommand' => $vendorDir . '/composer/composer/src/Composer/Command/StatusCommand.php', - 'Composer\\Command\\SuggestsCommand' => $vendorDir . '/composer/composer/src/Composer/Command/SuggestsCommand.php', - 'Composer\\Command\\UpdateCommand' => $vendorDir . '/composer/composer/src/Composer/Command/UpdateCommand.php', - 'Composer\\Command\\ValidateCommand' => $vendorDir . '/composer/composer/src/Composer/Command/ValidateCommand.php', - 'Composer\\Compiler' => $vendorDir . '/composer/composer/src/Composer/Compiler.php', - 'Composer\\Composer' => $vendorDir . '/composer/composer/src/Composer/Composer.php', - 'Composer\\Config' => $vendorDir . '/composer/composer/src/Composer/Config.php', - 'Composer\\Config\\ConfigSourceInterface' => $vendorDir . '/composer/composer/src/Composer/Config/ConfigSourceInterface.php', - 'Composer\\Config\\JsonConfigSource' => $vendorDir . '/composer/composer/src/Composer/Config/JsonConfigSource.php', - 'Composer\\Console\\Application' => $vendorDir . '/composer/composer/src/Composer/Console/Application.php', - 'Composer\\Console\\HtmlOutputFormatter' => $vendorDir . '/composer/composer/src/Composer/Console/HtmlOutputFormatter.php', - 'Composer\\DependencyResolver\\Decisions' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Decisions.php', - 'Composer\\DependencyResolver\\DefaultPolicy' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php', - 'Composer\\DependencyResolver\\GenericRule' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/GenericRule.php', - 'Composer\\DependencyResolver\\Operation\\InstallOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php', - 'Composer\\DependencyResolver\\Operation\\MarkAliasInstalledOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php', - 'Composer\\DependencyResolver\\Operation\\MarkAliasUninstalledOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php', - 'Composer\\DependencyResolver\\Operation\\OperationInterface' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php', - 'Composer\\DependencyResolver\\Operation\\SolverOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php', - 'Composer\\DependencyResolver\\Operation\\UninstallOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php', - 'Composer\\DependencyResolver\\Operation\\UpdateOperation' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php', - 'Composer\\DependencyResolver\\PolicyInterface' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php', - 'Composer\\DependencyResolver\\Pool' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Pool.php', - 'Composer\\DependencyResolver\\Problem' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Problem.php', - 'Composer\\DependencyResolver\\Request' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Request.php', - 'Composer\\DependencyResolver\\Rule' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Rule.php', - 'Composer\\DependencyResolver\\Rule2Literals' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php', - 'Composer\\DependencyResolver\\RuleSet' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleSet.php', - 'Composer\\DependencyResolver\\RuleSetGenerator' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php', - 'Composer\\DependencyResolver\\RuleSetIterator' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php', - 'Composer\\DependencyResolver\\RuleWatchChain' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php', - 'Composer\\DependencyResolver\\RuleWatchGraph' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php', - 'Composer\\DependencyResolver\\RuleWatchNode' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php', - 'Composer\\DependencyResolver\\Solver' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Solver.php', - 'Composer\\DependencyResolver\\SolverBugException' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/SolverBugException.php', - 'Composer\\DependencyResolver\\SolverProblemsException' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php', - 'Composer\\DependencyResolver\\Transaction' => $vendorDir . '/composer/composer/src/Composer/DependencyResolver/Transaction.php', - 'Composer\\Downloader\\ArchiveDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/ArchiveDownloader.php', - 'Composer\\Downloader\\ChangeReportInterface' => $vendorDir . '/composer/composer/src/Composer/Downloader/ChangeReportInterface.php', - 'Composer\\Downloader\\DownloadManager' => $vendorDir . '/composer/composer/src/Composer/Downloader/DownloadManager.php', - 'Composer\\Downloader\\DownloaderInterface' => $vendorDir . '/composer/composer/src/Composer/Downloader/DownloaderInterface.php', - 'Composer\\Downloader\\DvcsDownloaderInterface' => $vendorDir . '/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php', - 'Composer\\Downloader\\FileDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/FileDownloader.php', - 'Composer\\Downloader\\FilesystemException' => $vendorDir . '/composer/composer/src/Composer/Downloader/FilesystemException.php', - 'Composer\\Downloader\\FossilDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/FossilDownloader.php', - 'Composer\\Downloader\\GitDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/GitDownloader.php', - 'Composer\\Downloader\\GzipDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/GzipDownloader.php', - 'Composer\\Downloader\\HgDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/HgDownloader.php', - 'Composer\\Downloader\\PathDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/PathDownloader.php', - 'Composer\\Downloader\\PearPackageExtractor' => $vendorDir . '/composer/composer/src/Composer/Downloader/PearPackageExtractor.php', - 'Composer\\Downloader\\PerforceDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/PerforceDownloader.php', - 'Composer\\Downloader\\PharDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/PharDownloader.php', - 'Composer\\Downloader\\RarDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/RarDownloader.php', - 'Composer\\Downloader\\SvnDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/SvnDownloader.php', - 'Composer\\Downloader\\TarDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/TarDownloader.php', - 'Composer\\Downloader\\TransportException' => $vendorDir . '/composer/composer/src/Composer/Downloader/TransportException.php', - 'Composer\\Downloader\\VcsCapableDownloaderInterface' => $vendorDir . '/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php', - 'Composer\\Downloader\\VcsDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/VcsDownloader.php', - 'Composer\\Downloader\\XzDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/XzDownloader.php', - 'Composer\\Downloader\\ZipDownloader' => $vendorDir . '/composer/composer/src/Composer/Downloader/ZipDownloader.php', - 'Composer\\EventDispatcher\\Event' => $vendorDir . '/composer/composer/src/Composer/EventDispatcher/Event.php', - 'Composer\\EventDispatcher\\EventDispatcher' => $vendorDir . '/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php', - 'Composer\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php', - 'Composer\\EventDispatcher\\ScriptExecutionException' => $vendorDir . '/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php', - 'Composer\\Exception\\NoSslException' => $vendorDir . '/composer/composer/src/Composer/Exception/NoSslException.php', - 'Composer\\Factory' => $vendorDir . '/composer/composer/src/Composer/Factory.php', - 'Composer\\IO\\BaseIO' => $vendorDir . '/composer/composer/src/Composer/IO/BaseIO.php', - 'Composer\\IO\\BufferIO' => $vendorDir . '/composer/composer/src/Composer/IO/BufferIO.php', - 'Composer\\IO\\ConsoleIO' => $vendorDir . '/composer/composer/src/Composer/IO/ConsoleIO.php', - 'Composer\\IO\\IOInterface' => $vendorDir . '/composer/composer/src/Composer/IO/IOInterface.php', - 'Composer\\IO\\NullIO' => $vendorDir . '/composer/composer/src/Composer/IO/NullIO.php', - 'Composer\\Installer' => $vendorDir . '/composer/composer/src/Composer/Installer.php', - 'Composer\\Installer\\BinaryInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/BinaryInstaller.php', - 'Composer\\Installer\\BinaryPresenceInterface' => $vendorDir . '/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php', - 'Composer\\Installer\\InstallationManager' => $vendorDir . '/composer/composer/src/Composer/Installer/InstallationManager.php', - 'Composer\\Installer\\InstallerEvent' => $vendorDir . '/composer/composer/src/Composer/Installer/InstallerEvent.php', - 'Composer\\Installer\\InstallerEvents' => $vendorDir . '/composer/composer/src/Composer/Installer/InstallerEvents.php', - 'Composer\\Installer\\InstallerInterface' => $vendorDir . '/composer/composer/src/Composer/Installer/InstallerInterface.php', - 'Composer\\Installer\\LibraryInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/LibraryInstaller.php', - 'Composer\\Installer\\MetapackageInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/MetapackageInstaller.php', - 'Composer\\Installer\\NoopInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/NoopInstaller.php', - 'Composer\\Installer\\PackageEvent' => $vendorDir . '/composer/composer/src/Composer/Installer/PackageEvent.php', - 'Composer\\Installer\\PackageEvents' => $vendorDir . '/composer/composer/src/Composer/Installer/PackageEvents.php', - 'Composer\\Installer\\PearBinaryInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/PearBinaryInstaller.php', - 'Composer\\Installer\\PearInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/PearInstaller.php', - 'Composer\\Installer\\PluginInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/PluginInstaller.php', - 'Composer\\Installer\\ProjectInstaller' => $vendorDir . '/composer/composer/src/Composer/Installer/ProjectInstaller.php', - 'Composer\\Installer\\SuggestedPackagesReporter' => $vendorDir . '/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php', - 'Composer\\Json\\JsonFile' => $vendorDir . '/composer/composer/src/Composer/Json/JsonFile.php', - 'Composer\\Json\\JsonFormatter' => $vendorDir . '/composer/composer/src/Composer/Json/JsonFormatter.php', - 'Composer\\Json\\JsonManipulator' => $vendorDir . '/composer/composer/src/Composer/Json/JsonManipulator.php', - 'Composer\\Json\\JsonValidationException' => $vendorDir . '/composer/composer/src/Composer/Json/JsonValidationException.php', - 'Composer\\Package\\AliasPackage' => $vendorDir . '/composer/composer/src/Composer/Package/AliasPackage.php', - 'Composer\\Package\\Archiver\\ArchivableFilesFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php', - 'Composer\\Package\\Archiver\\ArchivableFilesFinder' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php', - 'Composer\\Package\\Archiver\\ArchiveManager' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php', - 'Composer\\Package\\Archiver\\ArchiverInterface' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php', - 'Composer\\Package\\Archiver\\BaseExcludeFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php', - 'Composer\\Package\\Archiver\\ComposerExcludeFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php', - 'Composer\\Package\\Archiver\\GitExcludeFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php', - 'Composer\\Package\\Archiver\\HgExcludeFilter' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php', - 'Composer\\Package\\Archiver\\PharArchiver' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/PharArchiver.php', - 'Composer\\Package\\Archiver\\ZipArchiver' => $vendorDir . '/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php', - 'Composer\\Package\\BasePackage' => $vendorDir . '/composer/composer/src/Composer/Package/BasePackage.php', - 'Composer\\Package\\Comparer\\Comparer' => $vendorDir . '/composer/composer/src/Composer/Package/Comparer/Comparer.php', - 'Composer\\Package\\CompletePackage' => $vendorDir . '/composer/composer/src/Composer/Package/CompletePackage.php', - 'Composer\\Package\\CompletePackageInterface' => $vendorDir . '/composer/composer/src/Composer/Package/CompletePackageInterface.php', - 'Composer\\Package\\Dumper\\ArrayDumper' => $vendorDir . '/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php', - 'Composer\\Package\\Link' => $vendorDir . '/composer/composer/src/Composer/Package/Link.php', - 'Composer\\Package\\LinkConstraint\\EmptyConstraint' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php', - 'Composer\\Package\\LinkConstraint\\LinkConstraintInterface' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php', - 'Composer\\Package\\LinkConstraint\\MultiConstraint' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php', - 'Composer\\Package\\LinkConstraint\\SpecificConstraint' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php', - 'Composer\\Package\\LinkConstraint\\VersionConstraint' => $vendorDir . '/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php', - 'Composer\\Package\\Loader\\ArrayLoader' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/ArrayLoader.php', - 'Composer\\Package\\Loader\\InvalidPackageException' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php', - 'Composer\\Package\\Loader\\JsonLoader' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/JsonLoader.php', - 'Composer\\Package\\Loader\\LoaderInterface' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/LoaderInterface.php', - 'Composer\\Package\\Loader\\RootPackageLoader' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php', - 'Composer\\Package\\Loader\\ValidatingArrayLoader' => $vendorDir . '/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php', - 'Composer\\Package\\Locker' => $vendorDir . '/composer/composer/src/Composer/Package/Locker.php', - 'Composer\\Package\\Package' => $vendorDir . '/composer/composer/src/Composer/Package/Package.php', - 'Composer\\Package\\PackageInterface' => $vendorDir . '/composer/composer/src/Composer/Package/PackageInterface.php', - 'Composer\\Package\\RootAliasPackage' => $vendorDir . '/composer/composer/src/Composer/Package/RootAliasPackage.php', - 'Composer\\Package\\RootPackage' => $vendorDir . '/composer/composer/src/Composer/Package/RootPackage.php', - 'Composer\\Package\\RootPackageInterface' => $vendorDir . '/composer/composer/src/Composer/Package/RootPackageInterface.php', - 'Composer\\Package\\Version\\VersionGuesser' => $vendorDir . '/composer/composer/src/Composer/Package/Version/VersionGuesser.php', - 'Composer\\Package\\Version\\VersionParser' => $vendorDir . '/composer/composer/src/Composer/Package/Version/VersionParser.php', - 'Composer\\Package\\Version\\VersionSelector' => $vendorDir . '/composer/composer/src/Composer/Package/Version/VersionSelector.php', - 'Composer\\Plugin\\Capability\\Capability' => $vendorDir . '/composer/composer/src/Composer/Plugin/Capability/Capability.php', - 'Composer\\Plugin\\Capability\\CommandProvider' => $vendorDir . '/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php', - 'Composer\\Plugin\\Capable' => $vendorDir . '/composer/composer/src/Composer/Plugin/Capable.php', - 'Composer\\Plugin\\CommandEvent' => $vendorDir . '/composer/composer/src/Composer/Plugin/CommandEvent.php', - 'Composer\\Plugin\\PluginEvents' => $vendorDir . '/composer/composer/src/Composer/Plugin/PluginEvents.php', - 'Composer\\Plugin\\PluginInterface' => $vendorDir . '/composer/composer/src/Composer/Plugin/PluginInterface.php', - 'Composer\\Plugin\\PluginManager' => $vendorDir . '/composer/composer/src/Composer/Plugin/PluginManager.php', - 'Composer\\Plugin\\PreCommandRunEvent' => $vendorDir . '/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php', - 'Composer\\Plugin\\PreFileDownloadEvent' => $vendorDir . '/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php', - 'Composer\\Question\\StrictConfirmationQuestion' => $vendorDir . '/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php', - 'Composer\\Repository\\ArrayRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/ArrayRepository.php', - 'Composer\\Repository\\ArtifactRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/ArtifactRepository.php', - 'Composer\\Repository\\BaseRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/BaseRepository.php', - 'Composer\\Repository\\ComposerRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/ComposerRepository.php', - 'Composer\\Repository\\CompositeRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/CompositeRepository.php', - 'Composer\\Repository\\ConfigurableRepositoryInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php', - 'Composer\\Repository\\FilesystemRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/FilesystemRepository.php', - 'Composer\\Repository\\InstalledArrayRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/InstalledArrayRepository.php', - 'Composer\\Repository\\InstalledFilesystemRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php', - 'Composer\\Repository\\InstalledRepositoryInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php', - 'Composer\\Repository\\InvalidRepositoryException' => $vendorDir . '/composer/composer/src/Composer/Repository/InvalidRepositoryException.php', - 'Composer\\Repository\\PackageRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/PackageRepository.php', - 'Composer\\Repository\\PathRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/PathRepository.php', - 'Composer\\Repository\\PearRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/PearRepository.php', - 'Composer\\Repository\\Pear\\BaseChannelReader' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php', - 'Composer\\Repository\\Pear\\ChannelInfo' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php', - 'Composer\\Repository\\Pear\\ChannelReader' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ChannelReader.php', - 'Composer\\Repository\\Pear\\ChannelRest10Reader' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php', - 'Composer\\Repository\\Pear\\ChannelRest11Reader' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php', - 'Composer\\Repository\\Pear\\DependencyConstraint' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php', - 'Composer\\Repository\\Pear\\DependencyInfo' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php', - 'Composer\\Repository\\Pear\\PackageDependencyParser' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php', - 'Composer\\Repository\\Pear\\PackageInfo' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/PackageInfo.php', - 'Composer\\Repository\\Pear\\ReleaseInfo' => $vendorDir . '/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php', - 'Composer\\Repository\\PlatformRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/PlatformRepository.php', - 'Composer\\Repository\\RepositoryFactory' => $vendorDir . '/composer/composer/src/Composer/Repository/RepositoryFactory.php', - 'Composer\\Repository\\RepositoryInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/RepositoryInterface.php', - 'Composer\\Repository\\RepositoryManager' => $vendorDir . '/composer/composer/src/Composer/Repository/RepositoryManager.php', - 'Composer\\Repository\\RepositorySecurityException' => $vendorDir . '/composer/composer/src/Composer/Repository/RepositorySecurityException.php', - 'Composer\\Repository\\VcsRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/VcsRepository.php', - 'Composer\\Repository\\Vcs\\BitbucketDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php', - 'Composer\\Repository\\Vcs\\FossilDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php', - 'Composer\\Repository\\Vcs\\GitBitbucketDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php', - 'Composer\\Repository\\Vcs\\GitDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/GitDriver.php', - 'Composer\\Repository\\Vcs\\GitHubDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php', - 'Composer\\Repository\\Vcs\\GitLabDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php', - 'Composer\\Repository\\Vcs\\HgBitbucketDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php', - 'Composer\\Repository\\Vcs\\HgDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/HgDriver.php', - 'Composer\\Repository\\Vcs\\PerforceDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php', - 'Composer\\Repository\\Vcs\\SvnDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php', - 'Composer\\Repository\\Vcs\\VcsDriver' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php', - 'Composer\\Repository\\Vcs\\VcsDriverInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php', - 'Composer\\Repository\\VersionCacheInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/VersionCacheInterface.php', - 'Composer\\Repository\\WritableArrayRepository' => $vendorDir . '/composer/composer/src/Composer/Repository/WritableArrayRepository.php', - 'Composer\\Repository\\WritableRepositoryInterface' => $vendorDir . '/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php', - 'Composer\\Script\\CommandEvent' => $vendorDir . '/composer/composer/src/Composer/Script/CommandEvent.php', - 'Composer\\Script\\Event' => $vendorDir . '/composer/composer/src/Composer/Script/Event.php', - 'Composer\\Script\\PackageEvent' => $vendorDir . '/composer/composer/src/Composer/Script/PackageEvent.php', - 'Composer\\Script\\ScriptEvents' => $vendorDir . '/composer/composer/src/Composer/Script/ScriptEvents.php', - 'Composer\\SelfUpdate\\Keys' => $vendorDir . '/composer/composer/src/Composer/SelfUpdate/Keys.php', - 'Composer\\SelfUpdate\\Versions' => $vendorDir . '/composer/composer/src/Composer/SelfUpdate/Versions.php', - 'Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php', - 'Composer\\Semver\\Constraint\\AbstractConstraint' => $vendorDir . '/composer/semver/src/Constraint/AbstractConstraint.php', - 'Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php', - 'Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php', - 'Composer\\Semver\\Constraint\\EmptyConstraint' => $vendorDir . '/composer/semver/src/Constraint/EmptyConstraint.php', - 'Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php', - 'Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php', - 'Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php', - 'Composer\\Spdx\\SpdxLicenses' => $vendorDir . '/composer/spdx-licenses/src/SpdxLicenses.php', - 'Composer\\Util\\AuthHelper' => $vendorDir . '/composer/composer/src/Composer/Util/AuthHelper.php', - 'Composer\\Util\\Bitbucket' => $vendorDir . '/composer/composer/src/Composer/Util/Bitbucket.php', - 'Composer\\Util\\ComposerMirror' => $vendorDir . '/composer/composer/src/Composer/Util/ComposerMirror.php', - 'Composer\\Util\\ConfigValidator' => $vendorDir . '/composer/composer/src/Composer/Util/ConfigValidator.php', - 'Composer\\Util\\ErrorHandler' => $vendorDir . '/composer/composer/src/Composer/Util/ErrorHandler.php', - 'Composer\\Util\\Filesystem' => $vendorDir . '/composer/composer/src/Composer/Util/Filesystem.php', - 'Composer\\Util\\Git' => $vendorDir . '/composer/composer/src/Composer/Util/Git.php', - 'Composer\\Util\\GitHub' => $vendorDir . '/composer/composer/src/Composer/Util/GitHub.php', - 'Composer\\Util\\GitLab' => $vendorDir . '/composer/composer/src/Composer/Util/GitLab.php', - 'Composer\\Util\\Hg' => $vendorDir . '/composer/composer/src/Composer/Util/Hg.php', - 'Composer\\Util\\IniHelper' => $vendorDir . '/composer/composer/src/Composer/Util/IniHelper.php', - 'Composer\\Util\\NoProxyPattern' => $vendorDir . '/composer/composer/src/Composer/Util/NoProxyPattern.php', - 'Composer\\Util\\PackageSorter' => $vendorDir . '/composer/composer/src/Composer/Util/PackageSorter.php', - 'Composer\\Util\\Perforce' => $vendorDir . '/composer/composer/src/Composer/Util/Perforce.php', - 'Composer\\Util\\Platform' => $vendorDir . '/composer/composer/src/Composer/Util/Platform.php', - 'Composer\\Util\\ProcessExecutor' => $vendorDir . '/composer/composer/src/Composer/Util/ProcessExecutor.php', - 'Composer\\Util\\RemoteFilesystem' => $vendorDir . '/composer/composer/src/Composer/Util/RemoteFilesystem.php', - 'Composer\\Util\\Silencer' => $vendorDir . '/composer/composer/src/Composer/Util/Silencer.php', - 'Composer\\Util\\SpdxLicense' => $vendorDir . '/composer/composer/src/Composer/Util/SpdxLicense.php', - 'Composer\\Util\\StreamContextFactory' => $vendorDir . '/composer/composer/src/Composer/Util/StreamContextFactory.php', - 'Composer\\Util\\Svn' => $vendorDir . '/composer/composer/src/Composer/Util/Svn.php', - 'Composer\\Util\\TlsHelper' => $vendorDir . '/composer/composer/src/Composer/Util/TlsHelper.php', - 'Composer\\Util\\Url' => $vendorDir . '/composer/composer/src/Composer/Util/Url.php', - 'Composer\\Util\\Zip' => $vendorDir . '/composer/composer/src/Composer/Util/Zip.php', - 'Composer\\XdebugHandler' => $vendorDir . '/composer/composer/src/Composer/XdebugHandler.php', - 'Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php', - 'Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php', - 'Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php', - 'Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php', - 'Config_Command' => $vendorDir . '/wp-cli/config-command/src/Config_Command.php', - 'Core_Command' => $vendorDir . '/wp-cli/core-command/src/Core_Command.php', - 'Core_Command_Namespace' => $vendorDir . '/wp-cli/checksum-command/src/Core_Command_Namespace.php', - 'Core_Language_Command' => $vendorDir . '/wp-cli/language-command/src/Core_Language_Command.php', - 'Cron_Command' => $vendorDir . '/wp-cli/cron-command/src/Cron_Command.php', - 'Cron_Event_Command' => $vendorDir . '/wp-cli/cron-command/src/Cron_Event_Command.php', - 'Cron_Schedule_Command' => $vendorDir . '/wp-cli/cron-command/src/Cron_Schedule_Command.php', - 'DB_Command' => $vendorDir . '/wp-cli/db-command/src/DB_Command.php', - 'DeepCopy\\DeepCopy' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php', - 'DeepCopy\\Exception\\CloneException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php', - 'DeepCopy\\Exception\\PropertyException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', - 'DeepCopy\\Filter\\Filter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php', - 'DeepCopy\\Filter\\KeepFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php', - 'DeepCopy\\Filter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php', - 'DeepCopy\\Filter\\SetNullFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php', - 'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php', - 'DeepCopy\\Matcher\\Matcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php', - 'DeepCopy\\Matcher\\PropertyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php', - 'DeepCopy\\Matcher\\PropertyNameMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php', - 'DeepCopy\\Matcher\\PropertyTypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php', - 'DeepCopy\\Reflection\\ReflectionHelper' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php', - 'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php', - 'DeepCopy\\TypeFilter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php', - 'DeepCopy\\TypeFilter\\ShallowCopyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', - 'DeepCopy\\TypeFilter\\TypeFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', - 'DeepCopy\\TypeMatcher\\TypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', - 'Doctrine\\Common\\Inflector\\Inflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php', - 'Doctrine\\Instantiator\\Exception\\ExceptionInterface' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php', - 'Doctrine\\Instantiator\\Exception\\InvalidArgumentException' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php', - 'Doctrine\\Instantiator\\Exception\\UnexpectedValueException' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php', - 'Doctrine\\Instantiator\\Instantiator' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php', - 'Doctrine\\Instantiator\\InstantiatorInterface' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php', - 'Dotenv\\Dotenv' => $vendorDir . '/vlucas/phpdotenv/src/Dotenv.php', - 'Dotenv\\Environment\\AbstractVariables' => $vendorDir . '/vlucas/phpdotenv/src/Environment/AbstractVariables.php', - 'Dotenv\\Environment\\Adapter\\AdapterInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/AdapterInterface.php', - 'Dotenv\\Environment\\Adapter\\ApacheAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ApacheAdapter.php', - 'Dotenv\\Environment\\Adapter\\ArrayAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ArrayAdapter.php', - 'Dotenv\\Environment\\Adapter\\EnvConstAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/EnvConstAdapter.php', - 'Dotenv\\Environment\\Adapter\\PutenvAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/PutenvAdapter.php', - 'Dotenv\\Environment\\Adapter\\ServerConstAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ServerConstAdapter.php', - 'Dotenv\\Environment\\DotenvFactory' => $vendorDir . '/vlucas/phpdotenv/src/Environment/DotenvFactory.php', - 'Dotenv\\Environment\\DotenvVariables' => $vendorDir . '/vlucas/phpdotenv/src/Environment/DotenvVariables.php', - 'Dotenv\\Environment\\FactoryInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/FactoryInterface.php', - 'Dotenv\\Environment\\VariablesInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/VariablesInterface.php', - 'Dotenv\\Exception\\ExceptionInterface' => $vendorDir . '/vlucas/phpdotenv/src/Exception/ExceptionInterface.php', - 'Dotenv\\Exception\\InvalidFileException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidFileException.php', - 'Dotenv\\Exception\\InvalidPathException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidPathException.php', - 'Dotenv\\Exception\\ValidationException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/ValidationException.php', - 'Dotenv\\Lines' => $vendorDir . '/vlucas/phpdotenv/src/Lines.php', - 'Dotenv\\Loader' => $vendorDir . '/vlucas/phpdotenv/src/Loader.php', - 'Dotenv\\Parser' => $vendorDir . '/vlucas/phpdotenv/src/Parser.php', - 'Dotenv\\Regex\\Error' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Error.php', - 'Dotenv\\Regex\\Regex' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Regex.php', - 'Dotenv\\Regex\\Result' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Result.php', - 'Dotenv\\Regex\\Success' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Success.php', - 'Dotenv\\Validator' => $vendorDir . '/vlucas/phpdotenv/src/Validator.php', - 'EvalFile_Command' => $vendorDir . '/wp-cli/eval-command/src/EvalFile_Command.php', - 'Eval_Command' => $vendorDir . '/wp-cli/eval-command/src/Eval_Command.php', - 'Export_Command' => $vendorDir . '/wp-cli/export-command/src/Export_Command.php', - 'Facebook\\WebDriver\\AbstractWebDriverCheckboxOrRadio' => $vendorDir . '/facebook/webdriver/lib/AbstractWebDriverCheckboxOrRadio.php', - 'Facebook\\WebDriver\\Chrome\\ChromeDriver' => $vendorDir . '/facebook/webdriver/lib/Chrome/ChromeDriver.php', - 'Facebook\\WebDriver\\Chrome\\ChromeDriverService' => $vendorDir . '/facebook/webdriver/lib/Chrome/ChromeDriverService.php', - 'Facebook\\WebDriver\\Chrome\\ChromeOptions' => $vendorDir . '/facebook/webdriver/lib/Chrome/ChromeOptions.php', - 'Facebook\\WebDriver\\Cookie' => $vendorDir . '/facebook/webdriver/lib/Cookie.php', - 'Facebook\\WebDriver\\Exception\\ElementNotSelectableException' => $vendorDir . '/facebook/webdriver/lib/Exception/ElementNotSelectableException.php', - 'Facebook\\WebDriver\\Exception\\ElementNotVisibleException' => $vendorDir . '/facebook/webdriver/lib/Exception/ElementNotVisibleException.php', - 'Facebook\\WebDriver\\Exception\\ExpectedException' => $vendorDir . '/facebook/webdriver/lib/Exception/ExpectedException.php', - 'Facebook\\WebDriver\\Exception\\IMEEngineActivationFailedException' => $vendorDir . '/facebook/webdriver/lib/Exception/IMEEngineActivationFailedException.php', - 'Facebook\\WebDriver\\Exception\\IMENotAvailableException' => $vendorDir . '/facebook/webdriver/lib/Exception/IMENotAvailableException.php', - 'Facebook\\WebDriver\\Exception\\IndexOutOfBoundsException' => $vendorDir . '/facebook/webdriver/lib/Exception/IndexOutOfBoundsException.php', - 'Facebook\\WebDriver\\Exception\\InvalidCookieDomainException' => $vendorDir . '/facebook/webdriver/lib/Exception/InvalidCookieDomainException.php', - 'Facebook\\WebDriver\\Exception\\InvalidCoordinatesException' => $vendorDir . '/facebook/webdriver/lib/Exception/InvalidCoordinatesException.php', - 'Facebook\\WebDriver\\Exception\\InvalidElementStateException' => $vendorDir . '/facebook/webdriver/lib/Exception/InvalidElementStateException.php', - 'Facebook\\WebDriver\\Exception\\InvalidSelectorException' => $vendorDir . '/facebook/webdriver/lib/Exception/InvalidSelectorException.php', - 'Facebook\\WebDriver\\Exception\\MoveTargetOutOfBoundsException' => $vendorDir . '/facebook/webdriver/lib/Exception/MoveTargetOutOfBoundsException.php', - 'Facebook\\WebDriver\\Exception\\NoAlertOpenException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoAlertOpenException.php', - 'Facebook\\WebDriver\\Exception\\NoCollectionException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoCollectionException.php', - 'Facebook\\WebDriver\\Exception\\NoScriptResultException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoScriptResultException.php', - 'Facebook\\WebDriver\\Exception\\NoStringException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoStringException.php', - 'Facebook\\WebDriver\\Exception\\NoStringLengthException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoStringLengthException.php', - 'Facebook\\WebDriver\\Exception\\NoStringWrapperException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoStringWrapperException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchCollectionException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchCollectionException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchDocumentException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchDocumentException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchDriverException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchDriverException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchElementException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchElementException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchFrameException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchFrameException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchWindowException' => $vendorDir . '/facebook/webdriver/lib/Exception/NoSuchWindowException.php', - 'Facebook\\WebDriver\\Exception\\NullPointerException' => $vendorDir . '/facebook/webdriver/lib/Exception/NullPointerException.php', - 'Facebook\\WebDriver\\Exception\\ScriptTimeoutException' => $vendorDir . '/facebook/webdriver/lib/Exception/ScriptTimeoutException.php', - 'Facebook\\WebDriver\\Exception\\SessionNotCreatedException' => $vendorDir . '/facebook/webdriver/lib/Exception/SessionNotCreatedException.php', - 'Facebook\\WebDriver\\Exception\\StaleElementReferenceException' => $vendorDir . '/facebook/webdriver/lib/Exception/StaleElementReferenceException.php', - 'Facebook\\WebDriver\\Exception\\TimeOutException' => $vendorDir . '/facebook/webdriver/lib/Exception/TimeOutException.php', - 'Facebook\\WebDriver\\Exception\\UnableToSetCookieException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnableToSetCookieException.php', - 'Facebook\\WebDriver\\Exception\\UnexpectedAlertOpenException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnexpectedAlertOpenException.php', - 'Facebook\\WebDriver\\Exception\\UnexpectedJavascriptException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnexpectedJavascriptException.php', - 'Facebook\\WebDriver\\Exception\\UnexpectedTagNameException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnexpectedTagNameException.php', - 'Facebook\\WebDriver\\Exception\\UnknownCommandException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnknownCommandException.php', - 'Facebook\\WebDriver\\Exception\\UnknownServerException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnknownServerException.php', - 'Facebook\\WebDriver\\Exception\\UnrecognizedExceptionException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnrecognizedExceptionException.php', - 'Facebook\\WebDriver\\Exception\\UnsupportedOperationException' => $vendorDir . '/facebook/webdriver/lib/Exception/UnsupportedOperationException.php', - 'Facebook\\WebDriver\\Exception\\WebDriverCurlException' => $vendorDir . '/facebook/webdriver/lib/Exception/WebDriverCurlException.php', - 'Facebook\\WebDriver\\Exception\\WebDriverException' => $vendorDir . '/facebook/webdriver/lib/Exception/WebDriverException.php', - 'Facebook\\WebDriver\\Exception\\XPathLookupException' => $vendorDir . '/facebook/webdriver/lib/Exception/XPathLookupException.php', - 'Facebook\\WebDriver\\Firefox\\FirefoxDriver' => $vendorDir . '/facebook/webdriver/lib/Firefox/FirefoxDriver.php', - 'Facebook\\WebDriver\\Firefox\\FirefoxPreferences' => $vendorDir . '/facebook/webdriver/lib/Firefox/FirefoxPreferences.php', - 'Facebook\\WebDriver\\Firefox\\FirefoxProfile' => $vendorDir . '/facebook/webdriver/lib/Firefox/FirefoxProfile.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverButtonReleaseAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverButtonReleaseAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverClickAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverClickAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverClickAndHoldAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverClickAndHoldAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverContextClickAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverContextClickAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverCoordinates' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverCoordinates.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverDoubleClickAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverDoubleClickAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeyDownAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeyDownAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeyUpAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeyUpAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeysRelatedAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeysRelatedAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMouseAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMouseAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMouseMoveAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMouseMoveAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMoveToOffsetAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMoveToOffsetAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverSendKeysAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverSendKeysAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverSingleKeyAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Internal/WebDriverSingleKeyAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverDoubleTapAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverDoubleTapAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverDownAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverDownAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverFlickAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverFlickAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverFlickFromElementAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverFlickFromElementAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverLongPressAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverLongPressAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverMoveAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverMoveAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverScrollAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverScrollAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverScrollFromElementAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverScrollFromElementAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTapAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTapAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTouchAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTouchAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTouchScreen' => $vendorDir . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTouchScreen.php', - 'Facebook\\WebDriver\\Interactions\\WebDriverActions' => $vendorDir . '/facebook/webdriver/lib/Interactions/WebDriverActions.php', - 'Facebook\\WebDriver\\Interactions\\WebDriverCompositeAction' => $vendorDir . '/facebook/webdriver/lib/Interactions/WebDriverCompositeAction.php', - 'Facebook\\WebDriver\\Interactions\\WebDriverTouchActions' => $vendorDir . '/facebook/webdriver/lib/Interactions/WebDriverTouchActions.php', - 'Facebook\\WebDriver\\Internal\\WebDriverLocatable' => $vendorDir . '/facebook/webdriver/lib/Internal/WebDriverLocatable.php', - 'Facebook\\WebDriver\\JavaScriptExecutor' => $vendorDir . '/facebook/webdriver/lib/JavaScriptExecutor.php', - 'Facebook\\WebDriver\\Net\\URLChecker' => $vendorDir . '/facebook/webdriver/lib/Net/URLChecker.php', - 'Facebook\\WebDriver\\Remote\\DesiredCapabilities' => $vendorDir . '/facebook/webdriver/lib/Remote/DesiredCapabilities.php', - 'Facebook\\WebDriver\\Remote\\DriverCommand' => $vendorDir . '/facebook/webdriver/lib/Remote/DriverCommand.php', - 'Facebook\\WebDriver\\Remote\\ExecuteMethod' => $vendorDir . '/facebook/webdriver/lib/Remote/ExecuteMethod.php', - 'Facebook\\WebDriver\\Remote\\FileDetector' => $vendorDir . '/facebook/webdriver/lib/Remote/FileDetector.php', - 'Facebook\\WebDriver\\Remote\\HttpCommandExecutor' => $vendorDir . '/facebook/webdriver/lib/Remote/HttpCommandExecutor.php', - 'Facebook\\WebDriver\\Remote\\LocalFileDetector' => $vendorDir . '/facebook/webdriver/lib/Remote/LocalFileDetector.php', - 'Facebook\\WebDriver\\Remote\\RemoteExecuteMethod' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteExecuteMethod.php', - 'Facebook\\WebDriver\\Remote\\RemoteKeyboard' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteKeyboard.php', - 'Facebook\\WebDriver\\Remote\\RemoteMouse' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteMouse.php', - 'Facebook\\WebDriver\\Remote\\RemoteTargetLocator' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteTargetLocator.php', - 'Facebook\\WebDriver\\Remote\\RemoteTouchScreen' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteTouchScreen.php', - 'Facebook\\WebDriver\\Remote\\RemoteWebDriver' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteWebDriver.php', - 'Facebook\\WebDriver\\Remote\\RemoteWebElement' => $vendorDir . '/facebook/webdriver/lib/Remote/RemoteWebElement.php', - 'Facebook\\WebDriver\\Remote\\Service\\DriverCommandExecutor' => $vendorDir . '/facebook/webdriver/lib/Remote/Service/DriverCommandExecutor.php', - 'Facebook\\WebDriver\\Remote\\Service\\DriverService' => $vendorDir . '/facebook/webdriver/lib/Remote/Service/DriverService.php', - 'Facebook\\WebDriver\\Remote\\UselessFileDetector' => $vendorDir . '/facebook/webdriver/lib/Remote/UselessFileDetector.php', - 'Facebook\\WebDriver\\Remote\\WebDriverBrowserType' => $vendorDir . '/facebook/webdriver/lib/Remote/WebDriverBrowserType.php', - 'Facebook\\WebDriver\\Remote\\WebDriverCapabilityType' => $vendorDir . '/facebook/webdriver/lib/Remote/WebDriverCapabilityType.php', - 'Facebook\\WebDriver\\Remote\\WebDriverCommand' => $vendorDir . '/facebook/webdriver/lib/Remote/WebDriverCommand.php', - 'Facebook\\WebDriver\\Remote\\WebDriverResponse' => $vendorDir . '/facebook/webdriver/lib/Remote/WebDriverResponse.php', - 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebDriver' => $vendorDir . '/facebook/webdriver/lib/Support/Events/EventFiringWebDriver.php', - 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebDriverNavigation' => $vendorDir . '/facebook/webdriver/lib/Support/Events/EventFiringWebDriverNavigation.php', - 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebElement' => $vendorDir . '/facebook/webdriver/lib/Support/Events/EventFiringWebElement.php', - 'Facebook\\WebDriver\\Support\\XPathEscaper' => $vendorDir . '/facebook/webdriver/lib/Support/XPathEscaper.php', - 'Facebook\\WebDriver\\WebDriver' => $vendorDir . '/facebook/webdriver/lib/WebDriver.php', - 'Facebook\\WebDriver\\WebDriverAction' => $vendorDir . '/facebook/webdriver/lib/WebDriverAction.php', - 'Facebook\\WebDriver\\WebDriverAlert' => $vendorDir . '/facebook/webdriver/lib/WebDriverAlert.php', - 'Facebook\\WebDriver\\WebDriverBy' => $vendorDir . '/facebook/webdriver/lib/WebDriverBy.php', - 'Facebook\\WebDriver\\WebDriverCapabilities' => $vendorDir . '/facebook/webdriver/lib/WebDriverCapabilities.php', - 'Facebook\\WebDriver\\WebDriverCheckboxes' => $vendorDir . '/facebook/webdriver/lib/WebDriverCheckboxes.php', - 'Facebook\\WebDriver\\WebDriverCommandExecutor' => $vendorDir . '/facebook/webdriver/lib/WebDriverCommandExecutor.php', - 'Facebook\\WebDriver\\WebDriverDimension' => $vendorDir . '/facebook/webdriver/lib/WebDriverDimension.php', - 'Facebook\\WebDriver\\WebDriverDispatcher' => $vendorDir . '/facebook/webdriver/lib/WebDriverDispatcher.php', - 'Facebook\\WebDriver\\WebDriverElement' => $vendorDir . '/facebook/webdriver/lib/WebDriverElement.php', - 'Facebook\\WebDriver\\WebDriverEventListener' => $vendorDir . '/facebook/webdriver/lib/WebDriverEventListener.php', - 'Facebook\\WebDriver\\WebDriverExpectedCondition' => $vendorDir . '/facebook/webdriver/lib/WebDriverExpectedCondition.php', - 'Facebook\\WebDriver\\WebDriverHasInputDevices' => $vendorDir . '/facebook/webdriver/lib/WebDriverHasInputDevices.php', - 'Facebook\\WebDriver\\WebDriverKeyboard' => $vendorDir . '/facebook/webdriver/lib/WebDriverKeyboard.php', - 'Facebook\\WebDriver\\WebDriverKeys' => $vendorDir . '/facebook/webdriver/lib/WebDriverKeys.php', - 'Facebook\\WebDriver\\WebDriverMouse' => $vendorDir . '/facebook/webdriver/lib/WebDriverMouse.php', - 'Facebook\\WebDriver\\WebDriverNavigation' => $vendorDir . '/facebook/webdriver/lib/WebDriverNavigation.php', - 'Facebook\\WebDriver\\WebDriverOptions' => $vendorDir . '/facebook/webdriver/lib/WebDriverOptions.php', - 'Facebook\\WebDriver\\WebDriverPlatform' => $vendorDir . '/facebook/webdriver/lib/WebDriverPlatform.php', - 'Facebook\\WebDriver\\WebDriverPoint' => $vendorDir . '/facebook/webdriver/lib/WebDriverPoint.php', - 'Facebook\\WebDriver\\WebDriverRadios' => $vendorDir . '/facebook/webdriver/lib/WebDriverRadios.php', - 'Facebook\\WebDriver\\WebDriverSearchContext' => $vendorDir . '/facebook/webdriver/lib/WebDriverSearchContext.php', - 'Facebook\\WebDriver\\WebDriverSelect' => $vendorDir . '/facebook/webdriver/lib/WebDriverSelect.php', - 'Facebook\\WebDriver\\WebDriverSelectInterface' => $vendorDir . '/facebook/webdriver/lib/WebDriverSelectInterface.php', - 'Facebook\\WebDriver\\WebDriverTargetLocator' => $vendorDir . '/facebook/webdriver/lib/WebDriverTargetLocator.php', - 'Facebook\\WebDriver\\WebDriverTimeouts' => $vendorDir . '/facebook/webdriver/lib/WebDriverTimeouts.php', - 'Facebook\\WebDriver\\WebDriverUpAction' => $vendorDir . '/facebook/webdriver/lib/WebDriverUpAction.php', - 'Facebook\\WebDriver\\WebDriverWait' => $vendorDir . '/facebook/webdriver/lib/WebDriverWait.php', - 'Facebook\\WebDriver\\WebDriverWindow' => $vendorDir . '/facebook/webdriver/lib/WebDriverWindow.php', 'Firebase\\JWT\\BeforeValidException' => $vendorDir . '/firebase/php-jwt/src/BeforeValidException.php', 'Firebase\\JWT\\ExpiredException' => $vendorDir . '/firebase/php-jwt/src/ExpiredException.php', 'Firebase\\JWT\\JWT' => $vendorDir . '/firebase/php-jwt/src/JWT.php', 'Firebase\\JWT\\SignatureInvalidException' => $vendorDir . '/firebase/php-jwt/src/SignatureInvalidException.php', - 'Gettext\\BaseTranslator' => $vendorDir . '/gettext/gettext/src/BaseTranslator.php', - 'Gettext\\Extractors\\Blade' => $vendorDir . '/gettext/gettext/src/Extractors/Blade.php', - 'Gettext\\Extractors\\Csv' => $vendorDir . '/gettext/gettext/src/Extractors/Csv.php', - 'Gettext\\Extractors\\CsvDictionary' => $vendorDir . '/gettext/gettext/src/Extractors/CsvDictionary.php', - 'Gettext\\Extractors\\Extractor' => $vendorDir . '/gettext/gettext/src/Extractors/Extractor.php', - 'Gettext\\Extractors\\ExtractorInterface' => $vendorDir . '/gettext/gettext/src/Extractors/ExtractorInterface.php', - 'Gettext\\Extractors\\ExtractorMultiInterface' => $vendorDir . '/gettext/gettext/src/Extractors/ExtractorMultiInterface.php', - 'Gettext\\Extractors\\Jed' => $vendorDir . '/gettext/gettext/src/Extractors/Jed.php', - 'Gettext\\Extractors\\JsCode' => $vendorDir . '/gettext/gettext/src/Extractors/JsCode.php', - 'Gettext\\Extractors\\Json' => $vendorDir . '/gettext/gettext/src/Extractors/Json.php', - 'Gettext\\Extractors\\JsonDictionary' => $vendorDir . '/gettext/gettext/src/Extractors/JsonDictionary.php', - 'Gettext\\Extractors\\Mo' => $vendorDir . '/gettext/gettext/src/Extractors/Mo.php', - 'Gettext\\Extractors\\PhpArray' => $vendorDir . '/gettext/gettext/src/Extractors/PhpArray.php', - 'Gettext\\Extractors\\PhpCode' => $vendorDir . '/gettext/gettext/src/Extractors/PhpCode.php', - 'Gettext\\Extractors\\Po' => $vendorDir . '/gettext/gettext/src/Extractors/Po.php', - 'Gettext\\Extractors\\Twig' => $vendorDir . '/gettext/gettext/src/Extractors/Twig.php', - 'Gettext\\Extractors\\VueJs' => $vendorDir . '/gettext/gettext/src/Extractors/VueJs.php', - 'Gettext\\Extractors\\Xliff' => $vendorDir . '/gettext/gettext/src/Extractors/Xliff.php', - 'Gettext\\Extractors\\Yaml' => $vendorDir . '/gettext/gettext/src/Extractors/Yaml.php', - 'Gettext\\Extractors\\YamlDictionary' => $vendorDir . '/gettext/gettext/src/Extractors/YamlDictionary.php', - 'Gettext\\Generators\\Csv' => $vendorDir . '/gettext/gettext/src/Generators/Csv.php', - 'Gettext\\Generators\\CsvDictionary' => $vendorDir . '/gettext/gettext/src/Generators/CsvDictionary.php', - 'Gettext\\Generators\\Generator' => $vendorDir . '/gettext/gettext/src/Generators/Generator.php', - 'Gettext\\Generators\\GeneratorInterface' => $vendorDir . '/gettext/gettext/src/Generators/GeneratorInterface.php', - 'Gettext\\Generators\\Jed' => $vendorDir . '/gettext/gettext/src/Generators/Jed.php', - 'Gettext\\Generators\\Json' => $vendorDir . '/gettext/gettext/src/Generators/Json.php', - 'Gettext\\Generators\\JsonDictionary' => $vendorDir . '/gettext/gettext/src/Generators/JsonDictionary.php', - 'Gettext\\Generators\\Mo' => $vendorDir . '/gettext/gettext/src/Generators/Mo.php', - 'Gettext\\Generators\\PhpArray' => $vendorDir . '/gettext/gettext/src/Generators/PhpArray.php', - 'Gettext\\Generators\\Po' => $vendorDir . '/gettext/gettext/src/Generators/Po.php', - 'Gettext\\Generators\\Xliff' => $vendorDir . '/gettext/gettext/src/Generators/Xliff.php', - 'Gettext\\Generators\\Yaml' => $vendorDir . '/gettext/gettext/src/Generators/Yaml.php', - 'Gettext\\Generators\\YamlDictionary' => $vendorDir . '/gettext/gettext/src/Generators/YamlDictionary.php', - 'Gettext\\GettextTranslator' => $vendorDir . '/gettext/gettext/src/GettextTranslator.php', - 'Gettext\\Languages\\Category' => $vendorDir . '/gettext/languages/src/Category.php', - 'Gettext\\Languages\\CldrData' => $vendorDir . '/gettext/languages/src/CldrData.php', - 'Gettext\\Languages\\Exporter\\Docs' => $vendorDir . '/gettext/languages/src/Exporter/Docs.php', - 'Gettext\\Languages\\Exporter\\Exporter' => $vendorDir . '/gettext/languages/src/Exporter/Exporter.php', - 'Gettext\\Languages\\Exporter\\Html' => $vendorDir . '/gettext/languages/src/Exporter/Html.php', - 'Gettext\\Languages\\Exporter\\Json' => $vendorDir . '/gettext/languages/src/Exporter/Json.php', - 'Gettext\\Languages\\Exporter\\Php' => $vendorDir . '/gettext/languages/src/Exporter/Php.php', - 'Gettext\\Languages\\Exporter\\Po' => $vendorDir . '/gettext/languages/src/Exporter/Po.php', - 'Gettext\\Languages\\Exporter\\Prettyjson' => $vendorDir . '/gettext/languages/src/Exporter/Prettyjson.php', - 'Gettext\\Languages\\Exporter\\Xml' => $vendorDir . '/gettext/languages/src/Exporter/Xml.php', - 'Gettext\\Languages\\FormulaConverter' => $vendorDir . '/gettext/languages/src/FormulaConverter.php', - 'Gettext\\Languages\\Language' => $vendorDir . '/gettext/languages/src/Language.php', - 'Gettext\\Merge' => $vendorDir . '/gettext/gettext/src/Merge.php', - 'Gettext\\Translation' => $vendorDir . '/gettext/gettext/src/Translation.php', - 'Gettext\\Translations' => $vendorDir . '/gettext/gettext/src/Translations.php', - 'Gettext\\Translator' => $vendorDir . '/gettext/gettext/src/Translator.php', - 'Gettext\\TranslatorInterface' => $vendorDir . '/gettext/gettext/src/TranslatorInterface.php', - 'Gettext\\Utils\\CsvTrait' => $vendorDir . '/gettext/gettext/src/Utils/CsvTrait.php', - 'Gettext\\Utils\\DictionaryTrait' => $vendorDir . '/gettext/gettext/src/Utils/DictionaryTrait.php', - 'Gettext\\Utils\\FunctionsScanner' => $vendorDir . '/gettext/gettext/src/Utils/FunctionsScanner.php', - 'Gettext\\Utils\\HeadersExtractorTrait' => $vendorDir . '/gettext/gettext/src/Utils/HeadersExtractorTrait.php', - 'Gettext\\Utils\\HeadersGeneratorTrait' => $vendorDir . '/gettext/gettext/src/Utils/HeadersGeneratorTrait.php', - 'Gettext\\Utils\\JsFunctionsScanner' => $vendorDir . '/gettext/gettext/src/Utils/JsFunctionsScanner.php', - 'Gettext\\Utils\\MultidimensionalArrayTrait' => $vendorDir . '/gettext/gettext/src/Utils/MultidimensionalArrayTrait.php', - 'Gettext\\Utils\\ParsedComment' => $vendorDir . '/gettext/gettext/src/Utils/ParsedComment.php', - 'Gettext\\Utils\\ParsedFunction' => $vendorDir . '/gettext/gettext/src/Utils/ParsedFunction.php', - 'Gettext\\Utils\\PhpFunctionsScanner' => $vendorDir . '/gettext/gettext/src/Utils/PhpFunctionsScanner.php', - 'Gettext\\Utils\\StringReader' => $vendorDir . '/gettext/gettext/src/Utils/StringReader.php', - 'Gumlet\\ImageResize' => $vendorDir . '/gumlet/php-image-resize/lib/ImageResize.php', - 'Gumlet\\ImageResizeException' => $vendorDir . '/gumlet/php-image-resize/lib/ImageResizeException.php', - 'GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php', - 'GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php', - 'GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', - 'GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', - 'GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', - 'GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', - 'GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', - 'GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', - 'GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php', - 'GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', - 'GuzzleHttp\\Exception\\GuzzleException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', - 'GuzzleHttp\\Exception\\InvalidArgumentException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php', - 'GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php', - 'GuzzleHttp\\Exception\\SeekException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/SeekException.php', - 'GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php', - 'GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', - 'GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php', - 'GuzzleHttp\\HandlerStack' => $vendorDir . '/guzzlehttp/guzzle/src/HandlerStack.php', - 'GuzzleHttp\\Handler\\CurlFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', - 'GuzzleHttp\\Handler\\CurlFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', - 'GuzzleHttp\\Handler\\CurlHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', - 'GuzzleHttp\\Handler\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', - 'GuzzleHttp\\Handler\\EasyHandle' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', - 'GuzzleHttp\\Handler\\MockHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', - 'GuzzleHttp\\Handler\\Proxy' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/Proxy.php', - 'GuzzleHttp\\Handler\\StreamHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', - 'GuzzleHttp\\MessageFormatter' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatter.php', - 'GuzzleHttp\\Middleware' => $vendorDir . '/guzzlehttp/guzzle/src/Middleware.php', - 'GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php', - 'GuzzleHttp\\PrepareBodyMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', - 'GuzzleHttp\\Promise\\AggregateException' => $vendorDir . '/guzzlehttp/promises/src/AggregateException.php', - 'GuzzleHttp\\Promise\\CancellationException' => $vendorDir . '/guzzlehttp/promises/src/CancellationException.php', - 'GuzzleHttp\\Promise\\Coroutine' => $vendorDir . '/guzzlehttp/promises/src/Coroutine.php', - 'GuzzleHttp\\Promise\\EachPromise' => $vendorDir . '/guzzlehttp/promises/src/EachPromise.php', - 'GuzzleHttp\\Promise\\FulfilledPromise' => $vendorDir . '/guzzlehttp/promises/src/FulfilledPromise.php', - 'GuzzleHttp\\Promise\\Promise' => $vendorDir . '/guzzlehttp/promises/src/Promise.php', - 'GuzzleHttp\\Promise\\PromiseInterface' => $vendorDir . '/guzzlehttp/promises/src/PromiseInterface.php', - 'GuzzleHttp\\Promise\\PromisorInterface' => $vendorDir . '/guzzlehttp/promises/src/PromisorInterface.php', - 'GuzzleHttp\\Promise\\RejectedPromise' => $vendorDir . '/guzzlehttp/promises/src/RejectedPromise.php', - 'GuzzleHttp\\Promise\\RejectionException' => $vendorDir . '/guzzlehttp/promises/src/RejectionException.php', - 'GuzzleHttp\\Promise\\TaskQueue' => $vendorDir . '/guzzlehttp/promises/src/TaskQueue.php', - 'GuzzleHttp\\Promise\\TaskQueueInterface' => $vendorDir . '/guzzlehttp/promises/src/TaskQueueInterface.php', - 'GuzzleHttp\\Psr7\\AppendStream' => $vendorDir . '/guzzlehttp/psr7/src/AppendStream.php', - 'GuzzleHttp\\Psr7\\BufferStream' => $vendorDir . '/guzzlehttp/psr7/src/BufferStream.php', - 'GuzzleHttp\\Psr7\\CachingStream' => $vendorDir . '/guzzlehttp/psr7/src/CachingStream.php', - 'GuzzleHttp\\Psr7\\DroppingStream' => $vendorDir . '/guzzlehttp/psr7/src/DroppingStream.php', - 'GuzzleHttp\\Psr7\\FnStream' => $vendorDir . '/guzzlehttp/psr7/src/FnStream.php', - 'GuzzleHttp\\Psr7\\InflateStream' => $vendorDir . '/guzzlehttp/psr7/src/InflateStream.php', - 'GuzzleHttp\\Psr7\\LazyOpenStream' => $vendorDir . '/guzzlehttp/psr7/src/LazyOpenStream.php', - 'GuzzleHttp\\Psr7\\LimitStream' => $vendorDir . '/guzzlehttp/psr7/src/LimitStream.php', - 'GuzzleHttp\\Psr7\\MessageTrait' => $vendorDir . '/guzzlehttp/psr7/src/MessageTrait.php', - 'GuzzleHttp\\Psr7\\MultipartStream' => $vendorDir . '/guzzlehttp/psr7/src/MultipartStream.php', - 'GuzzleHttp\\Psr7\\NoSeekStream' => $vendorDir . '/guzzlehttp/psr7/src/NoSeekStream.php', - 'GuzzleHttp\\Psr7\\PumpStream' => $vendorDir . '/guzzlehttp/psr7/src/PumpStream.php', - 'GuzzleHttp\\Psr7\\Request' => $vendorDir . '/guzzlehttp/psr7/src/Request.php', - 'GuzzleHttp\\Psr7\\Response' => $vendorDir . '/guzzlehttp/psr7/src/Response.php', - 'GuzzleHttp\\Psr7\\Rfc7230' => $vendorDir . '/guzzlehttp/psr7/src/Rfc7230.php', - 'GuzzleHttp\\Psr7\\ServerRequest' => $vendorDir . '/guzzlehttp/psr7/src/ServerRequest.php', - 'GuzzleHttp\\Psr7\\Stream' => $vendorDir . '/guzzlehttp/psr7/src/Stream.php', - 'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', - 'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php', - 'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php', - 'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php', - 'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php', - 'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php', - 'GuzzleHttp\\RedirectMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', - 'GuzzleHttp\\RequestOptions' => $vendorDir . '/guzzlehttp/guzzle/src/RequestOptions.php', - 'GuzzleHttp\\RetryMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RetryMiddleware.php', - 'GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php', - 'GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php', - 'Handlebars\\Arguments' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Arguments.php', - 'Handlebars\\Autoloader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Autoloader.php', - 'Handlebars\\BaseString' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/BaseString.php', - 'Handlebars\\Cache' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Cache.php', - 'Handlebars\\Cache\\APC' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Cache/APC.php', - 'Handlebars\\Cache\\Disk' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Cache/Disk.php', - 'Handlebars\\Cache\\Dummy' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Cache/Dummy.php', - 'Handlebars\\ChildContext' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/ChildContext.php', - 'Handlebars\\Context' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Context.php', - 'Handlebars\\Handlebars' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Handlebars.php', - 'Handlebars\\Helper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper.php', - 'Handlebars\\Helper\\BindAttrHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/BindAttrHelper.php', - 'Handlebars\\Helper\\EachHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/EachHelper.php', - 'Handlebars\\Helper\\IfHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/IfHelper.php', - 'Handlebars\\Helper\\UnlessHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/UnlessHelper.php', - 'Handlebars\\Helper\\WithHelper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helper/WithHelper.php', - 'Handlebars\\Helpers' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Helpers.php', - 'Handlebars\\Loader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader.php', - 'Handlebars\\Loader\\ArrayLoader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader/ArrayLoader.php', - 'Handlebars\\Loader\\FilesystemLoader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader/FilesystemLoader.php', - 'Handlebars\\Loader\\InlineLoader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader/InlineLoader.php', - 'Handlebars\\Loader\\StringLoader' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Loader/StringLoader.php', - 'Handlebars\\Parser' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Parser.php', - 'Handlebars\\SafeString' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/SafeString.php', - 'Handlebars\\String' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/String.php', - 'Handlebars\\StringWrapper' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/StringWrapper.php', - 'Handlebars\\Template' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Template.php', - 'Handlebars\\Tokenizer' => $vendorDir . '/xamin/handlebars.php/src/Handlebars/Tokenizer.php', - 'Hautelook\\Phpass\\PasswordHash' => $vendorDir . '/hautelook/phpass/src/Hautelook/Phpass/PasswordHash.php', - 'Illuminate\\Contracts\\Auth\\Access\\Authorizable' => $vendorDir . '/illuminate/contracts/Auth/Access/Authorizable.php', - 'Illuminate\\Contracts\\Auth\\Access\\Gate' => $vendorDir . '/illuminate/contracts/Auth/Access/Gate.php', - 'Illuminate\\Contracts\\Auth\\Authenticatable' => $vendorDir . '/illuminate/contracts/Auth/Authenticatable.php', - 'Illuminate\\Contracts\\Auth\\CanResetPassword' => $vendorDir . '/illuminate/contracts/Auth/CanResetPassword.php', - 'Illuminate\\Contracts\\Auth\\Factory' => $vendorDir . '/illuminate/contracts/Auth/Factory.php', - 'Illuminate\\Contracts\\Auth\\Guard' => $vendorDir . '/illuminate/contracts/Auth/Guard.php', - 'Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => $vendorDir . '/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php', - 'Illuminate\\Contracts\\Auth\\MustVerifyEmail' => $vendorDir . '/illuminate/contracts/Auth/MustVerifyEmail.php', - 'Illuminate\\Contracts\\Auth\\PasswordBroker' => $vendorDir . '/illuminate/contracts/Auth/PasswordBroker.php', - 'Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => $vendorDir . '/illuminate/contracts/Auth/PasswordBrokerFactory.php', - 'Illuminate\\Contracts\\Auth\\StatefulGuard' => $vendorDir . '/illuminate/contracts/Auth/StatefulGuard.php', - 'Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => $vendorDir . '/illuminate/contracts/Auth/SupportsBasicAuth.php', - 'Illuminate\\Contracts\\Auth\\UserProvider' => $vendorDir . '/illuminate/contracts/Auth/UserProvider.php', - 'Illuminate\\Contracts\\Broadcasting\\Broadcaster' => $vendorDir . '/illuminate/contracts/Broadcasting/Broadcaster.php', - 'Illuminate\\Contracts\\Broadcasting\\Factory' => $vendorDir . '/illuminate/contracts/Broadcasting/Factory.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBroadcast.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php', - 'Illuminate\\Contracts\\Bus\\Dispatcher' => $vendorDir . '/illuminate/contracts/Bus/Dispatcher.php', - 'Illuminate\\Contracts\\Bus\\QueueingDispatcher' => $vendorDir . '/illuminate/contracts/Bus/QueueingDispatcher.php', - 'Illuminate\\Contracts\\Cache\\Factory' => $vendorDir . '/illuminate/contracts/Cache/Factory.php', - 'Illuminate\\Contracts\\Cache\\Lock' => $vendorDir . '/illuminate/contracts/Cache/Lock.php', - 'Illuminate\\Contracts\\Cache\\LockProvider' => $vendorDir . '/illuminate/contracts/Cache/LockProvider.php', - 'Illuminate\\Contracts\\Cache\\LockTimeoutException' => $vendorDir . '/illuminate/contracts/Cache/LockTimeoutException.php', - 'Illuminate\\Contracts\\Cache\\Repository' => $vendorDir . '/illuminate/contracts/Cache/Repository.php', - 'Illuminate\\Contracts\\Cache\\Store' => $vendorDir . '/illuminate/contracts/Cache/Store.php', - 'Illuminate\\Contracts\\Config\\Repository' => $vendorDir . '/illuminate/contracts/Config/Repository.php', - 'Illuminate\\Contracts\\Console\\Application' => $vendorDir . '/illuminate/contracts/Console/Application.php', - 'Illuminate\\Contracts\\Console\\Kernel' => $vendorDir . '/illuminate/contracts/Console/Kernel.php', - 'Illuminate\\Contracts\\Container\\BindingResolutionException' => $vendorDir . '/illuminate/contracts/Container/BindingResolutionException.php', - 'Illuminate\\Contracts\\Container\\Container' => $vendorDir . '/illuminate/contracts/Container/Container.php', - 'Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => $vendorDir . '/illuminate/contracts/Container/ContextualBindingBuilder.php', - 'Illuminate\\Contracts\\Cookie\\Factory' => $vendorDir . '/illuminate/contracts/Cookie/Factory.php', - 'Illuminate\\Contracts\\Cookie\\QueueingFactory' => $vendorDir . '/illuminate/contracts/Cookie/QueueingFactory.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/CastsAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php', - 'Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => $vendorDir . '/illuminate/contracts/Database/Events/MigrationEvent.php', - 'Illuminate\\Contracts\\Database\\ModelIdentifier' => $vendorDir . '/illuminate/contracts/Database/ModelIdentifier.php', - 'Illuminate\\Contracts\\Debug\\ExceptionHandler' => $vendorDir . '/illuminate/contracts/Debug/ExceptionHandler.php', - 'Illuminate\\Contracts\\Encryption\\DecryptException' => $vendorDir . '/illuminate/contracts/Encryption/DecryptException.php', - 'Illuminate\\Contracts\\Encryption\\EncryptException' => $vendorDir . '/illuminate/contracts/Encryption/EncryptException.php', - 'Illuminate\\Contracts\\Encryption\\Encrypter' => $vendorDir . '/illuminate/contracts/Encryption/Encrypter.php', - 'Illuminate\\Contracts\\Events\\Dispatcher' => $vendorDir . '/illuminate/contracts/Events/Dispatcher.php', - 'Illuminate\\Contracts\\Filesystem\\Cloud' => $vendorDir . '/illuminate/contracts/Filesystem/Cloud.php', - 'Illuminate\\Contracts\\Filesystem\\Factory' => $vendorDir . '/illuminate/contracts/Filesystem/Factory.php', - 'Illuminate\\Contracts\\Filesystem\\FileExistsException' => $vendorDir . '/illuminate/contracts/Filesystem/FileExistsException.php', - 'Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => $vendorDir . '/illuminate/contracts/Filesystem/FileNotFoundException.php', - 'Illuminate\\Contracts\\Filesystem\\Filesystem' => $vendorDir . '/illuminate/contracts/Filesystem/Filesystem.php', - 'Illuminate\\Contracts\\Foundation\\Application' => $vendorDir . '/illuminate/contracts/Foundation/Application.php', - 'Illuminate\\Contracts\\Foundation\\CachesConfiguration' => $vendorDir . '/illuminate/contracts/Foundation/CachesConfiguration.php', - 'Illuminate\\Contracts\\Foundation\\CachesRoutes' => $vendorDir . '/illuminate/contracts/Foundation/CachesRoutes.php', - 'Illuminate\\Contracts\\Hashing\\Hasher' => $vendorDir . '/illuminate/contracts/Hashing/Hasher.php', - 'Illuminate\\Contracts\\Http\\Kernel' => $vendorDir . '/illuminate/contracts/Http/Kernel.php', - 'Illuminate\\Contracts\\Mail\\Factory' => $vendorDir . '/illuminate/contracts/Mail/Factory.php', - 'Illuminate\\Contracts\\Mail\\MailQueue' => $vendorDir . '/illuminate/contracts/Mail/MailQueue.php', - 'Illuminate\\Contracts\\Mail\\Mailable' => $vendorDir . '/illuminate/contracts/Mail/Mailable.php', - 'Illuminate\\Contracts\\Mail\\Mailer' => $vendorDir . '/illuminate/contracts/Mail/Mailer.php', - 'Illuminate\\Contracts\\Notifications\\Dispatcher' => $vendorDir . '/illuminate/contracts/Notifications/Dispatcher.php', - 'Illuminate\\Contracts\\Notifications\\Factory' => $vendorDir . '/illuminate/contracts/Notifications/Factory.php', - 'Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => $vendorDir . '/illuminate/contracts/Pagination/LengthAwarePaginator.php', - 'Illuminate\\Contracts\\Pagination\\Paginator' => $vendorDir . '/illuminate/contracts/Pagination/Paginator.php', - 'Illuminate\\Contracts\\Pipeline\\Hub' => $vendorDir . '/illuminate/contracts/Pipeline/Hub.php', - 'Illuminate\\Contracts\\Pipeline\\Pipeline' => $vendorDir . '/illuminate/contracts/Pipeline/Pipeline.php', - 'Illuminate\\Contracts\\Queue\\EntityNotFoundException' => $vendorDir . '/illuminate/contracts/Queue/EntityNotFoundException.php', - 'Illuminate\\Contracts\\Queue\\EntityResolver' => $vendorDir . '/illuminate/contracts/Queue/EntityResolver.php', - 'Illuminate\\Contracts\\Queue\\Factory' => $vendorDir . '/illuminate/contracts/Queue/Factory.php', - 'Illuminate\\Contracts\\Queue\\Job' => $vendorDir . '/illuminate/contracts/Queue/Job.php', - 'Illuminate\\Contracts\\Queue\\Monitor' => $vendorDir . '/illuminate/contracts/Queue/Monitor.php', - 'Illuminate\\Contracts\\Queue\\Queue' => $vendorDir . '/illuminate/contracts/Queue/Queue.php', - 'Illuminate\\Contracts\\Queue\\QueueableCollection' => $vendorDir . '/illuminate/contracts/Queue/QueueableCollection.php', - 'Illuminate\\Contracts\\Queue\\QueueableEntity' => $vendorDir . '/illuminate/contracts/Queue/QueueableEntity.php', - 'Illuminate\\Contracts\\Queue\\ShouldQueue' => $vendorDir . '/illuminate/contracts/Queue/ShouldQueue.php', - 'Illuminate\\Contracts\\Redis\\Connection' => $vendorDir . '/illuminate/contracts/Redis/Connection.php', - 'Illuminate\\Contracts\\Redis\\Connector' => $vendorDir . '/illuminate/contracts/Redis/Connector.php', - 'Illuminate\\Contracts\\Redis\\Factory' => $vendorDir . '/illuminate/contracts/Redis/Factory.php', - 'Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => $vendorDir . '/illuminate/contracts/Redis/LimiterTimeoutException.php', - 'Illuminate\\Contracts\\Routing\\BindingRegistrar' => $vendorDir . '/illuminate/contracts/Routing/BindingRegistrar.php', - 'Illuminate\\Contracts\\Routing\\Registrar' => $vendorDir . '/illuminate/contracts/Routing/Registrar.php', - 'Illuminate\\Contracts\\Routing\\ResponseFactory' => $vendorDir . '/illuminate/contracts/Routing/ResponseFactory.php', - 'Illuminate\\Contracts\\Routing\\UrlGenerator' => $vendorDir . '/illuminate/contracts/Routing/UrlGenerator.php', - 'Illuminate\\Contracts\\Routing\\UrlRoutable' => $vendorDir . '/illuminate/contracts/Routing/UrlRoutable.php', - 'Illuminate\\Contracts\\Session\\Session' => $vendorDir . '/illuminate/contracts/Session/Session.php', - 'Illuminate\\Contracts\\Support\\Arrayable' => $vendorDir . '/illuminate/contracts/Support/Arrayable.php', - 'Illuminate\\Contracts\\Support\\DeferrableProvider' => $vendorDir . '/illuminate/contracts/Support/DeferrableProvider.php', - 'Illuminate\\Contracts\\Support\\Htmlable' => $vendorDir . '/illuminate/contracts/Support/Htmlable.php', - 'Illuminate\\Contracts\\Support\\Jsonable' => $vendorDir . '/illuminate/contracts/Support/Jsonable.php', - 'Illuminate\\Contracts\\Support\\MessageBag' => $vendorDir . '/illuminate/contracts/Support/MessageBag.php', - 'Illuminate\\Contracts\\Support\\MessageProvider' => $vendorDir . '/illuminate/contracts/Support/MessageProvider.php', - 'Illuminate\\Contracts\\Support\\Renderable' => $vendorDir . '/illuminate/contracts/Support/Renderable.php', - 'Illuminate\\Contracts\\Support\\Responsable' => $vendorDir . '/illuminate/contracts/Support/Responsable.php', - 'Illuminate\\Contracts\\Translation\\HasLocalePreference' => $vendorDir . '/illuminate/contracts/Translation/HasLocalePreference.php', - 'Illuminate\\Contracts\\Translation\\Loader' => $vendorDir . '/illuminate/contracts/Translation/Loader.php', - 'Illuminate\\Contracts\\Translation\\Translator' => $vendorDir . '/illuminate/contracts/Translation/Translator.php', - 'Illuminate\\Contracts\\Validation\\Factory' => $vendorDir . '/illuminate/contracts/Validation/Factory.php', - 'Illuminate\\Contracts\\Validation\\ImplicitRule' => $vendorDir . '/illuminate/contracts/Validation/ImplicitRule.php', - 'Illuminate\\Contracts\\Validation\\Rule' => $vendorDir . '/illuminate/contracts/Validation/Rule.php', - 'Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => $vendorDir . '/illuminate/contracts/Validation/ValidatesWhenResolved.php', - 'Illuminate\\Contracts\\Validation\\Validator' => $vendorDir . '/illuminate/contracts/Validation/Validator.php', - 'Illuminate\\Contracts\\View\\Engine' => $vendorDir . '/illuminate/contracts/View/Engine.php', - 'Illuminate\\Contracts\\View\\Factory' => $vendorDir . '/illuminate/contracts/View/Factory.php', - 'Illuminate\\Contracts\\View\\View' => $vendorDir . '/illuminate/contracts/View/View.php', - 'Illuminate\\Support\\AggregateServiceProvider' => $vendorDir . '/illuminate/support/AggregateServiceProvider.php', - 'Illuminate\\Support\\Arr' => $vendorDir . '/illuminate/support/Arr.php', - 'Illuminate\\Support\\Carbon' => $vendorDir . '/illuminate/support/Carbon.php', - 'Illuminate\\Support\\Collection' => $vendorDir . '/illuminate/support/Collection.php', - 'Illuminate\\Support\\Composer' => $vendorDir . '/illuminate/support/Composer.php', - 'Illuminate\\Support\\ConfigurationUrlParser' => $vendorDir . '/illuminate/support/ConfigurationUrlParser.php', - 'Illuminate\\Support\\DateFactory' => $vendorDir . '/illuminate/support/DateFactory.php', - 'Illuminate\\Support\\Enumerable' => $vendorDir . '/illuminate/support/Enumerable.php', - 'Illuminate\\Support\\Env' => $vendorDir . '/illuminate/support/Env.php', - 'Illuminate\\Support\\Facades\\App' => $vendorDir . '/illuminate/support/Facades/App.php', - 'Illuminate\\Support\\Facades\\Artisan' => $vendorDir . '/illuminate/support/Facades/Artisan.php', - 'Illuminate\\Support\\Facades\\Auth' => $vendorDir . '/illuminate/support/Facades/Auth.php', - 'Illuminate\\Support\\Facades\\Blade' => $vendorDir . '/illuminate/support/Facades/Blade.php', - 'Illuminate\\Support\\Facades\\Broadcast' => $vendorDir . '/illuminate/support/Facades/Broadcast.php', - 'Illuminate\\Support\\Facades\\Bus' => $vendorDir . '/illuminate/support/Facades/Bus.php', - 'Illuminate\\Support\\Facades\\Cache' => $vendorDir . '/illuminate/support/Facades/Cache.php', - 'Illuminate\\Support\\Facades\\Config' => $vendorDir . '/illuminate/support/Facades/Config.php', - 'Illuminate\\Support\\Facades\\Cookie' => $vendorDir . '/illuminate/support/Facades/Cookie.php', - 'Illuminate\\Support\\Facades\\Crypt' => $vendorDir . '/illuminate/support/Facades/Crypt.php', - 'Illuminate\\Support\\Facades\\DB' => $vendorDir . '/illuminate/support/Facades/DB.php', - 'Illuminate\\Support\\Facades\\Date' => $vendorDir . '/illuminate/support/Facades/Date.php', - 'Illuminate\\Support\\Facades\\Event' => $vendorDir . '/illuminate/support/Facades/Event.php', - 'Illuminate\\Support\\Facades\\Facade' => $vendorDir . '/illuminate/support/Facades/Facade.php', - 'Illuminate\\Support\\Facades\\File' => $vendorDir . '/illuminate/support/Facades/File.php', - 'Illuminate\\Support\\Facades\\Gate' => $vendorDir . '/illuminate/support/Facades/Gate.php', - 'Illuminate\\Support\\Facades\\Hash' => $vendorDir . '/illuminate/support/Facades/Hash.php', - 'Illuminate\\Support\\Facades\\Http' => $vendorDir . '/illuminate/support/Facades/Http.php', - 'Illuminate\\Support\\Facades\\Lang' => $vendorDir . '/illuminate/support/Facades/Lang.php', - 'Illuminate\\Support\\Facades\\Log' => $vendorDir . '/illuminate/support/Facades/Log.php', - 'Illuminate\\Support\\Facades\\Mail' => $vendorDir . '/illuminate/support/Facades/Mail.php', - 'Illuminate\\Support\\Facades\\Notification' => $vendorDir . '/illuminate/support/Facades/Notification.php', - 'Illuminate\\Support\\Facades\\Password' => $vendorDir . '/illuminate/support/Facades/Password.php', - 'Illuminate\\Support\\Facades\\Queue' => $vendorDir . '/illuminate/support/Facades/Queue.php', - 'Illuminate\\Support\\Facades\\Redirect' => $vendorDir . '/illuminate/support/Facades/Redirect.php', - 'Illuminate\\Support\\Facades\\Redis' => $vendorDir . '/illuminate/support/Facades/Redis.php', - 'Illuminate\\Support\\Facades\\Request' => $vendorDir . '/illuminate/support/Facades/Request.php', - 'Illuminate\\Support\\Facades\\Response' => $vendorDir . '/illuminate/support/Facades/Response.php', - 'Illuminate\\Support\\Facades\\Route' => $vendorDir . '/illuminate/support/Facades/Route.php', - 'Illuminate\\Support\\Facades\\Schema' => $vendorDir . '/illuminate/support/Facades/Schema.php', - 'Illuminate\\Support\\Facades\\Session' => $vendorDir . '/illuminate/support/Facades/Session.php', - 'Illuminate\\Support\\Facades\\Storage' => $vendorDir . '/illuminate/support/Facades/Storage.php', - 'Illuminate\\Support\\Facades\\URL' => $vendorDir . '/illuminate/support/Facades/URL.php', - 'Illuminate\\Support\\Facades\\Validator' => $vendorDir . '/illuminate/support/Facades/Validator.php', - 'Illuminate\\Support\\Facades\\View' => $vendorDir . '/illuminate/support/Facades/View.php', - 'Illuminate\\Support\\Fluent' => $vendorDir . '/illuminate/support/Fluent.php', - 'Illuminate\\Support\\HigherOrderCollectionProxy' => $vendorDir . '/illuminate/support/HigherOrderCollectionProxy.php', - 'Illuminate\\Support\\HigherOrderTapProxy' => $vendorDir . '/illuminate/support/HigherOrderTapProxy.php', - 'Illuminate\\Support\\HtmlString' => $vendorDir . '/illuminate/support/HtmlString.php', - 'Illuminate\\Support\\InteractsWithTime' => $vendorDir . '/illuminate/support/InteractsWithTime.php', - 'Illuminate\\Support\\LazyCollection' => $vendorDir . '/illuminate/support/LazyCollection.php', - 'Illuminate\\Support\\Manager' => $vendorDir . '/illuminate/support/Manager.php', - 'Illuminate\\Support\\MessageBag' => $vendorDir . '/illuminate/support/MessageBag.php', - 'Illuminate\\Support\\NamespacedItemResolver' => $vendorDir . '/illuminate/support/NamespacedItemResolver.php', - 'Illuminate\\Support\\Optional' => $vendorDir . '/illuminate/support/Optional.php', - 'Illuminate\\Support\\Pluralizer' => $vendorDir . '/illuminate/support/Pluralizer.php', - 'Illuminate\\Support\\ProcessUtils' => $vendorDir . '/illuminate/support/ProcessUtils.php', - 'Illuminate\\Support\\ServiceProvider' => $vendorDir . '/illuminate/support/ServiceProvider.php', - 'Illuminate\\Support\\Str' => $vendorDir . '/illuminate/support/Str.php', - 'Illuminate\\Support\\Stringable' => $vendorDir . '/illuminate/support/Stringable.php', - 'Illuminate\\Support\\Testing\\Fakes\\BusFake' => $vendorDir . '/illuminate/support/Testing/Fakes/BusFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\EventFake' => $vendorDir . '/illuminate/support/Testing/Fakes/EventFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\MailFake' => $vendorDir . '/illuminate/support/Testing/Fakes/MailFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\NotificationFake' => $vendorDir . '/illuminate/support/Testing/Fakes/NotificationFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\PendingMailFake' => $vendorDir . '/illuminate/support/Testing/Fakes/PendingMailFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\QueueFake' => $vendorDir . '/illuminate/support/Testing/Fakes/QueueFake.php', - 'Illuminate\\Support\\Traits\\CapsuleManagerTrait' => $vendorDir . '/illuminate/support/Traits/CapsuleManagerTrait.php', - 'Illuminate\\Support\\Traits\\EnumeratesValues' => $vendorDir . '/illuminate/support/Traits/EnumeratesValues.php', - 'Illuminate\\Support\\Traits\\ForwardsCalls' => $vendorDir . '/illuminate/support/Traits/ForwardsCalls.php', - 'Illuminate\\Support\\Traits\\Localizable' => $vendorDir . '/illuminate/support/Traits/Localizable.php', - 'Illuminate\\Support\\Traits\\Macroable' => $vendorDir . '/illuminate/support/Traits/Macroable.php', - 'Illuminate\\Support\\Traits\\Tappable' => $vendorDir . '/illuminate/support/Traits/Tappable.php', - 'Illuminate\\Support\\ViewErrorBag' => $vendorDir . '/illuminate/support/ViewErrorBag.php', - 'Import_Command' => $vendorDir . '/wp-cli/import-command/src/Import_Command.php', - 'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', - 'JsonSchema\\Constraints\\BaseConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php', - 'JsonSchema\\Constraints\\CollectionConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php', - 'JsonSchema\\Constraints\\Constraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php', - 'JsonSchema\\Constraints\\ConstraintInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php', - 'JsonSchema\\Constraints\\EnumConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php', - 'JsonSchema\\Constraints\\Factory' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php', - 'JsonSchema\\Constraints\\FormatConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php', - 'JsonSchema\\Constraints\\NumberConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php', - 'JsonSchema\\Constraints\\ObjectConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php', - 'JsonSchema\\Constraints\\SchemaConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php', - 'JsonSchema\\Constraints\\StringConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php', - 'JsonSchema\\Constraints\\TypeCheck\\LooseTypeCheck' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php', - 'JsonSchema\\Constraints\\TypeCheck\\StrictTypeCheck' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php', - 'JsonSchema\\Constraints\\TypeCheck\\TypeCheckInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php', - 'JsonSchema\\Constraints\\TypeConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php', - 'JsonSchema\\Constraints\\UndefinedConstraint' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php', - 'JsonSchema\\Entity\\JsonPointer' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php', - 'JsonSchema\\Exception\\ExceptionInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php', - 'JsonSchema\\Exception\\InvalidArgumentException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php', - 'JsonSchema\\Exception\\InvalidConfigException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php', - 'JsonSchema\\Exception\\InvalidSchemaException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php', - 'JsonSchema\\Exception\\InvalidSchemaMediaTypeException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php', - 'JsonSchema\\Exception\\InvalidSourceUriException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php', - 'JsonSchema\\Exception\\JsonDecodingException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php', - 'JsonSchema\\Exception\\ResourceNotFoundException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php', - 'JsonSchema\\Exception\\RuntimeException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php', - 'JsonSchema\\Exception\\UnresolvableJsonPointerException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php', - 'JsonSchema\\Exception\\UriResolverException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php', - 'JsonSchema\\Exception\\ValidationException' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php', - 'JsonSchema\\Iterator\\ObjectIterator' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php', - 'JsonSchema\\Rfc3339' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php', - 'JsonSchema\\SchemaStorage' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php', - 'JsonSchema\\SchemaStorageInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php', - 'JsonSchema\\UriResolverInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php', - 'JsonSchema\\UriRetrieverInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php', - 'JsonSchema\\Uri\\Retrievers\\AbstractRetriever' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php', - 'JsonSchema\\Uri\\Retrievers\\Curl' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php', - 'JsonSchema\\Uri\\Retrievers\\FileGetContents' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php', - 'JsonSchema\\Uri\\Retrievers\\PredefinedArray' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php', - 'JsonSchema\\Uri\\Retrievers\\UriRetrieverInterface' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php', - 'JsonSchema\\Uri\\UriResolver' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php', - 'JsonSchema\\Uri\\UriRetriever' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php', - 'JsonSchema\\Validator' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Validator.php', - 'Language_Namespace' => $vendorDir . '/wp-cli/language-command/src/Language_Namespace.php', - 'Media_Command' => $vendorDir . '/wp-cli/media-command/src/Media_Command.php', - 'Menu_Command' => $vendorDir . '/wp-cli/entity-command/src/Menu_Command.php', - 'Menu_Item_Command' => $vendorDir . '/wp-cli/entity-command/src/Menu_Item_Command.php', - 'Menu_Location_Command' => $vendorDir . '/wp-cli/entity-command/src/Menu_Location_Command.php', - 'MikeMcLin\\WpPassword\\Contracts\\WpPassword' => $vendorDir . '/mikemclin/laravel-wp-password/src/Contracts/WpPassword.php', - 'MikeMcLin\\WpPassword\\Facades\\WpPassword' => $vendorDir . '/mikemclin/laravel-wp-password/src/Facades/WpPassword.php', - 'MikeMcLin\\WpPassword\\WpPassword' => $vendorDir . '/mikemclin/laravel-wp-password/src/WpPassword.php', - 'MikeMcLin\\WpPassword\\WpPasswordProvider' => $vendorDir . '/mikemclin/laravel-wp-password/src/WpPasswordProvider.php', - 'Mustache_Autoloader' => $vendorDir . '/mustache/mustache/src/Mustache/Autoloader.php', - 'Mustache_Cache' => $vendorDir . '/mustache/mustache/src/Mustache/Cache.php', - 'Mustache_Cache_AbstractCache' => $vendorDir . '/mustache/mustache/src/Mustache/Cache/AbstractCache.php', - 'Mustache_Cache_FilesystemCache' => $vendorDir . '/mustache/mustache/src/Mustache/Cache/FilesystemCache.php', - 'Mustache_Cache_NoopCache' => $vendorDir . '/mustache/mustache/src/Mustache/Cache/NoopCache.php', - 'Mustache_Compiler' => $vendorDir . '/mustache/mustache/src/Mustache/Compiler.php', - 'Mustache_Context' => $vendorDir . '/mustache/mustache/src/Mustache/Context.php', - 'Mustache_Engine' => $vendorDir . '/mustache/mustache/src/Mustache/Engine.php', - 'Mustache_Exception' => $vendorDir . '/mustache/mustache/src/Mustache/Exception.php', - 'Mustache_Exception_InvalidArgumentException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php', - 'Mustache_Exception_LogicException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/LogicException.php', - 'Mustache_Exception_RuntimeException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/RuntimeException.php', - 'Mustache_Exception_SyntaxException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/SyntaxException.php', - 'Mustache_Exception_UnknownFilterException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php', - 'Mustache_Exception_UnknownHelperException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php', - 'Mustache_Exception_UnknownTemplateException' => $vendorDir . '/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php', - 'Mustache_HelperCollection' => $vendorDir . '/mustache/mustache/src/Mustache/HelperCollection.php', - 'Mustache_LambdaHelper' => $vendorDir . '/mustache/mustache/src/Mustache/LambdaHelper.php', - 'Mustache_Loader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader.php', - 'Mustache_Loader_ArrayLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/ArrayLoader.php', - 'Mustache_Loader_CascadingLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/CascadingLoader.php', - 'Mustache_Loader_FilesystemLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php', - 'Mustache_Loader_InlineLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/InlineLoader.php', - 'Mustache_Loader_MutableLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/MutableLoader.php', - 'Mustache_Loader_ProductionFilesystemLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/ProductionFilesystemLoader.php', - 'Mustache_Loader_StringLoader' => $vendorDir . '/mustache/mustache/src/Mustache/Loader/StringLoader.php', - 'Mustache_Logger' => $vendorDir . '/mustache/mustache/src/Mustache/Logger.php', - 'Mustache_Logger_AbstractLogger' => $vendorDir . '/mustache/mustache/src/Mustache/Logger/AbstractLogger.php', - 'Mustache_Logger_StreamLogger' => $vendorDir . '/mustache/mustache/src/Mustache/Logger/StreamLogger.php', - 'Mustache_Parser' => $vendorDir . '/mustache/mustache/src/Mustache/Parser.php', - 'Mustache_Source' => $vendorDir . '/mustache/mustache/src/Mustache/Source.php', - 'Mustache_Source_FilesystemSource' => $vendorDir . '/mustache/mustache/src/Mustache/Source/FilesystemSource.php', - 'Mustache_Template' => $vendorDir . '/mustache/mustache/src/Mustache/Template.php', - 'Mustache_Tokenizer' => $vendorDir . '/mustache/mustache/src/Mustache/Tokenizer.php', - 'Mustangostang\\Spyc' => $vendorDir . '/wp-cli/mustangostang-spyc/src/Spyc.php', - 'MySQLDump' => $vendorDir . '/dg/mysql-dump/src/MySQLDump.php', - 'MySQLImport' => $vendorDir . '/dg/mysql-dump/src/MySQLImport.php', - 'Network_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Network_Meta_Command.php', - 'Network_Namespace' => $vendorDir . '/wp-cli/entity-command/src/Network_Namespace.php', - 'Option_Command' => $vendorDir . '/wp-cli/entity-command/src/Option_Command.php', - 'Oxymel' => $vendorDir . '/nb/oxymel/Oxymel.php', - 'OxymelException' => $vendorDir . '/nb/oxymel/Oxymel.php', - 'OxymelTest' => $vendorDir . '/nb/oxymel/OxymelTest.php', - 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', - 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', - 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', - 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', - 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', - 'PHPUnit\\Framework\\Constraint\\ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', - 'PHPUnit\\Framework\\Constraint\\Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', - 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', - 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', - 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', - 'PHPUnit\\Framework\\Constraint\\Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', - 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php', - 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php', - 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php', - 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', - 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', - 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', - 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', - 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', - 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', - 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', - 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', - 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', - 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', - 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', - 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', - 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php', - 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', - 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', - 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php', - 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', - 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php', - 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', - 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php', - 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php', - 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php', - 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php', - 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', - 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', - 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', - 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', - 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php', - 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', - 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php', - 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', - 'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', - 'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php', - 'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php', - 'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php', - 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php', - 'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', - 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', - 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php', - 'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', - 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', - 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', - 'PHPUnit\\Framework\\InvalidParameterGroupException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php', - 'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php', - 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Match' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Match.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/NamespaceMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php', - 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator.php', - 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation/Invocation.php', - 'PHPUnit\\Framework\\MockObject\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/InvocationMocker.php', - 'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation/ObjectInvocation.php', - 'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation/StaticInvocation.php', - 'PHPUnit\\Framework\\MockObject\\Invokable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invokable.php', - 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/AnyInvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/AnyParameters.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\DeferredError' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/DeferredError.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/Invocation.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtIndex.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedRecorder.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/MethodName.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/Parameters.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher/StatelessInvocation.php', - 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', - 'PHPUnit\\Framework\\MockObject\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php', - 'PHPUnit\\Framework\\MockObject\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php', - 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ForwardCompatibility/MockObject.php', - 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/MatcherCollection.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php', - 'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php', - 'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php', - 'PHPUnit\\Framework\\RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php', - 'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php', - 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', - 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php', - 'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', - 'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php', - 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', - 'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php', - 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php', - 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php', - 'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php', - 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php', - 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php', - 'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php', - 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', - 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', - 'PHPUnit\\Framework\\UnexpectedValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/UnexpectedValueException.php', - 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', - 'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php', - 'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php', - 'PHPUnit\\Runner\\AfterIncompleteTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php', - 'PHPUnit\\Runner\\AfterLastTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php', - 'PHPUnit\\Runner\\AfterRiskyTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php', - 'PHPUnit\\Runner\\AfterSkippedTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php', - 'PHPUnit\\Runner\\AfterSuccessfulTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php', - 'PHPUnit\\Runner\\AfterTestErrorHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php', - 'PHPUnit\\Runner\\AfterTestFailureHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php', - 'PHPUnit\\Runner\\AfterTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php', - 'PHPUnit\\Runner\\AfterTestWarningHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php', - 'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', - 'PHPUnit\\Runner\\BeforeFirstTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php', - 'PHPUnit\\Runner\\BeforeTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php', - 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php', - 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php', - 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php', - 'PHPUnit\\Runner\\Hook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/Hook.php', - 'PHPUnit\\Runner\\NullTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Util/NullTestResultCache.php', - 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php', - 'PHPUnit\\Runner\\ResultCacheExtension' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php', - 'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', - 'PHPUnit\\Runner\\TestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestHook.php', - 'PHPUnit\\Runner\\TestListenerAdapter' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php', - 'PHPUnit\\Runner\\TestResultCache' => $vendorDir . '/phpunit/phpunit/src/Util/TestResultCache.php', - 'PHPUnit\\Runner\\TestResultCacheInterface' => $vendorDir . '/phpunit/phpunit/src/Util/TestResultCacheInterface.php', - 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', - 'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', - 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', - 'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php', - 'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', - 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', - 'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php', - 'PHPUnit\\Util\\Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php', - 'PHPUnit\\Util\\ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php', - 'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php', - 'PHPUnit\\Util\\FileLoader' => $vendorDir . '/phpunit/phpunit/src/Util/FileLoader.php', - 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', - 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php', - 'PHPUnit\\Util\\Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php', - 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php', - 'PHPUnit\\Util\\InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', - 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php', - 'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php', - 'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php', - 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php', - 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php', - 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php', - 'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php', - 'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php', - 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', - 'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php', - 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php', - 'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', - 'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', - 'PHPUnit\\Util\\TestDox\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TestResult.php', - 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php', - 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php', - 'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php', - 'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php', - 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php', - 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php', - 'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php', - 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php', - 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COALESCE_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php', - 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', - 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Util' => $vendorDir . '/phpunit/php-token-stream/src/Token/Util.php', - 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'Package_Command' => $vendorDir . '/wp-cli/package-command/src/Package_Command.php', - 'Peast\\Formatter\\Base' => $vendorDir . '/mck89/peast/lib/Peast/Formatter/Base.php', - 'Peast\\Formatter\\Compact' => $vendorDir . '/mck89/peast/lib/Peast/Formatter/Compact.php', - 'Peast\\Formatter\\Expanded' => $vendorDir . '/mck89/peast/lib/Peast/Formatter/Expanded.php', - 'Peast\\Formatter\\PrettyPrint' => $vendorDir . '/mck89/peast/lib/Peast/Formatter/PrettyPrint.php', - 'Peast\\Peast' => $vendorDir . '/mck89/peast/lib/Peast/Peast.php', - 'Peast\\Renderer' => $vendorDir . '/mck89/peast/lib/Peast/Renderer.php', - 'Peast\\Syntax\\CommentsRegistry' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/CommentsRegistry.php', - 'Peast\\Syntax\\ES2015\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2015/Features.php', - 'Peast\\Syntax\\ES2016\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2016/Features.php', - 'Peast\\Syntax\\ES2017\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2017/Features.php', - 'Peast\\Syntax\\ES2018\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2018/Features.php', - 'Peast\\Syntax\\ES2019\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2019/Features.php', - 'Peast\\Syntax\\ES2020\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ES2020/Features.php', - 'Peast\\Syntax\\EncodingException' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/EncodingException.php', - 'Peast\\Syntax\\EventsEmitter' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/EventsEmitter.php', - 'Peast\\Syntax\\Exception' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Exception.php', - 'Peast\\Syntax\\Features' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Features.php', - 'Peast\\Syntax\\JSX\\Parser' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/JSX/Parser.php', - 'Peast\\Syntax\\JSX\\Scanner' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/JSX/Scanner.php', - 'Peast\\Syntax\\LSM' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/LSM.php', - 'Peast\\Syntax\\Node\\ArrayExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ArrayExpression.php', - 'Peast\\Syntax\\Node\\ArrayPattern' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ArrayPattern.php', - 'Peast\\Syntax\\Node\\ArrowFunctionExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ArrowFunctionExpression.php', - 'Peast\\Syntax\\Node\\AssignmentExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentExpression.php', - 'Peast\\Syntax\\Node\\AssignmentPattern' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentPattern.php', - 'Peast\\Syntax\\Node\\AssignmentProperty' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentProperty.php', - 'Peast\\Syntax\\Node\\AwaitExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/AwaitExpression.php', - 'Peast\\Syntax\\Node\\BigIntLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BigIntLiteral.php', - 'Peast\\Syntax\\Node\\BinaryExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BinaryExpression.php', - 'Peast\\Syntax\\Node\\BlockStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BlockStatement.php', - 'Peast\\Syntax\\Node\\BooleanLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BooleanLiteral.php', - 'Peast\\Syntax\\Node\\BreakStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/BreakStatement.php', - 'Peast\\Syntax\\Node\\CallExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/CallExpression.php', - 'Peast\\Syntax\\Node\\CatchClause' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/CatchClause.php', - 'Peast\\Syntax\\Node\\ClassBody' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ClassBody.php', - 'Peast\\Syntax\\Node\\ClassDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ClassDeclaration.php', - 'Peast\\Syntax\\Node\\ClassExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ClassExpression.php', - 'Peast\\Syntax\\Node\\Class_' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Class_.php', - 'Peast\\Syntax\\Node\\Comment' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Comment.php', - 'Peast\\Syntax\\Node\\ConditionalExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ConditionalExpression.php', - 'Peast\\Syntax\\Node\\ContinueStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ContinueStatement.php', - 'Peast\\Syntax\\Node\\DebuggerStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/DebuggerStatement.php', - 'Peast\\Syntax\\Node\\Declaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Declaration.php', - 'Peast\\Syntax\\Node\\DoWhileStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/DoWhileStatement.php', - 'Peast\\Syntax\\Node\\EmptyStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/EmptyStatement.php', - 'Peast\\Syntax\\Node\\ExportAllDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExportAllDeclaration.php', - 'Peast\\Syntax\\Node\\ExportDefaultDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExportDefaultDeclaration.php', - 'Peast\\Syntax\\Node\\ExportNamedDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExportNamedDeclaration.php', - 'Peast\\Syntax\\Node\\ExportSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExportSpecifier.php', - 'Peast\\Syntax\\Node\\Expression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Expression.php', - 'Peast\\Syntax\\Node\\ExpressionStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ExpressionStatement.php', - 'Peast\\Syntax\\Node\\ForInStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ForInStatement.php', - 'Peast\\Syntax\\Node\\ForOfStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ForOfStatement.php', - 'Peast\\Syntax\\Node\\ForStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ForStatement.php', - 'Peast\\Syntax\\Node\\FunctionDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/FunctionDeclaration.php', - 'Peast\\Syntax\\Node\\FunctionExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/FunctionExpression.php', - 'Peast\\Syntax\\Node\\Function_' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Function_.php', - 'Peast\\Syntax\\Node\\Identifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Identifier.php', - 'Peast\\Syntax\\Node\\IfStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/IfStatement.php', - 'Peast\\Syntax\\Node\\ImportDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportDeclaration.php', - 'Peast\\Syntax\\Node\\ImportDefaultSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportDefaultSpecifier.php', - 'Peast\\Syntax\\Node\\ImportExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportExpression.php', - 'Peast\\Syntax\\Node\\ImportNamespaceSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportNamespaceSpecifier.php', - 'Peast\\Syntax\\Node\\ImportSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ImportSpecifier.php', - 'Peast\\Syntax\\Node\\JSX\\JSXAttribute' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXAttribute.php', - 'Peast\\Syntax\\Node\\JSX\\JSXBoundaryElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXBoundaryElement.php', - 'Peast\\Syntax\\Node\\JSX\\JSXClosingElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingElement.php', - 'Peast\\Syntax\\Node\\JSX\\JSXClosingFragment' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingFragment.php', - 'Peast\\Syntax\\Node\\JSX\\JSXElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXElement.php', - 'Peast\\Syntax\\Node\\JSX\\JSXEmptyExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXEmptyExpression.php', - 'Peast\\Syntax\\Node\\JSX\\JSXExpressionContainer' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXExpressionContainer.php', - 'Peast\\Syntax\\Node\\JSX\\JSXFragment' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXFragment.php', - 'Peast\\Syntax\\Node\\JSX\\JSXIdentifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXIdentifier.php', - 'Peast\\Syntax\\Node\\JSX\\JSXMemberExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXMemberExpression.php', - 'Peast\\Syntax\\Node\\JSX\\JSXNamespacedName' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXNamespacedName.php', - 'Peast\\Syntax\\Node\\JSX\\JSXOpeningElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningElement.php', - 'Peast\\Syntax\\Node\\JSX\\JSXOpeningFragment' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningFragment.php', - 'Peast\\Syntax\\Node\\JSX\\JSXSpreadAttribute' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadAttribute.php', - 'Peast\\Syntax\\Node\\JSX\\JSXSpreadChild' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadChild.php', - 'Peast\\Syntax\\Node\\JSX\\JSXText' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXText.php', - 'Peast\\Syntax\\Node\\LabeledStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/LabeledStatement.php', - 'Peast\\Syntax\\Node\\Literal' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Literal.php', - 'Peast\\Syntax\\Node\\LogicalExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/LogicalExpression.php', - 'Peast\\Syntax\\Node\\MemberExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/MemberExpression.php', - 'Peast\\Syntax\\Node\\MetaProperty' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/MetaProperty.php', - 'Peast\\Syntax\\Node\\MethodDefinition' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/MethodDefinition.php', - 'Peast\\Syntax\\Node\\ModuleDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ModuleDeclaration.php', - 'Peast\\Syntax\\Node\\ModuleSpecifier' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ModuleSpecifier.php', - 'Peast\\Syntax\\Node\\NewExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/NewExpression.php', - 'Peast\\Syntax\\Node\\Node' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Node.php', - 'Peast\\Syntax\\Node\\NullLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/NullLiteral.php', - 'Peast\\Syntax\\Node\\NumericLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/NumericLiteral.php', - 'Peast\\Syntax\\Node\\ObjectExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ObjectExpression.php', - 'Peast\\Syntax\\Node\\ObjectPattern' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ObjectPattern.php', - 'Peast\\Syntax\\Node\\ParenthesizedExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ParenthesizedExpression.php', - 'Peast\\Syntax\\Node\\Pattern' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Pattern.php', - 'Peast\\Syntax\\Node\\Program' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Program.php', - 'Peast\\Syntax\\Node\\Property' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Property.php', - 'Peast\\Syntax\\Node\\RegExpLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/RegExpLiteral.php', - 'Peast\\Syntax\\Node\\RestElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/RestElement.php', - 'Peast\\Syntax\\Node\\ReturnStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ReturnStatement.php', - 'Peast\\Syntax\\Node\\SequenceExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/SequenceExpression.php', - 'Peast\\Syntax\\Node\\SpreadElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/SpreadElement.php', - 'Peast\\Syntax\\Node\\Statement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Statement.php', - 'Peast\\Syntax\\Node\\StringLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/StringLiteral.php', - 'Peast\\Syntax\\Node\\Super' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/Super.php', - 'Peast\\Syntax\\Node\\SwitchCase' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/SwitchCase.php', - 'Peast\\Syntax\\Node\\SwitchStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/SwitchStatement.php', - 'Peast\\Syntax\\Node\\TaggedTemplateExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/TaggedTemplateExpression.php', - 'Peast\\Syntax\\Node\\TemplateElement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/TemplateElement.php', - 'Peast\\Syntax\\Node\\TemplateLiteral' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/TemplateLiteral.php', - 'Peast\\Syntax\\Node\\ThisExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ThisExpression.php', - 'Peast\\Syntax\\Node\\ThrowStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/ThrowStatement.php', - 'Peast\\Syntax\\Node\\TryStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/TryStatement.php', - 'Peast\\Syntax\\Node\\UnaryExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/UnaryExpression.php', - 'Peast\\Syntax\\Node\\UpdateExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/UpdateExpression.php', - 'Peast\\Syntax\\Node\\VariableDeclaration' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/VariableDeclaration.php', - 'Peast\\Syntax\\Node\\VariableDeclarator' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/VariableDeclarator.php', - 'Peast\\Syntax\\Node\\WhileStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/WhileStatement.php', - 'Peast\\Syntax\\Node\\WithStatement' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/WithStatement.php', - 'Peast\\Syntax\\Node\\YieldExpression' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Node/YieldExpression.php', - 'Peast\\Syntax\\Parser' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Parser.php', - 'Peast\\Syntax\\ParserAbstract' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/ParserAbstract.php', - 'Peast\\Syntax\\Position' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Position.php', - 'Peast\\Syntax\\Scanner' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Scanner.php', - 'Peast\\Syntax\\SourceLocation' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/SourceLocation.php', - 'Peast\\Syntax\\Token' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Token.php', - 'Peast\\Syntax\\Utils' => $vendorDir . '/mck89/peast/lib/Peast/Syntax/Utils.php', - 'Peast\\Traverser' => $vendorDir . '/mck89/peast/lib/Peast/Traverser.php', - 'Peast\\test\\PeastTest' => $vendorDir . '/mck89/peast/test/Peast/PeastTest.php', - 'Peast\\test\\Syntax\\CommentsRegistryTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/CommentsRegistryTest.php', - 'Peast\\test\\Syntax\\ES2015\\ES2015Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2015/ES2015Test.php', - 'Peast\\test\\Syntax\\ES2016\\ES2016Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2016/ES2016Test.php', - 'Peast\\test\\Syntax\\ES2017\\ES2017Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2017/ES2017Test.php', - 'Peast\\test\\Syntax\\ES2018\\ES2018Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2018/ES2018Test.php', - 'Peast\\test\\Syntax\\ES2019\\ES2019Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2019/ES2019Test.php', - 'Peast\\test\\Syntax\\ES2020\\ES2020Test' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ES2020/ES2020Test.php', - 'Peast\\test\\Syntax\\Node\\BooleanLiteralTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/BooleanLiteralTest.php', - 'Peast\\test\\Syntax\\Node\\CommentTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/CommentTest.php', - 'Peast\\test\\Syntax\\Node\\NullLiteralTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/NullLiteralTest.php', - 'Peast\\test\\Syntax\\Node\\NumericLiteralTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/NumericLiteralTest.php', - 'Peast\\test\\Syntax\\Node\\StringLiteralTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/Node/StringLiteralTest.php', - 'Peast\\test\\Syntax\\ScannerTest' => $vendorDir . '/mck89/peast/test/Peast/Syntax/ScannerTest.php', - 'Peast\\test\\TestBase' => $vendorDir . '/mck89/peast/test/Peast/TestBase.php', - 'Peast\\test\\TestCaseBase' => $vendorDir . '/mck89/peast/test/Peast/TestCaseBase.php', - 'Peast\\test\\TestParser' => $vendorDir . '/mck89/peast/test/Peast/TestParser.php', - 'Peast\\test\\Traverser\\RendererTest' => $vendorDir . '/mck89/peast/test/Peast/RendererTest.php', - 'Peast\\test\\Traverser\\TraverserTest' => $vendorDir . '/mck89/peast/test/Peast/TraverserTest.php', - 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php', - 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php', - 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php', - 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php', - 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php', - 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php', - 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php', - 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php', - 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php', - 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php', - 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php', - 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php', - 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php', - 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php', - 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php', - 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php', - 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php', - 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php', - 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php', - 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php', - 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php', - 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php', - 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php', - 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php', - 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php', - 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php', - 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php', - 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php', - 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php', - 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php', - 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php', - 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php', - 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php', - 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php', - 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php', - 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php', - 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php', - 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php', - 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php', - 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php', - 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php', - 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php', - 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php', - 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php', - 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php', - 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php', - 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php', - 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php', - 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php', - 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AbstractVersionConstraint.php', - 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php', - 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AnyVersionConstraint.php', - 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/ExactVersionConstraint.php', - 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/exceptions/Exception.php', - 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php', - 'PharIo\\Version\\InvalidPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php', - 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidVersionException.php', - 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php', - 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php', - 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', - 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php', - 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php', - 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php', - 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/VersionConstraint.php', - 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php', - 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php', - 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php', - 'PhpOption\\LazyOption' => $vendorDir . '/phpoption/phpoption/src/PhpOption/LazyOption.php', - 'PhpOption\\None' => $vendorDir . '/phpoption/phpoption/src/PhpOption/None.php', - 'PhpOption\\Option' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Option.php', - 'PhpOption\\Some' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Some.php', - 'Plugin_Command' => $vendorDir . '/wp-cli/extension-command/src/Plugin_Command.php', - 'Plugin_Command_Namespace' => $vendorDir . '/wp-cli/checksum-command/src/Plugin_Command_Namespace.php', - 'Plugin_Language_Command' => $vendorDir . '/wp-cli/language-command/src/Plugin_Language_Command.php', - 'Post_Command' => $vendorDir . '/wp-cli/entity-command/src/Post_Command.php', - 'Post_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Post_Meta_Command.php', - 'Post_Term_Command' => $vendorDir . '/wp-cli/entity-command/src/Post_Term_Command.php', - 'Post_Type_Command' => $vendorDir . '/wp-cli/entity-command/src/Post_Type_Command.php', - 'Prophecy\\Argument' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument.php', - 'Prophecy\\Argument\\ArgumentsWildcard' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php', - 'Prophecy\\Argument\\Token\\AnyValueToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php', - 'Prophecy\\Argument\\Token\\AnyValuesToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php', - 'Prophecy\\Argument\\Token\\ApproximateValueToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php', - 'Prophecy\\Argument\\Token\\ArrayCountToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php', - 'Prophecy\\Argument\\Token\\ArrayEntryToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php', - 'Prophecy\\Argument\\Token\\ArrayEveryEntryToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php', - 'Prophecy\\Argument\\Token\\CallbackToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php', - 'Prophecy\\Argument\\Token\\ExactValueToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php', - 'Prophecy\\Argument\\Token\\IdenticalValueToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php', - 'Prophecy\\Argument\\Token\\LogicalAndToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php', - 'Prophecy\\Argument\\Token\\LogicalNotToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php', - 'Prophecy\\Argument\\Token\\ObjectStateToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php', - 'Prophecy\\Argument\\Token\\StringContainsToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php', - 'Prophecy\\Argument\\Token\\TokenInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php', - 'Prophecy\\Argument\\Token\\TypeToken' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php', - 'Prophecy\\Call\\Call' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Call/Call.php', - 'Prophecy\\Call\\CallCenter' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Call/CallCenter.php', - 'Prophecy\\Comparator\\ClosureComparator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php', - 'Prophecy\\Comparator\\Factory' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Comparator/Factory.php', - 'Prophecy\\Comparator\\ProphecyComparator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php', - 'Prophecy\\Doubler\\CachedDoubler' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php', - 'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php', - 'Prophecy\\Doubler\\ClassPatch\\DisableConstructorPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\HhvmExceptionPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\KeywordPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\MagicCallPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\ProphecySubjectPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\ReflectionClassNewInstancePatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php', - 'Prophecy\\Doubler\\ClassPatch\\SplFileInfoPatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\ThrowablePatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php', - 'Prophecy\\Doubler\\ClassPatch\\TraversablePatch' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php', - 'Prophecy\\Doubler\\DoubleInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php', - 'Prophecy\\Doubler\\Doubler' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php', - 'Prophecy\\Doubler\\Generator\\ClassCodeGenerator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php', - 'Prophecy\\Doubler\\Generator\\ClassCreator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php', - 'Prophecy\\Doubler\\Generator\\ClassMirror' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php', - 'Prophecy\\Doubler\\Generator\\Node\\ArgumentNode' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php', - 'Prophecy\\Doubler\\Generator\\Node\\ClassNode' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php', - 'Prophecy\\Doubler\\Generator\\Node\\MethodNode' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php', - 'Prophecy\\Doubler\\Generator\\ReflectionInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php', - 'Prophecy\\Doubler\\Generator\\TypeHintReference' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php', - 'Prophecy\\Doubler\\LazyDouble' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php', - 'Prophecy\\Doubler\\NameGenerator' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php', - 'Prophecy\\Exception\\Call\\UnexpectedCallException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php', - 'Prophecy\\Exception\\Doubler\\ClassCreatorException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php', - 'Prophecy\\Exception\\Doubler\\ClassMirrorException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php', - 'Prophecy\\Exception\\Doubler\\ClassNotFoundException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php', - 'Prophecy\\Exception\\Doubler\\DoubleException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php', - 'Prophecy\\Exception\\Doubler\\DoublerException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php', - 'Prophecy\\Exception\\Doubler\\InterfaceNotFoundException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php', - 'Prophecy\\Exception\\Doubler\\MethodNotExtendableException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php', - 'Prophecy\\Exception\\Doubler\\MethodNotFoundException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php', - 'Prophecy\\Exception\\Doubler\\ReturnByReferenceException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php', - 'Prophecy\\Exception\\Exception' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Exception.php', - 'Prophecy\\Exception\\InvalidArgumentException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php', - 'Prophecy\\Exception\\Prediction\\AggregateException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php', - 'Prophecy\\Exception\\Prediction\\FailedPredictionException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php', - 'Prophecy\\Exception\\Prediction\\NoCallsException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php', - 'Prophecy\\Exception\\Prediction\\PredictionException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php', - 'Prophecy\\Exception\\Prediction\\UnexpectedCallsCountException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php', - 'Prophecy\\Exception\\Prediction\\UnexpectedCallsException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php', - 'Prophecy\\Exception\\Prophecy\\MethodProphecyException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php', - 'Prophecy\\Exception\\Prophecy\\ObjectProphecyException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php', - 'Prophecy\\Exception\\Prophecy\\ProphecyException' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php', - 'Prophecy\\PhpDocumentor\\ClassAndInterfaceTagRetriever' => $vendorDir . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php', - 'Prophecy\\PhpDocumentor\\ClassTagRetriever' => $vendorDir . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php', - 'Prophecy\\PhpDocumentor\\LegacyClassTagRetriever' => $vendorDir . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php', - 'Prophecy\\PhpDocumentor\\MethodTagRetrieverInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php', - 'Prophecy\\Prediction\\CallPrediction' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php', - 'Prophecy\\Prediction\\CallTimesPrediction' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php', - 'Prophecy\\Prediction\\CallbackPrediction' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php', - 'Prophecy\\Prediction\\NoCallsPrediction' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php', - 'Prophecy\\Prediction\\PredictionInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php', - 'Prophecy\\Promise\\CallbackPromise' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php', - 'Prophecy\\Promise\\PromiseInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php', - 'Prophecy\\Promise\\ReturnArgumentPromise' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php', - 'Prophecy\\Promise\\ReturnPromise' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php', - 'Prophecy\\Promise\\ThrowPromise' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php', - 'Prophecy\\Prophecy\\MethodProphecy' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php', - 'Prophecy\\Prophecy\\ObjectProphecy' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php', - 'Prophecy\\Prophecy\\ProphecyInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php', - 'Prophecy\\Prophecy\\ProphecySubjectInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php', - 'Prophecy\\Prophecy\\Revealer' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php', - 'Prophecy\\Prophecy\\RevealerInterface' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php', - 'Prophecy\\Prophet' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Prophet.php', - 'Prophecy\\Util\\ExportUtil' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php', - 'Prophecy\\Util\\StringUtil' => $vendorDir . '/phpspec/prophecy/src/Prophecy/Util/StringUtil.php', - 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', - 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', - 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', - 'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', - 'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', - 'Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', - 'Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', - 'Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', - 'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', - 'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', - 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php', - 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php', - 'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php', - 'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php', - 'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php', - 'Requests' => $vendorDir . '/rmccue/requests/library/Requests.php', - 'Requests_Auth' => $vendorDir . '/rmccue/requests/library/Requests/Auth.php', - 'Requests_Auth_Basic' => $vendorDir . '/rmccue/requests/library/Requests/Auth/Basic.php', - 'Requests_Cookie' => $vendorDir . '/rmccue/requests/library/Requests/Cookie.php', - 'Requests_Cookie_Jar' => $vendorDir . '/rmccue/requests/library/Requests/Cookie/Jar.php', - 'Requests_Exception' => $vendorDir . '/rmccue/requests/library/Requests/Exception.php', - 'Requests_Exception_HTTP' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP.php', - 'Requests_Exception_HTTP_304' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/304.php', - 'Requests_Exception_HTTP_305' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/305.php', - 'Requests_Exception_HTTP_306' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/306.php', - 'Requests_Exception_HTTP_400' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/400.php', - 'Requests_Exception_HTTP_401' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/401.php', - 'Requests_Exception_HTTP_402' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/402.php', - 'Requests_Exception_HTTP_403' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/403.php', - 'Requests_Exception_HTTP_404' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/404.php', - 'Requests_Exception_HTTP_405' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/405.php', - 'Requests_Exception_HTTP_406' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/406.php', - 'Requests_Exception_HTTP_407' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/407.php', - 'Requests_Exception_HTTP_408' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/408.php', - 'Requests_Exception_HTTP_409' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/409.php', - 'Requests_Exception_HTTP_410' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/410.php', - 'Requests_Exception_HTTP_411' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/411.php', - 'Requests_Exception_HTTP_412' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/412.php', - 'Requests_Exception_HTTP_413' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/413.php', - 'Requests_Exception_HTTP_414' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/414.php', - 'Requests_Exception_HTTP_415' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/415.php', - 'Requests_Exception_HTTP_416' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/416.php', - 'Requests_Exception_HTTP_417' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/417.php', - 'Requests_Exception_HTTP_418' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/418.php', - 'Requests_Exception_HTTP_428' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/428.php', - 'Requests_Exception_HTTP_429' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/429.php', - 'Requests_Exception_HTTP_431' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/431.php', - 'Requests_Exception_HTTP_500' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/500.php', - 'Requests_Exception_HTTP_501' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/501.php', - 'Requests_Exception_HTTP_502' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/502.php', - 'Requests_Exception_HTTP_503' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/503.php', - 'Requests_Exception_HTTP_504' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/504.php', - 'Requests_Exception_HTTP_505' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/505.php', - 'Requests_Exception_HTTP_511' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/511.php', - 'Requests_Exception_HTTP_Unknown' => $vendorDir . '/rmccue/requests/library/Requests/Exception/HTTP/Unknown.php', - 'Requests_Exception_Transport' => $vendorDir . '/rmccue/requests/library/Requests/Exception/Transport.php', - 'Requests_Exception_Transport_cURL' => $vendorDir . '/rmccue/requests/library/Requests/Exception/Transport/cURL.php', - 'Requests_Hooker' => $vendorDir . '/rmccue/requests/library/Requests/Hooker.php', - 'Requests_Hooks' => $vendorDir . '/rmccue/requests/library/Requests/Hooks.php', - 'Requests_IDNAEncoder' => $vendorDir . '/rmccue/requests/library/Requests/IDNAEncoder.php', - 'Requests_IPv6' => $vendorDir . '/rmccue/requests/library/Requests/IPv6.php', - 'Requests_IRI' => $vendorDir . '/rmccue/requests/library/Requests/IRI.php', - 'Requests_Proxy' => $vendorDir . '/rmccue/requests/library/Requests/Proxy.php', - 'Requests_Proxy_HTTP' => $vendorDir . '/rmccue/requests/library/Requests/Proxy/HTTP.php', - 'Requests_Response' => $vendorDir . '/rmccue/requests/library/Requests/Response.php', - 'Requests_Response_Headers' => $vendorDir . '/rmccue/requests/library/Requests/Response/Headers.php', - 'Requests_SSL' => $vendorDir . '/rmccue/requests/library/Requests/SSL.php', - 'Requests_Session' => $vendorDir . '/rmccue/requests/library/Requests/Session.php', - 'Requests_Transport' => $vendorDir . '/rmccue/requests/library/Requests/Transport.php', - 'Requests_Transport_cURL' => $vendorDir . '/rmccue/requests/library/Requests/Transport/cURL.php', - 'Requests_Transport_fsockopen' => $vendorDir . '/rmccue/requests/library/Requests/Transport/fsockopen.php', - 'Requests_Utility_CaseInsensitiveDictionary' => $vendorDir . '/rmccue/requests/library/Requests/Utility/CaseInsensitiveDictionary.php', - 'Requests_Utility_FilteredIterator' => $vendorDir . '/rmccue/requests/library/Requests/Utility/FilteredIterator.php', - 'Rewrite_Command' => $vendorDir . '/wp-cli/rewrite-command/src/Rewrite_Command.php', - 'Role_Command' => $vendorDir . '/wp-cli/role-command/src/Role_Command.php', - 'Scaffold_Command' => $vendorDir . '/wp-cli/scaffold-command/src/Scaffold_Command.php', - 'Search_Replace_Command' => $vendorDir . '/wp-cli/search-replace-command/src/Search_Replace_Command.php', - 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', - 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', - 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php', - 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php', - 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', - 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', - 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', - 'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php', - 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', - 'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php', - 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php', - 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', - 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', - 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', - 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', - 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', - 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', - 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php', - 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', - 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', - 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', - 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', - 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', - 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', - 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', - 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', - 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', - 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php', - 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php', - 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', - 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', - 'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php', - 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', - 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\FileIterator\\Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', - 'SebastianBergmann\\FileIterator\\Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', - 'SebastianBergmann\\FileIterator\\Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', - 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php', - 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php', - 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php', - 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php', - 'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php', - 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php', - 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php', - 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php', - 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php', - 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php', - 'SebastianBergmann\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/Exception.php', - 'SebastianBergmann\\Timer\\RuntimeException' => $vendorDir . '/phpunit/php-timer/src/RuntimeException.php', - 'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', - 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', - 'Seld\\JsonLint\\DuplicateKeyException' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php', - 'Seld\\JsonLint\\JsonParser' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/JsonParser.php', - 'Seld\\JsonLint\\Lexer' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/Lexer.php', - 'Seld\\JsonLint\\ParsingException' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/ParsingException.php', - 'Seld\\JsonLint\\Undefined' => $vendorDir . '/seld/jsonlint/src/Seld/JsonLint/Undefined.php', - 'Seld\\PharUtils\\Linter' => $vendorDir . '/seld/phar-utils/src/Linter.php', - 'Seld\\PharUtils\\Timestamps' => $vendorDir . '/seld/phar-utils/src/Timestamps.php', - 'Server_Command' => $vendorDir . '/wp-cli/server-command/src/Server_Command.php', - 'Shell_Command' => $vendorDir . '/wp-cli/shell-command/src/Shell_Command.php', - 'Sidebar_Command' => $vendorDir . '/wp-cli/widget-command/src/Sidebar_Command.php', - 'Site_Command' => $vendorDir . '/wp-cli/entity-command/src/Site_Command.php', - 'Site_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Site_Meta_Command.php', - 'Site_Option_Command' => $vendorDir . '/wp-cli/entity-command/src/Site_Option_Command.php', - 'Site_Switch_Language_Command' => $vendorDir . '/wp-cli/language-command/src/Site_Switch_Language_Command.php', - 'Super_Admin_Command' => $vendorDir . '/wp-cli/super-admin-command/src/Super_Admin_Command.php', - 'Symfony\\Component\\BrowserKit\\AbstractBrowser' => $vendorDir . '/symfony/browser-kit/AbstractBrowser.php', - 'Symfony\\Component\\BrowserKit\\Client' => $vendorDir . '/symfony/browser-kit/Client.php', - 'Symfony\\Component\\BrowserKit\\Cookie' => $vendorDir . '/symfony/browser-kit/Cookie.php', - 'Symfony\\Component\\BrowserKit\\CookieJar' => $vendorDir . '/symfony/browser-kit/CookieJar.php', - 'Symfony\\Component\\BrowserKit\\Exception\\BadMethodCallException' => $vendorDir . '/symfony/browser-kit/Exception/BadMethodCallException.php', - 'Symfony\\Component\\BrowserKit\\History' => $vendorDir . '/symfony/browser-kit/History.php', - 'Symfony\\Component\\BrowserKit\\HttpBrowser' => $vendorDir . '/symfony/browser-kit/HttpBrowser.php', - 'Symfony\\Component\\BrowserKit\\Request' => $vendorDir . '/symfony/browser-kit/Request.php', - 'Symfony\\Component\\BrowserKit\\Response' => $vendorDir . '/symfony/browser-kit/Response.php', - 'Symfony\\Component\\BrowserKit\\Test\\Constraint\\BrowserCookieValueSame' => $vendorDir . '/symfony/browser-kit/Test/Constraint/BrowserCookieValueSame.php', - 'Symfony\\Component\\BrowserKit\\Test\\Constraint\\BrowserHasCookie' => $vendorDir . '/symfony/browser-kit/Test/Constraint/BrowserHasCookie.php', - 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', - 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php', - 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php', - 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php', - 'Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php', - 'Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php', - 'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php', - 'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php', - 'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php', - 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', - 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php', - 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php', - 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php', - 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php', - 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => $vendorDir . '/symfony/console/Event/ConsoleCommandEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => $vendorDir . '/symfony/console/Event/ConsoleErrorEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => $vendorDir . '/symfony/console/Event/ConsoleEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => $vendorDir . '/symfony/console/Event/ConsoleTerminateEvent.php', - 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php', - 'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php', - 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php', - 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php', - 'Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php', - 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php', - 'Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php', - 'Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php', - 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php', - 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php', - 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php', - 'Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php', - 'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php', - 'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php', - 'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php', - 'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php', - 'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php', - 'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php', - 'Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php', - 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php', - 'Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php', - 'Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php', - 'Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php', - 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php', - 'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php', - 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php', - 'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php', - 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php', - 'Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php', - 'Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php', - 'Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php', - 'Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php', - 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php', - 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php', - 'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php', - 'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php', - 'Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php', - 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php', - 'Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php', - 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => $vendorDir . '/symfony/console/Tester/ApplicationTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandTester' => $vendorDir . '/symfony/console/Tester/CommandTester.php', - 'Symfony\\Component\\Console\\Tester\\TesterTrait' => $vendorDir . '/symfony/console/Tester/TesterTrait.php', - 'Symfony\\Component\\CssSelector\\CssSelectorConverter' => $vendorDir . '/symfony/css-selector/CssSelectorConverter.php', - 'Symfony\\Component\\CssSelector\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/css-selector/Exception/ExceptionInterface.php', - 'Symfony\\Component\\CssSelector\\Exception\\ExpressionErrorException' => $vendorDir . '/symfony/css-selector/Exception/ExpressionErrorException.php', - 'Symfony\\Component\\CssSelector\\Exception\\InternalErrorException' => $vendorDir . '/symfony/css-selector/Exception/InternalErrorException.php', - 'Symfony\\Component\\CssSelector\\Exception\\ParseException' => $vendorDir . '/symfony/css-selector/Exception/ParseException.php', - 'Symfony\\Component\\CssSelector\\Exception\\SyntaxErrorException' => $vendorDir . '/symfony/css-selector/Exception/SyntaxErrorException.php', - 'Symfony\\Component\\CssSelector\\Node\\AbstractNode' => $vendorDir . '/symfony/css-selector/Node/AbstractNode.php', - 'Symfony\\Component\\CssSelector\\Node\\AttributeNode' => $vendorDir . '/symfony/css-selector/Node/AttributeNode.php', - 'Symfony\\Component\\CssSelector\\Node\\ClassNode' => $vendorDir . '/symfony/css-selector/Node/ClassNode.php', - 'Symfony\\Component\\CssSelector\\Node\\CombinedSelectorNode' => $vendorDir . '/symfony/css-selector/Node/CombinedSelectorNode.php', - 'Symfony\\Component\\CssSelector\\Node\\ElementNode' => $vendorDir . '/symfony/css-selector/Node/ElementNode.php', - 'Symfony\\Component\\CssSelector\\Node\\FunctionNode' => $vendorDir . '/symfony/css-selector/Node/FunctionNode.php', - 'Symfony\\Component\\CssSelector\\Node\\HashNode' => $vendorDir . '/symfony/css-selector/Node/HashNode.php', - 'Symfony\\Component\\CssSelector\\Node\\NegationNode' => $vendorDir . '/symfony/css-selector/Node/NegationNode.php', - 'Symfony\\Component\\CssSelector\\Node\\NodeInterface' => $vendorDir . '/symfony/css-selector/Node/NodeInterface.php', - 'Symfony\\Component\\CssSelector\\Node\\PseudoNode' => $vendorDir . '/symfony/css-selector/Node/PseudoNode.php', - 'Symfony\\Component\\CssSelector\\Node\\SelectorNode' => $vendorDir . '/symfony/css-selector/Node/SelectorNode.php', - 'Symfony\\Component\\CssSelector\\Node\\Specificity' => $vendorDir . '/symfony/css-selector/Node/Specificity.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\CommentHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/CommentHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HandlerInterface' => $vendorDir . '/symfony/css-selector/Parser/Handler/HandlerInterface.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HashHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/HashHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\IdentifierHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/IdentifierHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\NumberHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/NumberHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\StringHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/StringHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\WhitespaceHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/WhitespaceHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Parser' => $vendorDir . '/symfony/css-selector/Parser/Parser.php', - 'Symfony\\Component\\CssSelector\\Parser\\ParserInterface' => $vendorDir . '/symfony/css-selector/Parser/ParserInterface.php', - 'Symfony\\Component\\CssSelector\\Parser\\Reader' => $vendorDir . '/symfony/css-selector/Parser/Reader.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ClassParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/ClassParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ElementParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/ElementParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\EmptyStringParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\HashParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/HashParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Token' => $vendorDir . '/symfony/css-selector/Parser/Token.php', - 'Symfony\\Component\\CssSelector\\Parser\\TokenStream' => $vendorDir . '/symfony/css-selector/Parser/TokenStream.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\Tokenizer' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/Tokenizer.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerEscaping' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerPatterns' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AbstractExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/AbstractExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AttributeMatchingExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\CombinationExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/CombinationExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\ExtensionInterface' => $vendorDir . '/symfony/css-selector/XPath/Extension/ExtensionInterface.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\FunctionExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/FunctionExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\HtmlExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/HtmlExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\NodeExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/NodeExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\PseudoClassExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/PseudoClassExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Translator' => $vendorDir . '/symfony/css-selector/XPath/Translator.php', - 'Symfony\\Component\\CssSelector\\XPath\\TranslatorInterface' => $vendorDir . '/symfony/css-selector/XPath/TranslatorInterface.php', - 'Symfony\\Component\\CssSelector\\XPath\\XPathExpr' => $vendorDir . '/symfony/css-selector/XPath/XPathExpr.php', - 'Symfony\\Component\\DomCrawler\\AbstractUriElement' => $vendorDir . '/symfony/dom-crawler/AbstractUriElement.php', - 'Symfony\\Component\\DomCrawler\\Crawler' => $vendorDir . '/symfony/dom-crawler/Crawler.php', - 'Symfony\\Component\\DomCrawler\\Field\\ChoiceFormField' => $vendorDir . '/symfony/dom-crawler/Field/ChoiceFormField.php', - 'Symfony\\Component\\DomCrawler\\Field\\FileFormField' => $vendorDir . '/symfony/dom-crawler/Field/FileFormField.php', - 'Symfony\\Component\\DomCrawler\\Field\\FormField' => $vendorDir . '/symfony/dom-crawler/Field/FormField.php', - 'Symfony\\Component\\DomCrawler\\Field\\InputFormField' => $vendorDir . '/symfony/dom-crawler/Field/InputFormField.php', - 'Symfony\\Component\\DomCrawler\\Field\\TextareaFormField' => $vendorDir . '/symfony/dom-crawler/Field/TextareaFormField.php', - 'Symfony\\Component\\DomCrawler\\Form' => $vendorDir . '/symfony/dom-crawler/Form.php', - 'Symfony\\Component\\DomCrawler\\FormFieldRegistry' => $vendorDir . '/symfony/dom-crawler/FormFieldRegistry.php', - 'Symfony\\Component\\DomCrawler\\Image' => $vendorDir . '/symfony/dom-crawler/Image.php', - 'Symfony\\Component\\DomCrawler\\Link' => $vendorDir . '/symfony/dom-crawler/Link.php', - 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorAttributeValueSame' => $vendorDir . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorAttributeValueSame.php', - 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorExists' => $vendorDir . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorExists.php', - 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorTextContains' => $vendorDir . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorTextContains.php', - 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorTextSame' => $vendorDir . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorTextSame.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => $vendorDir . '/symfony/event-dispatcher/Debug/WrappedListener.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\ExtractingEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher/Event.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/EventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/EventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php', - 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php', - 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\LegacyEventDispatcherProxy' => $vendorDir . '/symfony/event-dispatcher/LegacyEventDispatcherProxy.php', - 'Symfony\\Component\\EventDispatcher\\LegacyEventProxy' => $vendorDir . '/symfony/event-dispatcher/LegacyEventProxy.php', - 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php', - 'Symfony\\Component\\Filesystem\\LockHandler' => $vendorDir . '/symfony/filesystem/LockHandler.php', - 'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php', - 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php', - 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php', - 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php', - 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php', - 'Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php', - 'Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php', - 'Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php', - 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php', - 'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php', - 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php', - 'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php', - 'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php', - 'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php', - 'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php', - 'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php', - 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php', - 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php', - 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php', - 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php', - 'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php', - 'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php', - 'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php', - 'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => $vendorDir . '/symfony/translation/Catalogue/MergeOperation.php', - 'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => $vendorDir . '/symfony/translation/Catalogue/OperationInterface.php', - 'Symfony\\Component\\Translation\\Catalogue\\TargetOperation' => $vendorDir . '/symfony/translation/Catalogue/TargetOperation.php', - 'Symfony\\Component\\Translation\\Command\\XliffLintCommand' => $vendorDir . '/symfony/translation/Command/XliffLintCommand.php', - 'Symfony\\Component\\Translation\\DataCollectorTranslator' => $vendorDir . '/symfony/translation/DataCollectorTranslator.php', - 'Symfony\\Component\\Translation\\DataCollector\\TranslationDataCollector' => $vendorDir . '/symfony/translation/DataCollector/TranslationDataCollector.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationDumperPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslationDumperPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationExtractorPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslationExtractorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslatorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPathsPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslatorPathsPass.php', - 'Symfony\\Component\\Translation\\Dumper\\CsvFileDumper' => $vendorDir . '/symfony/translation/Dumper/CsvFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\DumperInterface' => $vendorDir . '/symfony/translation/Dumper/DumperInterface.php', - 'Symfony\\Component\\Translation\\Dumper\\FileDumper' => $vendorDir . '/symfony/translation/Dumper/FileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\IcuResFileDumper' => $vendorDir . '/symfony/translation/Dumper/IcuResFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\IniFileDumper' => $vendorDir . '/symfony/translation/Dumper/IniFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\JsonFileDumper' => $vendorDir . '/symfony/translation/Dumper/JsonFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\MoFileDumper' => $vendorDir . '/symfony/translation/Dumper/MoFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\PhpFileDumper' => $vendorDir . '/symfony/translation/Dumper/PhpFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\PoFileDumper' => $vendorDir . '/symfony/translation/Dumper/PoFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\QtFileDumper' => $vendorDir . '/symfony/translation/Dumper/QtFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\XliffFileDumper' => $vendorDir . '/symfony/translation/Dumper/XliffFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\YamlFileDumper' => $vendorDir . '/symfony/translation/Dumper/YamlFileDumper.php', - 'Symfony\\Component\\Translation\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/translation/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Translation\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/translation/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Translation\\Exception\\InvalidResourceException' => $vendorDir . '/symfony/translation/Exception/InvalidResourceException.php', - 'Symfony\\Component\\Translation\\Exception\\LogicException' => $vendorDir . '/symfony/translation/Exception/LogicException.php', - 'Symfony\\Component\\Translation\\Exception\\NotFoundResourceException' => $vendorDir . '/symfony/translation/Exception/NotFoundResourceException.php', - 'Symfony\\Component\\Translation\\Exception\\RuntimeException' => $vendorDir . '/symfony/translation/Exception/RuntimeException.php', - 'Symfony\\Component\\Translation\\Extractor\\AbstractFileExtractor' => $vendorDir . '/symfony/translation/Extractor/AbstractFileExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\ChainExtractor' => $vendorDir . '/symfony/translation/Extractor/ChainExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\ExtractorInterface' => $vendorDir . '/symfony/translation/Extractor/ExtractorInterface.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpExtractor' => $vendorDir . '/symfony/translation/Extractor/PhpExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpStringTokenParser' => $vendorDir . '/symfony/translation/Extractor/PhpStringTokenParser.php', - 'Symfony\\Component\\Translation\\Formatter\\IntlFormatter' => $vendorDir . '/symfony/translation/Formatter/IntlFormatter.php', - 'Symfony\\Component\\Translation\\Formatter\\IntlFormatterInterface' => $vendorDir . '/symfony/translation/Formatter/IntlFormatterInterface.php', - 'Symfony\\Component\\Translation\\Formatter\\MessageFormatter' => $vendorDir . '/symfony/translation/Formatter/MessageFormatter.php', - 'Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface' => $vendorDir . '/symfony/translation/Formatter/MessageFormatterInterface.php', - 'Symfony\\Component\\Translation\\IdentityTranslator' => $vendorDir . '/symfony/translation/IdentityTranslator.php', - 'Symfony\\Component\\Translation\\Loader\\ArrayLoader' => $vendorDir . '/symfony/translation/Loader/ArrayLoader.php', - 'Symfony\\Component\\Translation\\Loader\\CsvFileLoader' => $vendorDir . '/symfony/translation/Loader/CsvFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\FileLoader' => $vendorDir . '/symfony/translation/Loader/FileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IcuDatFileLoader' => $vendorDir . '/symfony/translation/Loader/IcuDatFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IcuResFileLoader' => $vendorDir . '/symfony/translation/Loader/IcuResFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IniFileLoader' => $vendorDir . '/symfony/translation/Loader/IniFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\JsonFileLoader' => $vendorDir . '/symfony/translation/Loader/JsonFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\LoaderInterface' => $vendorDir . '/symfony/translation/Loader/LoaderInterface.php', - 'Symfony\\Component\\Translation\\Loader\\MoFileLoader' => $vendorDir . '/symfony/translation/Loader/MoFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\PhpFileLoader' => $vendorDir . '/symfony/translation/Loader/PhpFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\PoFileLoader' => $vendorDir . '/symfony/translation/Loader/PoFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\QtFileLoader' => $vendorDir . '/symfony/translation/Loader/QtFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\XliffFileLoader' => $vendorDir . '/symfony/translation/Loader/XliffFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\YamlFileLoader' => $vendorDir . '/symfony/translation/Loader/YamlFileLoader.php', - 'Symfony\\Component\\Translation\\LoggingTranslator' => $vendorDir . '/symfony/translation/LoggingTranslator.php', - 'Symfony\\Component\\Translation\\MessageCatalogue' => $vendorDir . '/symfony/translation/MessageCatalogue.php', - 'Symfony\\Component\\Translation\\MessageCatalogueInterface' => $vendorDir . '/symfony/translation/MessageCatalogueInterface.php', - 'Symfony\\Component\\Translation\\MetadataAwareInterface' => $vendorDir . '/symfony/translation/MetadataAwareInterface.php', - 'Symfony\\Component\\Translation\\Reader\\TranslationReader' => $vendorDir . '/symfony/translation/Reader/TranslationReader.php', - 'Symfony\\Component\\Translation\\Reader\\TranslationReaderInterface' => $vendorDir . '/symfony/translation/Reader/TranslationReaderInterface.php', - 'Symfony\\Component\\Translation\\Translator' => $vendorDir . '/symfony/translation/Translator.php', - 'Symfony\\Component\\Translation\\TranslatorBagInterface' => $vendorDir . '/symfony/translation/TranslatorBagInterface.php', - 'Symfony\\Component\\Translation\\Util\\ArrayConverter' => $vendorDir . '/symfony/translation/Util/ArrayConverter.php', - 'Symfony\\Component\\Translation\\Util\\XliffUtils' => $vendorDir . '/symfony/translation/Util/XliffUtils.php', - 'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => $vendorDir . '/symfony/translation/Writer/TranslationWriter.php', - 'Symfony\\Component\\Translation\\Writer\\TranslationWriterInterface' => $vendorDir . '/symfony/translation/Writer/TranslationWriterInterface.php', - 'Symfony\\Component\\Yaml\\Command\\LintCommand' => $vendorDir . '/symfony/yaml/Command/LintCommand.php', - 'Symfony\\Component\\Yaml\\Dumper' => $vendorDir . '/symfony/yaml/Dumper.php', - 'Symfony\\Component\\Yaml\\Escaper' => $vendorDir . '/symfony/yaml/Escaper.php', - 'Symfony\\Component\\Yaml\\Exception\\DumpException' => $vendorDir . '/symfony/yaml/Exception/DumpException.php', - 'Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/yaml/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Yaml\\Exception\\ParseException' => $vendorDir . '/symfony/yaml/Exception/ParseException.php', - 'Symfony\\Component\\Yaml\\Exception\\RuntimeException' => $vendorDir . '/symfony/yaml/Exception/RuntimeException.php', - 'Symfony\\Component\\Yaml\\Inline' => $vendorDir . '/symfony/yaml/Inline.php', - 'Symfony\\Component\\Yaml\\Parser' => $vendorDir . '/symfony/yaml/Parser.php', - 'Symfony\\Component\\Yaml\\Tag\\TaggedValue' => $vendorDir . '/symfony/yaml/Tag/TaggedValue.php', - 'Symfony\\Component\\Yaml\\Unescaper' => $vendorDir . '/symfony/yaml/Unescaper.php', - 'Symfony\\Component\\Yaml\\Yaml' => $vendorDir . '/symfony/yaml/Yaml.php', - 'Symfony\\Contracts\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher-contracts/Event.php', - 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', - 'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php', - 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php', - 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php', - 'Symfony\\Contracts\\Service\\Test\\ServiceLocatorTest' => $vendorDir . '/symfony/service-contracts/Test/ServiceLocatorTest.php', - 'Symfony\\Contracts\\Translation\\LocaleAwareInterface' => $vendorDir . '/symfony/translation-contracts/LocaleAwareInterface.php', - 'Symfony\\Contracts\\Translation\\Test\\TranslatorTest' => $vendorDir . '/symfony/translation-contracts/Test/TranslatorTest.php', - 'Symfony\\Contracts\\Translation\\TranslatorInterface' => $vendorDir . '/symfony/translation-contracts/TranslatorInterface.php', - 'Symfony\\Contracts\\Translation\\TranslatorTrait' => $vendorDir . '/symfony/translation-contracts/TranslatorTrait.php', - 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', - 'Symfony\\Polyfill\\Php73\\Php73' => $vendorDir . '/symfony/polyfill-php73/Php73.php', - 'Taxonomy_Command' => $vendorDir . '/wp-cli/entity-command/src/Taxonomy_Command.php', - 'Term_Command' => $vendorDir . '/wp-cli/entity-command/src/Term_Command.php', - 'Term_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/Term_Meta_Command.php', - 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', - 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php', - 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php', - 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php', - 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php', - 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php', - 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php', - 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php', - 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php', - 'Theme_Command' => $vendorDir . '/wp-cli/extension-command/src/Theme_Command.php', - 'Theme_Language_Command' => $vendorDir . '/wp-cli/language-command/src/Theme_Language_Command.php', - 'Theme_Mod_Command' => $vendorDir . '/wp-cli/extension-command/src/Theme_Mod_Command.php', - 'Transient_Command' => $vendorDir . '/wp-cli/cache-command/src/Transient_Command.php', - 'User_Command' => $vendorDir . '/wp-cli/entity-command/src/User_Command.php', - 'User_Meta_Command' => $vendorDir . '/wp-cli/entity-command/src/User_Meta_Command.php', - 'User_Session_Command' => $vendorDir . '/wp-cli/entity-command/src/User_Session_Command.php', - 'User_Term_Command' => $vendorDir . '/wp-cli/entity-command/src/User_Term_Command.php', 'WPGraphQL\\JWT_Authentication\\Auth' => $baseDir . '/src/Auth.php', 'WPGraphQL\\JWT_Authentication\\Login' => $baseDir . '/src/Login.php', 'WPGraphQL\\JWT_Authentication\\ManageTokens' => $baseDir . '/src/ManageTokens.php', 'WPGraphQL\\JWT_Authentication\\RefreshToken' => $baseDir . '/src/RefreshToken.php', - 'WP_CLI' => $vendorDir . '/wp-cli/wp-cli/php/class-wp-cli.php', - 'WP_CLI\\Autoloader' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Autoloader.php', - 'WP_CLI\\Bootstrap\\AutoloaderStep' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/AutoloaderStep.php', - 'WP_CLI\\Bootstrap\\BootstrapState' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapState.php', - 'WP_CLI\\Bootstrap\\BootstrapStep' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapStep.php', - 'WP_CLI\\Bootstrap\\ConfigureRunner' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/ConfigureRunner.php', - 'WP_CLI\\Bootstrap\\DeclareAbstractBaseCommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareAbstractBaseCommand.php', - 'WP_CLI\\Bootstrap\\DeclareMainClass' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareMainClass.php', - 'WP_CLI\\Bootstrap\\DefineProtectedCommands' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DefineProtectedCommands.php', - 'WP_CLI\\Bootstrap\\IncludeFallbackAutoloader' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFallbackAutoloader.php', - 'WP_CLI\\Bootstrap\\IncludeFrameworkAutoloader' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFrameworkAutoloader.php', - 'WP_CLI\\Bootstrap\\IncludePackageAutoloader' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludePackageAutoloader.php', - 'WP_CLI\\Bootstrap\\InitializeColorization' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeColorization.php', - 'WP_CLI\\Bootstrap\\InitializeLogger' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeLogger.php', - 'WP_CLI\\Bootstrap\\LaunchRunner' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php', - 'WP_CLI\\Bootstrap\\LoadDispatcher' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadDispatcher.php', - 'WP_CLI\\Bootstrap\\LoadRequiredCommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadRequiredCommand.php', - 'WP_CLI\\Bootstrap\\LoadUtilityFunctions' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadUtilityFunctions.php', - 'WP_CLI\\Bootstrap\\RegisterDeferredCommands' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterDeferredCommands.php', - 'WP_CLI\\Bootstrap\\RegisterFrameworkCommands' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterFrameworkCommands.php', - 'WP_CLI\\Bootstrap\\RunnerInstance' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RunnerInstance.php', - 'WP_CLI\\CommandWithDBObject' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/CommandWithDBObject.php', - 'WP_CLI\\CommandWithMeta' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/CommandWithMeta.php', - 'WP_CLI\\CommandWithTerms' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/CommandWithTerms.php', - 'WP_CLI\\CommandWithTranslation' => $vendorDir . '/wp-cli/language-command/src/WP_CLI/CommandWithTranslation.php', - 'WP_CLI\\CommandWithUpgrade' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/CommandWithUpgrade.php', - 'WP_CLI\\Compat\\FeedbackMethodTrait' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Compat/FeedbackMethodTrait.php', - 'WP_CLI\\Compat\\Min_PHP_5_4\\FeedbackMethodTrait' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_4/FeedbackMethodTrait.php', - 'WP_CLI\\Compat\\Min_PHP_5_6\\FeedbackMethodTrait' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_6/FeedbackMethodTrait.php', - 'WP_CLI\\Completions' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Completions.php', - 'WP_CLI\\ComposerIO' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/ComposerIO.php', - 'WP_CLI\\Configurator' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Configurator.php', - 'WP_CLI\\Core\\CoreUpgrader' => $vendorDir . '/wp-cli/core-command/src/WP_CLI/Core/CoreUpgrader.php', - 'WP_CLI\\Core\\NonDestructiveCoreUpgrader' => $vendorDir . '/wp-cli/core-command/src/WP_CLI/Core/NonDestructiveCoreUpgrader.php', - 'WP_CLI\\DestructivePluginUpgrader' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/DestructivePluginUpgrader.php', - 'WP_CLI\\DestructiveThemeUpgrader' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/DestructiveThemeUpgrader.php', - 'WP_CLI\\Dispatcher\\CommandAddition' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandAddition.php', - 'WP_CLI\\Dispatcher\\CommandFactory' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php', - 'WP_CLI\\Dispatcher\\CommandNamespace' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandNamespace.php', - 'WP_CLI\\Dispatcher\\CompositeCommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CompositeCommand.php', - 'WP_CLI\\Dispatcher\\RootCommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/RootCommand.php', - 'WP_CLI\\Dispatcher\\Subcommand' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.php', - 'WP_CLI\\DocParser' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/DocParser.php', - 'WP_CLI\\Embeds\\Cache_Command' => $vendorDir . '/wp-cli/embed-command/src/Cache_Command.php', - 'WP_CLI\\Embeds\\Embeds_Namespace' => $vendorDir . '/wp-cli/embed-command/src/Embeds_Namespace.php', - 'WP_CLI\\Embeds\\Fetch_Command' => $vendorDir . '/wp-cli/embed-command/src/Fetch_Command.php', - 'WP_CLI\\Embeds\\Handler_Command' => $vendorDir . '/wp-cli/embed-command/src/Handler_Command.php', - 'WP_CLI\\Embeds\\Provider_Command' => $vendorDir . '/wp-cli/embed-command/src/Provider_Command.php', - 'WP_CLI\\Embeds\\oEmbed' => $vendorDir . '/wp-cli/embed-command/src/oEmbed.php', - 'WP_CLI\\Entity\\NonExistentKeyException' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Entity/NonExistentKeyException.php', - 'WP_CLI\\Entity\\RecursiveDataStructureTraverser' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Entity/RecursiveDataStructureTraverser.php', - 'WP_CLI\\Entity\\Utils' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Entity/Utils.php', - 'WP_CLI\\ExitException' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/ExitException.php', - 'WP_CLI\\Extractor' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Extractor.php', - 'WP_CLI\\Fetchers\\Base' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Fetchers/Base.php', - 'WP_CLI\\Fetchers\\Comment' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Comment.php', - 'WP_CLI\\Fetchers\\Plugin' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/Fetchers/Plugin.php', - 'WP_CLI\\Fetchers\\Post' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Post.php', - 'WP_CLI\\Fetchers\\Site' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Site.php', - 'WP_CLI\\Fetchers\\Theme' => $vendorDir . '/wp-cli/extension-command/src/WP_CLI/Fetchers/Theme.php', - 'WP_CLI\\Fetchers\\UnfilteredPlugin' => $vendorDir . '/wp-cli/checksum-command/src/WP_CLI/Fetchers/UnfilteredPlugin.php', - 'WP_CLI\\Fetchers\\User' => $vendorDir . '/wp-cli/entity-command/src/WP_CLI/Fetchers/User.php', - 'WP_CLI\\FileCache' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/FileCache.php', - 'WP_CLI\\Formatter' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Formatter.php', - 'WP_CLI\\I18n\\CommandNamespace' => $vendorDir . '/wp-cli/i18n-command/src/CommandNamespace.php', - 'WP_CLI\\I18n\\IterableCodeExtractor' => $vendorDir . '/wp-cli/i18n-command/src/IterableCodeExtractor.php', - 'WP_CLI\\I18n\\JedGenerator' => $vendorDir . '/wp-cli/i18n-command/src/JedGenerator.php', - 'WP_CLI\\I18n\\JsCodeExtractor' => $vendorDir . '/wp-cli/i18n-command/src/JsCodeExtractor.php', - 'WP_CLI\\I18n\\JsFunctionsScanner' => $vendorDir . '/wp-cli/i18n-command/src/JsFunctionsScanner.php', - 'WP_CLI\\I18n\\MakeJsonCommand' => $vendorDir . '/wp-cli/i18n-command/src/MakeJsonCommand.php', - 'WP_CLI\\I18n\\MakePotCommand' => $vendorDir . '/wp-cli/i18n-command/src/MakePotCommand.php', - 'WP_CLI\\I18n\\MapCodeExtractor' => $vendorDir . '/wp-cli/i18n-command/src/MapCodeExtractor.php', - 'WP_CLI\\I18n\\PhpCodeExtractor' => $vendorDir . '/wp-cli/i18n-command/src/PhpCodeExtractor.php', - 'WP_CLI\\I18n\\PhpFunctionsScanner' => $vendorDir . '/wp-cli/i18n-command/src/PhpFunctionsScanner.php', - 'WP_CLI\\I18n\\PotGenerator' => $vendorDir . '/wp-cli/i18n-command/src/PotGenerator.php', - 'WP_CLI\\Inflector' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Inflector.php', - 'WP_CLI\\Iterators\\CSV' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/CSV.php', - 'WP_CLI\\Iterators\\Exception' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Exception.php', - 'WP_CLI\\Iterators\\Query' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Query.php', - 'WP_CLI\\Iterators\\Table' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Table.php', - 'WP_CLI\\Iterators\\Transform' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Transform.php', - 'WP_CLI\\JsonManipulator' => $vendorDir . '/wp-cli/package-command/src/WP_CLI/JsonManipulator.php', - 'WP_CLI\\LanguagePackUpgrader' => $vendorDir . '/wp-cli/language-command/src/WP_CLI/LanguagePackUpgrader.php', - 'WP_CLI\\Loggers\\Base' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Base.php', - 'WP_CLI\\Loggers\\Execution' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Execution.php', - 'WP_CLI\\Loggers\\Quiet' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Quiet.php', - 'WP_CLI\\Loggers\\Regular' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Regular.php', - 'WP_CLI\\MaintenanceMode\\MaintenanceModeCommand' => $vendorDir . '/wp-cli/maintenance-mode-command/src/MaintenanceModeCommand.php', - 'WP_CLI\\NoOp' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/NoOp.php', - 'WP_CLI\\PackageManagerEventSubscriber' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/PackageManagerEventSubscriber.php', - 'WP_CLI\\Process' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Process.php', - 'WP_CLI\\ProcessRun' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/ProcessRun.php', - 'WP_CLI\\Runner' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/Runner.php', - 'WP_CLI\\SearchReplacer' => $vendorDir . '/wp-cli/search-replace-command/src/WP_CLI/SearchReplacer.php', - 'WP_CLI\\Shell\\REPL' => $vendorDir . '/wp-cli/shell-command/src/WP_CLI/Shell/REPL.php', - 'WP_CLI\\SynopsisParser' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/SynopsisParser.php', - 'WP_CLI\\SynopsisValidator' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/SynopsisValidator.php', - 'WP_CLI\\UpgraderSkin' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/UpgraderSkin.php', - 'WP_CLI\\WpHttpCacheManager' => $vendorDir . '/wp-cli/wp-cli/php/WP_CLI/WpHttpCacheManager.php', - 'WP_CLI_Command' => $vendorDir . '/wp-cli/wp-cli/php/class-wp-cli-command.php', - 'WP_Export_Base_Writer' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Base_Writer.php', - 'WP_Export_Exception' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Exception.php', - 'WP_Export_File_Writer' => $vendorDir . '/wp-cli/export-command/src/WP_Export_File_Writer.php', - 'WP_Export_Oxymel' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Oxymel.php', - 'WP_Export_Query' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Query.php', - 'WP_Export_Returner' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Returner.php', - 'WP_Export_Split_Files_Writer' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Split_Files_Writer.php', - 'WP_Export_Term_Exception' => $vendorDir . '/wp-cli/export-command/src/WP_Export_Term_Exception.php', - 'WP_Export_WXR_Formatter' => $vendorDir . '/wp-cli/export-command/src/WP_Export_WXR_Formatter.php', - 'WP_Export_XML_Over_HTTP' => $vendorDir . '/wp-cli/export-command/src/WP_Export_XML_Over_HTTP.php', - 'WP_Iterator_Exception' => $vendorDir . '/wp-cli/export-command/src/WP_Iterator_Exception.php', - 'WP_Map_Iterator' => $vendorDir . '/wp-cli/export-command/src/WP_Map_Iterator.php', - 'WP_Post_IDs_Iterator' => $vendorDir . '/wp-cli/export-command/src/WP_Post_IDs_Iterator.php', - 'Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php', - 'Widget_Command' => $vendorDir . '/wp-cli/widget-command/src/Widget_Command.php', - 'cli\\Arguments' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Arguments.php', - 'cli\\Colors' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Colors.php', - 'cli\\Memoize' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Memoize.php', - 'cli\\Notify' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Notify.php', - 'cli\\Progress' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Progress.php', - 'cli\\Shell' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Shell.php', - 'cli\\Streams' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Streams.php', - 'cli\\Table' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Table.php', - 'cli\\Tree' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/Tree.php', - 'cli\\arguments\\Argument' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/arguments/Argument.php', - 'cli\\arguments\\HelpScreen' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/arguments/HelpScreen.php', - 'cli\\arguments\\InvalidArguments' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/arguments/InvalidArguments.php', - 'cli\\arguments\\Lexer' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/arguments/Lexer.php', - 'cli\\notify\\Dots' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/notify/Dots.php', - 'cli\\notify\\Spinner' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/notify/Spinner.php', - 'cli\\progress\\Bar' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/progress/Bar.php', - 'cli\\table\\Ascii' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/table/Ascii.php', - 'cli\\table\\Renderer' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/table/Renderer.php', - 'cli\\table\\Tabular' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/table/Tabular.php', - 'cli\\tree\\Ascii' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/tree/Ascii.php', - 'cli\\tree\\Markdown' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/tree/Markdown.php', - 'cli\\tree\\Renderer' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/tree/Renderer.php', - 'cweagans\\Composer\\PatchEvent' => $vendorDir . '/cweagans/composer-patches/src/PatchEvent.php', - 'cweagans\\Composer\\PatchEvents' => $vendorDir . '/cweagans/composer-patches/src/PatchEvents.php', - 'cweagans\\Composer\\Patches' => $vendorDir . '/cweagans/composer-patches/src/Patches.php', - 'phpDocumentor\\Reflection\\DocBlock' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock.php', - 'phpDocumentor\\Reflection\\DocBlockFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlockFactory.php', - 'phpDocumentor\\Reflection\\DocBlockFactoryInterface' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php', - 'phpDocumentor\\Reflection\\DocBlock\\Description' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Description.php', - 'phpDocumentor\\Reflection\\DocBlock\\DescriptionFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php', - 'phpDocumentor\\Reflection\\DocBlock\\ExampleFinder' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php', - 'phpDocumentor\\Reflection\\DocBlock\\Serializer' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php', - 'phpDocumentor\\Reflection\\DocBlock\\StandardTagFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php', - 'phpDocumentor\\Reflection\\DocBlock\\TagFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Author' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\BaseTag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Covers' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Deprecated' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Example' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Factory\\StaticMethod' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\AlignFormatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\PassthroughFormatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Generic' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\InvalidTag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Link' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Method' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Param' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Property' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyRead' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyWrite' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Fqsen' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Reference' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Url' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Return_' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\See' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Since' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Source' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\TagWithType' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Throws' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Uses' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Var_' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Version' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php', - 'phpDocumentor\\Reflection\\Element' => $vendorDir . '/phpdocumentor/reflection-common/src/Element.php', - 'phpDocumentor\\Reflection\\File' => $vendorDir . '/phpdocumentor/reflection-common/src/File.php', - 'phpDocumentor\\Reflection\\Fqsen' => $vendorDir . '/phpdocumentor/reflection-common/src/Fqsen.php', - 'phpDocumentor\\Reflection\\FqsenResolver' => $vendorDir . '/phpdocumentor/type-resolver/src/FqsenResolver.php', - 'phpDocumentor\\Reflection\\Location' => $vendorDir . '/phpdocumentor/reflection-common/src/Location.php', - 'phpDocumentor\\Reflection\\Project' => $vendorDir . '/phpdocumentor/reflection-common/src/Project.php', - 'phpDocumentor\\Reflection\\ProjectFactory' => $vendorDir . '/phpdocumentor/reflection-common/src/ProjectFactory.php', - 'phpDocumentor\\Reflection\\Type' => $vendorDir . '/phpdocumentor/type-resolver/src/Type.php', - 'phpDocumentor\\Reflection\\TypeResolver' => $vendorDir . '/phpdocumentor/type-resolver/src/TypeResolver.php', - 'phpDocumentor\\Reflection\\Types\\AbstractList' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/AbstractList.php', - 'phpDocumentor\\Reflection\\Types\\Array_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Array_.php', - 'phpDocumentor\\Reflection\\Types\\Boolean' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Boolean.php', - 'phpDocumentor\\Reflection\\Types\\Callable_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Callable_.php', - 'phpDocumentor\\Reflection\\Types\\ClassString' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/ClassString.php', - 'phpDocumentor\\Reflection\\Types\\Collection' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Collection.php', - 'phpDocumentor\\Reflection\\Types\\Compound' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Compound.php', - 'phpDocumentor\\Reflection\\Types\\Context' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Context.php', - 'phpDocumentor\\Reflection\\Types\\ContextFactory' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/ContextFactory.php', - 'phpDocumentor\\Reflection\\Types\\Float_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Float_.php', - 'phpDocumentor\\Reflection\\Types\\Integer' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Integer.php', - 'phpDocumentor\\Reflection\\Types\\Iterable_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Iterable_.php', - 'phpDocumentor\\Reflection\\Types\\Mixed_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Mixed_.php', - 'phpDocumentor\\Reflection\\Types\\Null_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Null_.php', - 'phpDocumentor\\Reflection\\Types\\Nullable' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Nullable.php', - 'phpDocumentor\\Reflection\\Types\\Object_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Object_.php', - 'phpDocumentor\\Reflection\\Types\\Parent_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Parent_.php', - 'phpDocumentor\\Reflection\\Types\\Resource_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Resource_.php', - 'phpDocumentor\\Reflection\\Types\\Scalar' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Scalar.php', - 'phpDocumentor\\Reflection\\Types\\Self_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Self_.php', - 'phpDocumentor\\Reflection\\Types\\Static_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Static_.php', - 'phpDocumentor\\Reflection\\Types\\String_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/String_.php', - 'phpDocumentor\\Reflection\\Types\\This' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/This.php', - 'phpDocumentor\\Reflection\\Types\\Void_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Void_.php', - 'tad\\WPBrowser\\Adapters\\WP' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Adapters/WP.php', - 'tad\\WPBrowser\\Connector\\WordPress' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Connector/WordPress.php', - 'tad\\WPBrowser\\Documentation\\TableGenerator' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Documentation/TableGenerator.php', - 'tad\\WPBrowser\\Environment\\Constants' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/Constants.php', - 'tad\\WPBrowser\\Environment\\Executor' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/Executor.php', - 'tad\\WPBrowser\\Environment\\System' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/System.php', - 'tad\\WPBrowser\\Extension\\Copier' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Extension/Copier.php', - 'tad\\WPBrowser\\Extension\\Symlinker' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Extension/Symlinker.php', - 'tad\\WPBrowser\\Filesystem\\FileReplacers\\AbstractFileReplacer' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/AbstractFileReplacer.php', - 'tad\\WPBrowser\\Filesystem\\FileReplacers\\HtaccesReplacer' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/HtaccesReplacer.php', - 'tad\\WPBrowser\\Filesystem\\FileReplacers\\WPConfigReplacer' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/WPConfigReplacer.php', - 'tad\\WPBrowser\\Filesystem\\Filesystem' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/Filesystem.php', - 'tad\\WPBrowser\\Filesystem\\Utils' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/Utils.php', - 'tad\\WPBrowser\\Generators\\Blog' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Blog.php', - 'tad\\WPBrowser\\Generators\\Comment' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Comment.php', - 'tad\\WPBrowser\\Generators\\Date' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Date.php', - 'tad\\WPBrowser\\Generators\\Links' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Links.php', - 'tad\\WPBrowser\\Generators\\Post' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Post.php', - 'tad\\WPBrowser\\Generators\\RedirectingWPConfig' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/RedirectingWPConfig.php', - 'tad\\WPBrowser\\Generators\\SubdomainHtaccess' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/SubdomainHtaccess.php', - 'tad\\WPBrowser\\Generators\\SubfolderHtaccess' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/SubfolderHtaccess.php', - 'tad\\WPBrowser\\Generators\\Tables' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Tables.php', - 'tad\\WPBrowser\\Generators\\TemplateProviderInterface' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/TemplateProviderInterface.php', - 'tad\\WPBrowser\\Generators\\User' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/User.php', - 'tad\\WPBrowser\\Generators\\User\\Roles' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/User/Roles.php', - 'tad\\WPBrowser\\Generators\\WpPassword' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/WpPassword.php', - 'tad\\WPBrowser\\Iterators\\Filters\\ActionsQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/ActionsQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\ClassMethodQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/ClassMethodQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\FactoryQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FactoryQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\FiltersQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FiltersQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\FunctionQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FunctionQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\MainStatementQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/MainStatementQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\QueriesCallerBasedFilterIterator' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/QueriesCallerBasedFilterIterator.php', - 'tad\\WPBrowser\\Iterators\\Filters\\QueriesCallerBasedKeepingFilterIterator' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/QueriesCallerBasedKeepingFilterIterator.php', - 'tad\\WPBrowser\\Iterators\\Filters\\SetupTearDownQueriesFilter' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/SetupTearDownQueriesFilter.php', - 'tad\\WPBrowser\\Module\\Support\\DbDump' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/Support/DbDump.php', - 'tad\\WPBrowser\\Module\\Support\\UriToIndexMapper' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/Support/UriToIndexMapper.php', - 'tad\\WPBrowser\\Module\\WPLoader\\FactoryStore' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/FactoryStore.php', - 'tad\\WPBrowser\\Module\\WPLoader\\Filters' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/Filters.php', - 'tad\\WPBrowser\\Module\\WPLoader\\FiltersGroup' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/FiltersGroup.php', - 'tad\\WPBrowser\\Services\\Db\\MySQLDumpFactory' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpFactory.php', - 'tad\\WPBrowser\\Services\\Db\\MySQLDumpFactoryInterface' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpFactoryInterface.php', - 'tad\\WPBrowser\\Services\\Db\\MySQLDumpInterface' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpInterface.php', - 'tad\\WPBrowser\\Services\\WP\\Bootstrapper' => $vendorDir . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/WP/Bootstrapper.php', - 'tad\\WPBrowser\\Template\\Data' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/Template/Data.php', - 'voku\\helper\\ASCII' => $vendorDir . '/voku/portable-ascii/src/voku/helper/ASCII.php', ); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php deleted file mode 100644 index 363da39..0000000 --- a/vendor/composer/autoload_files.php +++ /dev/null @@ -1,47 +0,0 @@ - $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', - '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', - 'ba366f96f4fddbdef61ad7a862b44f61' => $vendorDir . '/wp-cli/package-command/package-command.php', - '3937806105cc8e221b8fa8db5b70d2f2' => $vendorDir . '/wp-cli/mustangostang-spyc/includes/functions.php', - 'be01b9b16925dcb22165c40b46681ac6' => $vendorDir . '/wp-cli/php-cli-tools/lib/cli/cli.php', - '8a0ad02df6a5087f2c380f8fd52db273' => $vendorDir . '/wp-cli/cache-command/cache-command.php', - 'f3f0199a3ecd9f501d0a3b361bd2f61c' => $vendorDir . '/wp-cli/entity-command/entity-command.php', - '3f201033d5aceb2293314273be88f7c6' => $vendorDir . '/wp-cli/extension-command/extension-command.php', - 'c65f753375faee349b7adc48c2ee7cc2' => $vendorDir . '/wp-cli/db-command/db-command.php', - '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', - 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', - 'd979c11fe80ba96ae3037b43429fe546' => $vendorDir . '/wp-cli/scaffold-command/scaffold-command.php', - '5c6ec5cff8f9d625772c8ed147f6b894' => $vendorDir . '/wp-cli/export-command/export-command.php', - 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', - 'b66d29757fcb2fb7a9608d068e3716b0' => $vendorDir . '/wp-cli/checksum-command/checksum-command.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', - '72579e7bd17821bb1321b87411366eae' => $vendorDir . '/illuminate/support/helpers.php', - '30cbb6e4122dc988e494c6b9c0438233' => $vendorDir . '/wp-cli/import-command/import-command.php', - '5e099d3cac677dd2bec1003ea7707745' => $vendorDir . '/wp-cli/media-command/media-command.php', - 'ac949ce40a981819ba132473518a9a31' => $vendorDir . '/wp-cli/wp-config-transformer/src/WPConfigTransformer.php', - '5deaf6ce9c8bbdfb65104c7e938d5875' => $vendorDir . '/wp-cli/config-command/config-command.php', - '68c39b88215b6cf7a0da164166670ef9' => $vendorDir . '/wp-cli/core-command/core-command.php', - '7654e00bf0e632580764400bd8293a9c' => $vendorDir . '/wp-cli/cron-command/cron-command.php', - '021d3a13471556f0b57038d679f7f8ea' => $vendorDir . '/wp-cli/embed-command/embed-command.php', - 'f958dca3f412fd7975da1700912a9321' => $vendorDir . '/wp-cli/eval-command/eval-command.php', - 'ffb465a494c3101218c4417180c2c9a2' => $vendorDir . '/wp-cli/i18n-command/i18n-command.php', - 'ace0d205db7f4135ec32132a0076d555' => $vendorDir . '/wp-cli/language-command/language-command.php', - '1c88c1eff05217a8cac80c64c9ac2080' => $vendorDir . '/wp-cli/maintenance-mode-command/maintenance-mode-command.php', - 'f399c1c8d0c787d5c94c09884cdd9762' => $vendorDir . '/wp-cli/rewrite-command/rewrite-command.php', - '080fadd667195d055c5a23386f270261' => $vendorDir . '/wp-cli/role-command/role-command.php', - '8ecb13f8bbc22b1b34d12b14ec01077a' => $vendorDir . '/wp-cli/search-replace-command/search-replace-command.php', - '9f04dd0aa5d67ec75a75c88c345a079e' => $vendorDir . '/wp-cli/server-command/server-command.php', - '129d58fa8151374aceb8571bcaa97504' => $vendorDir . '/wp-cli/shell-command/shell-command.php', - '8519779bbb65eeb842af2f629ce7b6f8' => $vendorDir . '/wp-cli/super-admin-command/super-admin-command.php', - '1f05372afcc7d0c51a305cef1d56dd01' => $vendorDir . '/wp-cli/widget-command/widget-command.php', - '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', - 'e2b8090921f5e293ca4eb0c107749811' => $vendorDir . '/lucatume/wp-browser/src/tad/WPBrowser/functions.php', -); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index 423a2d5..b7fc012 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -6,13 +6,4 @@ $baseDir = dirname($vendorDir); return array( - 'cli' => array($vendorDir . '/wp-cli/php-cli-tools/lib'), - 'WP_CLI' => array($vendorDir . '/wp-cli/wp-cli/php'), - 'Requests' => array($vendorDir . '/rmccue/requests/library'), - 'Oxymel' => array($vendorDir . '/nb/oxymel'), - 'Mustache' => array($vendorDir . '/mustache/mustache/src'), - 'Hautelook' => array($vendorDir . '/hautelook/phpass/src'), - 'Handlebars' => array($vendorDir . '/xamin/handlebars.php/src'), - 'Behat\\Gherkin' => array($vendorDir . '/behat/gherkin/src'), - 'BaconStringUtils' => array($vendorDir . '/bacon/bacon-string-utils/src'), ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index f4e9dc4..46c149b 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,68 +6,6 @@ $baseDir = dirname($vendorDir); return array( - 'voku\\tests\\' => array($vendorDir . '/voku/portable-ascii/tests'), - 'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku'), - 'tad\\' => array($vendorDir . '/lucatume/wp-browser/src/tad', $vendorDir . '/lucatume/wp-browser-commons/src/tad'), - 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'), - 'cweagans\\Composer\\' => array($vendorDir . '/cweagans/composer-patches/src'), - 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), - 'WP_CLI\\MaintenanceMode\\' => array($vendorDir . '/wp-cli/maintenance-mode-command/src'), - 'WP_CLI\\I18n\\' => array($vendorDir . '/wp-cli/i18n-command/src'), - 'WP_CLI\\Embeds\\' => array($vendorDir . '/wp-cli/embed-command/src'), - 'WP_CLI\\' => array($vendorDir . '/wp-cli/entity-command/src/WP_CLI', $vendorDir . '/wp-cli/shell-command/src/WP_CLI'), 'WPGraphQL\\JWT_Authentication\\' => array($baseDir . '/src'), - 'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'), - 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), - 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), - 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'), - 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), - 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), - 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), - 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), - 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), - 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), - 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), - 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), - 'Symfony\\Component\\DomCrawler\\' => array($vendorDir . '/symfony/dom-crawler'), - 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'), - 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), - 'Symfony\\Component\\BrowserKit\\' => array($vendorDir . '/symfony/browser-kit'), - 'Seld\\PharUtils\\' => array($vendorDir . '/seld/phar-utils/src'), - 'Seld\\JsonLint\\' => array($vendorDir . '/seld/jsonlint/src/Seld/JsonLint'), - 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), - 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), - 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), - 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), - 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'), - 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), - 'Peast\\test\\' => array($vendorDir . '/mck89/peast/test/Peast'), - 'Peast\\' => array($vendorDir . '/mck89/peast/lib/Peast'), - 'Mustangostang\\' => array($vendorDir . '/wp-cli/mustangostang-spyc/src'), - 'MikeMcLin\\WpPassword\\' => array($vendorDir . '/mikemclin/laravel-wp-password/src'), - 'JsonSchema\\' => array($vendorDir . '/justinrainbow/json-schema/src/JsonSchema'), - 'Illuminate\\Support\\' => array($vendorDir . '/illuminate/support'), - 'Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'), - 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), - 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), - 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), - 'Gumlet\\' => array($vendorDir . '/gumlet/php-image-resize/lib'), - 'Gettext\\Languages\\' => array($vendorDir . '/gettext/languages/src'), - 'Gettext\\' => array($vendorDir . '/gettext/gettext/src'), 'Firebase\\JWT\\' => array($vendorDir . '/firebase/php-jwt/src'), - 'Facebook\\WebDriver\\' => array($vendorDir . '/facebook/webdriver/lib'), - 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), - 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), - 'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Common/Inflector'), - 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), - 'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), - 'Composer\\Spdx\\' => array($vendorDir . '/composer/spdx-licenses/src'), - 'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), - 'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), - 'Composer\\' => array($vendorDir . '/composer/composer/src/Composer'), - 'Codeception\\PHPUnit\\' => array($vendorDir . '/codeception/phpunit-wrapper/src'), - 'Codeception\\Extension\\' => array($vendorDir . '/codeception/codeception/ext'), - 'Codeception\\' => array($vendorDir . '/codeception/codeception/src/Codeception', $vendorDir . '/codeception/stub/src', $vendorDir . '/lucatume/wp-browser/src/Codeception'), - 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), - '' => array($vendorDir . '/wp-cli/cache-command/src', $vendorDir . '/wp-cli/checksum-command/src', $vendorDir . '/wp-cli/config-command/src', $vendorDir . '/wp-cli/core-command/src', $vendorDir . '/wp-cli/cron-command/src', $vendorDir . '/wp-cli/db-command/src', $vendorDir . '/wp-cli/entity-command/src', $vendorDir . '/wp-cli/eval-command/src', $vendorDir . '/wp-cli/export-command/src', $vendorDir . '/wp-cli/extension-command/src', $vendorDir . '/wp-cli/import-command/src', $vendorDir . '/wp-cli/language-command/src', $vendorDir . '/wp-cli/media-command/src', $vendorDir . '/wp-cli/package-command/src', $vendorDir . '/wp-cli/rewrite-command/src', $vendorDir . '/wp-cli/role-command/src', $vendorDir . '/wp-cli/scaffold-command/src', $vendorDir . '/wp-cli/search-replace-command/src', $vendorDir . '/wp-cli/server-command/src', $vendorDir . '/wp-cli/shell-command/src', $vendorDir . '/wp-cli/super-admin-command/src', $vendorDir . '/wp-cli/widget-command/src'), ); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 2db1e73..97fa063 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit2bca884894f5dad38a04fb4589efa493 +class ComposerAutoloaderInitb81212723df6ec6a4125604686c14dbf { private static $loader; @@ -19,15 +19,15 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit2bca884894f5dad38a04fb4589efa493', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitb81212723df6ec6a4125604686c14dbf', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit2bca884894f5dad38a04fb4589efa493', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitb81212723df6ec6a4125604686c14dbf', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit2bca884894f5dad38a04fb4589efa493::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInitb81212723df6ec6a4125604686c14dbf::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -47,24 +47,6 @@ public static function getLoader() $loader->register(true); - if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$files; - } else { - $includeFiles = require __DIR__ . '/autoload_files.php'; - } - foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire2bca884894f5dad38a04fb4589efa493($fileIdentifier, $file); - } - return $loader; } } - -function composerRequire2bca884894f5dad38a04fb4589efa493($fileIdentifier, $file) -{ - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - require $file; - - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - } -} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 1688a1b..ccc36a0 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,3315 +4,47 @@ namespace Composer\Autoload; -class ComposerStaticInit2bca884894f5dad38a04fb4589efa493 +class ComposerStaticInitb81212723df6ec6a4125604686c14dbf { - public static $files = array ( - '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', - 'ba366f96f4fddbdef61ad7a862b44f61' => __DIR__ . '/..' . '/wp-cli/package-command/package-command.php', - '3937806105cc8e221b8fa8db5b70d2f2' => __DIR__ . '/..' . '/wp-cli/mustangostang-spyc/includes/functions.php', - 'be01b9b16925dcb22165c40b46681ac6' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/cli.php', - '8a0ad02df6a5087f2c380f8fd52db273' => __DIR__ . '/..' . '/wp-cli/cache-command/cache-command.php', - 'f3f0199a3ecd9f501d0a3b361bd2f61c' => __DIR__ . '/..' . '/wp-cli/entity-command/entity-command.php', - '3f201033d5aceb2293314273be88f7c6' => __DIR__ . '/..' . '/wp-cli/extension-command/extension-command.php', - 'c65f753375faee349b7adc48c2ee7cc2' => __DIR__ . '/..' . '/wp-cli/db-command/db-command.php', - '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', - 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', - 'd979c11fe80ba96ae3037b43429fe546' => __DIR__ . '/..' . '/wp-cli/scaffold-command/scaffold-command.php', - '5c6ec5cff8f9d625772c8ed147f6b894' => __DIR__ . '/..' . '/wp-cli/export-command/export-command.php', - 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', - 'b66d29757fcb2fb7a9608d068e3716b0' => __DIR__ . '/..' . '/wp-cli/checksum-command/checksum-command.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', - '72579e7bd17821bb1321b87411366eae' => __DIR__ . '/..' . '/illuminate/support/helpers.php', - '30cbb6e4122dc988e494c6b9c0438233' => __DIR__ . '/..' . '/wp-cli/import-command/import-command.php', - '5e099d3cac677dd2bec1003ea7707745' => __DIR__ . '/..' . '/wp-cli/media-command/media-command.php', - 'ac949ce40a981819ba132473518a9a31' => __DIR__ . '/..' . '/wp-cli/wp-config-transformer/src/WPConfigTransformer.php', - '5deaf6ce9c8bbdfb65104c7e938d5875' => __DIR__ . '/..' . '/wp-cli/config-command/config-command.php', - '68c39b88215b6cf7a0da164166670ef9' => __DIR__ . '/..' . '/wp-cli/core-command/core-command.php', - '7654e00bf0e632580764400bd8293a9c' => __DIR__ . '/..' . '/wp-cli/cron-command/cron-command.php', - '021d3a13471556f0b57038d679f7f8ea' => __DIR__ . '/..' . '/wp-cli/embed-command/embed-command.php', - 'f958dca3f412fd7975da1700912a9321' => __DIR__ . '/..' . '/wp-cli/eval-command/eval-command.php', - 'ffb465a494c3101218c4417180c2c9a2' => __DIR__ . '/..' . '/wp-cli/i18n-command/i18n-command.php', - 'ace0d205db7f4135ec32132a0076d555' => __DIR__ . '/..' . '/wp-cli/language-command/language-command.php', - '1c88c1eff05217a8cac80c64c9ac2080' => __DIR__ . '/..' . '/wp-cli/maintenance-mode-command/maintenance-mode-command.php', - 'f399c1c8d0c787d5c94c09884cdd9762' => __DIR__ . '/..' . '/wp-cli/rewrite-command/rewrite-command.php', - '080fadd667195d055c5a23386f270261' => __DIR__ . '/..' . '/wp-cli/role-command/role-command.php', - '8ecb13f8bbc22b1b34d12b14ec01077a' => __DIR__ . '/..' . '/wp-cli/search-replace-command/search-replace-command.php', - '9f04dd0aa5d67ec75a75c88c345a079e' => __DIR__ . '/..' . '/wp-cli/server-command/server-command.php', - '129d58fa8151374aceb8571bcaa97504' => __DIR__ . '/..' . '/wp-cli/shell-command/shell-command.php', - '8519779bbb65eeb842af2f629ce7b6f8' => __DIR__ . '/..' . '/wp-cli/super-admin-command/super-admin-command.php', - '1f05372afcc7d0c51a305cef1d56dd01' => __DIR__ . '/..' . '/wp-cli/widget-command/widget-command.php', - '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', - 'e2b8090921f5e293ca4eb0c107749811' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/functions.php', - ); - public static $prefixLengthsPsr4 = array ( - 'v' => - array ( - 'voku\\tests\\' => 11, - 'voku\\' => 5, - ), - 't' => - array ( - 'tad\\' => 4, - ), - 'p' => - array ( - 'phpDocumentor\\Reflection\\' => 25, - ), - 'c' => - array ( - 'cweagans\\Composer\\' => 18, - ), 'W' => array ( - 'Webmozart\\Assert\\' => 17, - 'WP_CLI\\MaintenanceMode\\' => 23, - 'WP_CLI\\I18n\\' => 12, - 'WP_CLI\\Embeds\\' => 14, - 'WP_CLI\\' => 7, 'WPGraphQL\\JWT_Authentication\\' => 29, ), - 'S' => - array ( - 'Symfony\\Polyfill\\Php73\\' => 23, - 'Symfony\\Polyfill\\Mbstring\\' => 26, - 'Symfony\\Polyfill\\Ctype\\' => 23, - 'Symfony\\Contracts\\Translation\\' => 30, - 'Symfony\\Contracts\\Service\\' => 26, - 'Symfony\\Contracts\\EventDispatcher\\' => 34, - 'Symfony\\Component\\Yaml\\' => 23, - 'Symfony\\Component\\Translation\\' => 30, - 'Symfony\\Component\\Process\\' => 26, - 'Symfony\\Component\\Finder\\' => 25, - 'Symfony\\Component\\Filesystem\\' => 29, - 'Symfony\\Component\\EventDispatcher\\' => 34, - 'Symfony\\Component\\DomCrawler\\' => 29, - 'Symfony\\Component\\CssSelector\\' => 30, - 'Symfony\\Component\\Console\\' => 26, - 'Symfony\\Component\\BrowserKit\\' => 29, - 'Seld\\PharUtils\\' => 15, - 'Seld\\JsonLint\\' => 14, - ), - 'P' => - array ( - 'Psr\\SimpleCache\\' => 16, - 'Psr\\Log\\' => 8, - 'Psr\\Http\\Message\\' => 17, - 'Psr\\Container\\' => 14, - 'Prophecy\\' => 9, - 'PhpOption\\' => 10, - 'Peast\\test\\' => 11, - 'Peast\\' => 6, - ), - 'M' => - array ( - 'Mustangostang\\' => 14, - 'MikeMcLin\\WpPassword\\' => 21, - ), - 'J' => - array ( - 'JsonSchema\\' => 11, - ), - 'I' => - array ( - 'Illuminate\\Support\\' => 19, - 'Illuminate\\Contracts\\' => 21, - ), - 'G' => - array ( - 'GuzzleHttp\\Psr7\\' => 16, - 'GuzzleHttp\\Promise\\' => 19, - 'GuzzleHttp\\' => 11, - 'Gumlet\\' => 7, - 'Gettext\\Languages\\' => 18, - 'Gettext\\' => 8, - ), 'F' => array ( 'Firebase\\JWT\\' => 13, - 'Facebook\\WebDriver\\' => 19, - ), - 'D' => - array ( - 'Dotenv\\' => 7, - 'Doctrine\\Instantiator\\' => 22, - 'Doctrine\\Common\\Inflector\\' => 26, - 'DeepCopy\\' => 9, - ), - 'C' => - array ( - 'Composer\\XdebugHandler\\' => 23, - 'Composer\\Spdx\\' => 14, - 'Composer\\Semver\\' => 16, - 'Composer\\CaBundle\\' => 18, - 'Composer\\' => 9, - 'Codeception\\PHPUnit\\' => 20, - 'Codeception\\Extension\\' => 22, - 'Codeception\\' => 12, - 'Carbon\\' => 7, ), ); public static $prefixDirsPsr4 = array ( - 'voku\\tests\\' => - array ( - 0 => __DIR__ . '/..' . '/voku/portable-ascii/tests', - ), - 'voku\\' => - array ( - 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku', - ), - 'tad\\' => - array ( - 0 => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad', - 1 => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad', - ), - 'phpDocumentor\\Reflection\\' => - array ( - 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', - 1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', - 2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', - ), - 'cweagans\\Composer\\' => - array ( - 0 => __DIR__ . '/..' . '/cweagans/composer-patches/src', - ), - 'Webmozart\\Assert\\' => - array ( - 0 => __DIR__ . '/..' . '/webmozart/assert/src', - ), - 'WP_CLI\\MaintenanceMode\\' => - array ( - 0 => __DIR__ . '/..' . '/wp-cli/maintenance-mode-command/src', - ), - 'WP_CLI\\I18n\\' => - array ( - 0 => __DIR__ . '/..' . '/wp-cli/i18n-command/src', - ), - 'WP_CLI\\Embeds\\' => - array ( - 0 => __DIR__ . '/..' . '/wp-cli/embed-command/src', - ), - 'WP_CLI\\' => - array ( - 0 => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI', - 1 => __DIR__ . '/..' . '/wp-cli/shell-command/src/WP_CLI', - ), 'WPGraphQL\\JWT_Authentication\\' => array ( 0 => __DIR__ . '/../..' . '/src', ), - 'Symfony\\Polyfill\\Php73\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php73', - ), - 'Symfony\\Polyfill\\Mbstring\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', - ), - 'Symfony\\Polyfill\\Ctype\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', - ), - 'Symfony\\Contracts\\Translation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/translation-contracts', - ), - 'Symfony\\Contracts\\Service\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/service-contracts', - ), - 'Symfony\\Contracts\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', - ), - 'Symfony\\Component\\Yaml\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/yaml', - ), - 'Symfony\\Component\\Translation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/translation', - ), - 'Symfony\\Component\\Process\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/process', - ), - 'Symfony\\Component\\Finder\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/finder', - ), - 'Symfony\\Component\\Filesystem\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/filesystem', - ), - 'Symfony\\Component\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', - ), - 'Symfony\\Component\\DomCrawler\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/dom-crawler', - ), - 'Symfony\\Component\\CssSelector\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/css-selector', - ), - 'Symfony\\Component\\Console\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/console', - ), - 'Symfony\\Component\\BrowserKit\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/browser-kit', - ), - 'Seld\\PharUtils\\' => - array ( - 0 => __DIR__ . '/..' . '/seld/phar-utils/src', - ), - 'Seld\\JsonLint\\' => - array ( - 0 => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint', - ), - 'Psr\\SimpleCache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/simple-cache/src', - ), - 'Psr\\Log\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/log/Psr/Log', - ), - 'Psr\\Http\\Message\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-message/src', - ), - 'Psr\\Container\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/container/src', - ), - 'Prophecy\\' => - array ( - 0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy', - ), - 'PhpOption\\' => - array ( - 0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption', - ), - 'Peast\\test\\' => - array ( - 0 => __DIR__ . '/..' . '/mck89/peast/test/Peast', - ), - 'Peast\\' => - array ( - 0 => __DIR__ . '/..' . '/mck89/peast/lib/Peast', - ), - 'Mustangostang\\' => - array ( - 0 => __DIR__ . '/..' . '/wp-cli/mustangostang-spyc/src', - ), - 'MikeMcLin\\WpPassword\\' => - array ( - 0 => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src', - ), - 'JsonSchema\\' => - array ( - 0 => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema', - ), - 'Illuminate\\Support\\' => - array ( - 0 => __DIR__ . '/..' . '/illuminate/support', - ), - 'Illuminate\\Contracts\\' => - array ( - 0 => __DIR__ . '/..' . '/illuminate/contracts', - ), - 'GuzzleHttp\\Psr7\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', - ), - 'GuzzleHttp\\Promise\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', - ), - 'GuzzleHttp\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', - ), - 'Gumlet\\' => - array ( - 0 => __DIR__ . '/..' . '/gumlet/php-image-resize/lib', - ), - 'Gettext\\Languages\\' => - array ( - 0 => __DIR__ . '/..' . '/gettext/languages/src', - ), - 'Gettext\\' => - array ( - 0 => __DIR__ . '/..' . '/gettext/gettext/src', - ), 'Firebase\\JWT\\' => array ( 0 => __DIR__ . '/..' . '/firebase/php-jwt/src', ), - 'Facebook\\WebDriver\\' => - array ( - 0 => __DIR__ . '/..' . '/facebook/webdriver/lib', - ), - 'Dotenv\\' => - array ( - 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', - ), - 'Doctrine\\Instantiator\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator', - ), - 'Doctrine\\Common\\Inflector\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Common/Inflector', - ), - 'DeepCopy\\' => - array ( - 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', - ), - 'Composer\\XdebugHandler\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', - ), - 'Composer\\Spdx\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/spdx-licenses/src', - ), - 'Composer\\Semver\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/semver/src', - ), - 'Composer\\CaBundle\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', - ), - 'Composer\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/composer/src/Composer', - ), - 'Codeception\\PHPUnit\\' => - array ( - 0 => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src', - ), - 'Codeception\\Extension\\' => - array ( - 0 => __DIR__ . '/..' . '/codeception/codeception/ext', - ), - 'Codeception\\' => - array ( - 0 => __DIR__ . '/..' . '/codeception/codeception/src/Codeception', - 1 => __DIR__ . '/..' . '/codeception/stub/src', - 2 => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception', - ), - 'Carbon\\' => - array ( - 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', - ), - ); - - public static $fallbackDirsPsr4 = array ( - 0 => __DIR__ . '/..' . '/wp-cli/cache-command/src', - 1 => __DIR__ . '/..' . '/wp-cli/checksum-command/src', - 2 => __DIR__ . '/..' . '/wp-cli/config-command/src', - 3 => __DIR__ . '/..' . '/wp-cli/core-command/src', - 4 => __DIR__ . '/..' . '/wp-cli/cron-command/src', - 5 => __DIR__ . '/..' . '/wp-cli/db-command/src', - 6 => __DIR__ . '/..' . '/wp-cli/entity-command/src', - 7 => __DIR__ . '/..' . '/wp-cli/eval-command/src', - 8 => __DIR__ . '/..' . '/wp-cli/export-command/src', - 9 => __DIR__ . '/..' . '/wp-cli/extension-command/src', - 10 => __DIR__ . '/..' . '/wp-cli/import-command/src', - 11 => __DIR__ . '/..' . '/wp-cli/language-command/src', - 12 => __DIR__ . '/..' . '/wp-cli/media-command/src', - 13 => __DIR__ . '/..' . '/wp-cli/package-command/src', - 14 => __DIR__ . '/..' . '/wp-cli/rewrite-command/src', - 15 => __DIR__ . '/..' . '/wp-cli/role-command/src', - 16 => __DIR__ . '/..' . '/wp-cli/scaffold-command/src', - 17 => __DIR__ . '/..' . '/wp-cli/search-replace-command/src', - 18 => __DIR__ . '/..' . '/wp-cli/server-command/src', - 19 => __DIR__ . '/..' . '/wp-cli/shell-command/src', - 20 => __DIR__ . '/..' . '/wp-cli/super-admin-command/src', - 21 => __DIR__ . '/..' . '/wp-cli/widget-command/src', - ); - - public static $prefixesPsr0 = array ( - 'c' => - array ( - 'cli' => - array ( - 0 => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib', - ), - ), - 'W' => - array ( - 'WP_CLI' => - array ( - 0 => __DIR__ . '/..' . '/wp-cli/wp-cli/php', - ), - ), - 'R' => - array ( - 'Requests' => - array ( - 0 => __DIR__ . '/..' . '/rmccue/requests/library', - ), - ), - 'O' => - array ( - 'Oxymel' => - array ( - 0 => __DIR__ . '/..' . '/nb/oxymel', - ), - ), - 'M' => - array ( - 'Mustache' => - array ( - 0 => __DIR__ . '/..' . '/mustache/mustache/src', - ), - ), - 'H' => - array ( - 'Hautelook' => - array ( - 0 => __DIR__ . '/..' . '/hautelook/phpass/src', - ), - 'Handlebars' => - array ( - 0 => __DIR__ . '/..' . '/xamin/handlebars.php/src', - ), - ), - 'B' => - array ( - 'Behat\\Gherkin' => - array ( - 0 => __DIR__ . '/..' . '/behat/gherkin/src', - ), - 'BaconStringUtils' => - array ( - 0 => __DIR__ . '/..' . '/bacon/bacon-string-utils/src', - ), - ), ); public static $classMap = array ( - 'BaconStringUtils\\Filter\\Slugify' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/Filter/Slugify.php', - 'BaconStringUtils\\Filter\\SlugifyFactory' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/Filter/SlugifyFactory.php', - 'BaconStringUtils\\Module' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/Module.php', - 'BaconStringUtils\\Slugifier' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/Slugifier.php', - 'BaconStringUtils\\SlugifierFactory' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/SlugifierFactory.php', - 'BaconStringUtils\\UniDecoder' => __DIR__ . '/..' . '/bacon/bacon-string-utils/src/BaconStringUtils/UniDecoder.php', - 'Behat\\Gherkin\\Cache\\CacheInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Cache/CacheInterface.php', - 'Behat\\Gherkin\\Cache\\FileCache' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Cache/FileCache.php', - 'Behat\\Gherkin\\Cache\\MemoryCache' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Cache/MemoryCache.php', - 'Behat\\Gherkin\\Exception\\CacheException' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/CacheException.php', - 'Behat\\Gherkin\\Exception\\Exception' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/Exception.php', - 'Behat\\Gherkin\\Exception\\LexerException' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/LexerException.php', - 'Behat\\Gherkin\\Exception\\NodeException' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/NodeException.php', - 'Behat\\Gherkin\\Exception\\ParserException' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Exception/ParserException.php', - 'Behat\\Gherkin\\Filter\\ComplexFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/ComplexFilter.php', - 'Behat\\Gherkin\\Filter\\ComplexFilterInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/ComplexFilterInterface.php', - 'Behat\\Gherkin\\Filter\\FeatureFilterInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/FeatureFilterInterface.php', - 'Behat\\Gherkin\\Filter\\FilterInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/FilterInterface.php', - 'Behat\\Gherkin\\Filter\\LineFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/LineFilter.php', - 'Behat\\Gherkin\\Filter\\LineRangeFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/LineRangeFilter.php', - 'Behat\\Gherkin\\Filter\\NameFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/NameFilter.php', - 'Behat\\Gherkin\\Filter\\NarrativeFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/NarrativeFilter.php', - 'Behat\\Gherkin\\Filter\\PathsFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/PathsFilter.php', - 'Behat\\Gherkin\\Filter\\RoleFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/RoleFilter.php', - 'Behat\\Gherkin\\Filter\\SimpleFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/SimpleFilter.php', - 'Behat\\Gherkin\\Filter\\TagFilter' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Filter/TagFilter.php', - 'Behat\\Gherkin\\Gherkin' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Gherkin.php', - 'Behat\\Gherkin\\Keywords\\ArrayKeywords' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/ArrayKeywords.php', - 'Behat\\Gherkin\\Keywords\\CachedArrayKeywords' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/CachedArrayKeywords.php', - 'Behat\\Gherkin\\Keywords\\CucumberKeywords' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/CucumberKeywords.php', - 'Behat\\Gherkin\\Keywords\\KeywordsDumper' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/KeywordsDumper.php', - 'Behat\\Gherkin\\Keywords\\KeywordsInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Keywords/KeywordsInterface.php', - 'Behat\\Gherkin\\Lexer' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Lexer.php', - 'Behat\\Gherkin\\Loader\\AbstractFileLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/AbstractFileLoader.php', - 'Behat\\Gherkin\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/ArrayLoader.php', - 'Behat\\Gherkin\\Loader\\DirectoryLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/DirectoryLoader.php', - 'Behat\\Gherkin\\Loader\\FileLoaderInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/FileLoaderInterface.php', - 'Behat\\Gherkin\\Loader\\GherkinFileLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/GherkinFileLoader.php', - 'Behat\\Gherkin\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/LoaderInterface.php', - 'Behat\\Gherkin\\Loader\\YamlFileLoader' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Loader/YamlFileLoader.php', - 'Behat\\Gherkin\\Node\\ArgumentInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ArgumentInterface.php', - 'Behat\\Gherkin\\Node\\BackgroundNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/BackgroundNode.php', - 'Behat\\Gherkin\\Node\\ExampleNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ExampleNode.php', - 'Behat\\Gherkin\\Node\\ExampleTableNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ExampleTableNode.php', - 'Behat\\Gherkin\\Node\\FeatureNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/FeatureNode.php', - 'Behat\\Gherkin\\Node\\KeywordNodeInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/KeywordNodeInterface.php', - 'Behat\\Gherkin\\Node\\NodeInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/NodeInterface.php', - 'Behat\\Gherkin\\Node\\OutlineNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/OutlineNode.php', - 'Behat\\Gherkin\\Node\\PyStringNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/PyStringNode.php', - 'Behat\\Gherkin\\Node\\ScenarioInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioInterface.php', - 'Behat\\Gherkin\\Node\\ScenarioLikeInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioLikeInterface.php', - 'Behat\\Gherkin\\Node\\ScenarioNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/ScenarioNode.php', - 'Behat\\Gherkin\\Node\\StepContainerInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/StepContainerInterface.php', - 'Behat\\Gherkin\\Node\\StepNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/StepNode.php', - 'Behat\\Gherkin\\Node\\TableNode' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/TableNode.php', - 'Behat\\Gherkin\\Node\\TaggedNodeInterface' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Node/TaggedNodeInterface.php', - 'Behat\\Gherkin\\Parser' => __DIR__ . '/..' . '/behat/gherkin/src/Behat/Gherkin/Parser.php', - 'Cache_Command' => __DIR__ . '/..' . '/wp-cli/cache-command/src/Cache_Command.php', - 'Capabilities_Command' => __DIR__ . '/..' . '/wp-cli/role-command/src/Capabilities_Command.php', - 'Carbon\\Carbon' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Carbon.php', - 'Carbon\\CarbonImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonImmutable.php', - 'Carbon\\CarbonInterface' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterface.php', - 'Carbon\\CarbonInterval' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterval.php', - 'Carbon\\CarbonPeriod' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonPeriod.php', - 'Carbon\\CarbonTimeZone' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php', - 'Carbon\\Cli\\Invoker' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Cli/Invoker.php', - 'Carbon\\Exceptions\\BadUnitException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/BadUnitException.php', - 'Carbon\\Exceptions\\InvalidDateException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php', - 'Carbon\\Exceptions\\NotAPeriodException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php', - 'Carbon\\Exceptions\\NotLocaleAwareException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php', - 'Carbon\\Exceptions\\ParseErrorException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php', - 'Carbon\\Factory' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Factory.php', - 'Carbon\\FactoryImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/FactoryImmutable.php', - 'Carbon\\Language' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Language.php', - 'Carbon\\Laravel\\ServiceProvider' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php', - 'Carbon\\Traits\\Boundaries' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Boundaries.php', - 'Carbon\\Traits\\Cast' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Cast.php', - 'Carbon\\Traits\\Comparison' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Comparison.php', - 'Carbon\\Traits\\Converter' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Converter.php', - 'Carbon\\Traits\\Creator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Creator.php', - 'Carbon\\Traits\\Date' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Date.php', - 'Carbon\\Traits\\Difference' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Difference.php', - 'Carbon\\Traits\\Localization' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Localization.php', - 'Carbon\\Traits\\Macro' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Macro.php', - 'Carbon\\Traits\\Mixin' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Mixin.php', - 'Carbon\\Traits\\Modifiers' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Modifiers.php', - 'Carbon\\Traits\\Mutability' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Mutability.php', - 'Carbon\\Traits\\ObjectInitialisation' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php', - 'Carbon\\Traits\\Options' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Options.php', - 'Carbon\\Traits\\Rounding' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Rounding.php', - 'Carbon\\Traits\\Serialization' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Serialization.php', - 'Carbon\\Traits\\Test' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Test.php', - 'Carbon\\Traits\\Timestamp' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Timestamp.php', - 'Carbon\\Traits\\Units' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Units.php', - 'Carbon\\Traits\\Week' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Week.php', - 'Carbon\\Translator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Translator.php', - 'Checksum_Base_Command' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Checksum_Base_Command.php', - 'Checksum_Core_Command' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Checksum_Core_Command.php', - 'Checksum_Plugin_Command' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Checksum_Plugin_Command.php', - 'Codeception\\Actor' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Actor.php', - 'Codeception\\Application' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Application.php', - 'Codeception\\Codecept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Codecept.php', - 'Codeception\\Command\\Bootstrap' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Bootstrap.php', - 'Codeception\\Command\\Build' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Build.php', - 'Codeception\\Command\\Clean' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Clean.php', - 'Codeception\\Command\\Completion' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Completion.php', - 'Codeception\\Command\\CompletionFallback' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/CompletionFallback.php', - 'Codeception\\Command\\ConfigValidate' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/ConfigValidate.php', - 'Codeception\\Command\\Console' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Console.php', - 'Codeception\\Command\\DryRun' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/DryRun.php', - 'Codeception\\Command\\GenerateCept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateCept.php', - 'Codeception\\Command\\GenerateCest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateCest.php', - 'Codeception\\Command\\GenerateEnvironment' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateEnvironment.php', - 'Codeception\\Command\\GenerateFeature' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateFeature.php', - 'Codeception\\Command\\GenerateGroup' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateGroup.php', - 'Codeception\\Command\\GenerateHelper' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateHelper.php', - 'Codeception\\Command\\GeneratePageObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GeneratePageObject.php', - 'Codeception\\Command\\GenerateScenarios' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateScenarios.php', - 'Codeception\\Command\\GenerateSnapshot' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateSnapshot.php', - 'Codeception\\Command\\GenerateStepObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateStepObject.php', - 'Codeception\\Command\\GenerateSuite' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateSuite.php', - 'Codeception\\Command\\GenerateTest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GenerateTest.php', - 'Codeception\\Command\\GenerateWPAjax' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPAjax.php', - 'Codeception\\Command\\GenerateWPCanonical' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPCanonical.php', - 'Codeception\\Command\\GenerateWPRestApi' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestApi.php', - 'Codeception\\Command\\GenerateWPRestController' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestController.php', - 'Codeception\\Command\\GenerateWPRestPostTypeController' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPRestPostTypeController.php', - 'Codeception\\Command\\GenerateWPUnit' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPUnit.php', - 'Codeception\\Command\\GenerateWPXMLRPC' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Command/GenerateWPXMLRPC.php', - 'Codeception\\Command\\GherkinSnippets' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GherkinSnippets.php', - 'Codeception\\Command\\GherkinSteps' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/GherkinSteps.php', - 'Codeception\\Command\\Init' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Init.php', - 'Codeception\\Command\\Run' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Run.php', - 'Codeception\\Command\\SelfUpdate' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/SelfUpdate.php', - 'Codeception\\Command\\Shared\\Config' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Shared/Config.php', - 'Codeception\\Command\\Shared\\FileSystem' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Shared/FileSystem.php', - 'Codeception\\Command\\Shared\\Style' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Command/Shared/Style.php', - 'Codeception\\Configuration' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Configuration.php', - 'Codeception\\Coverage\\Filter' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Filter.php', - 'Codeception\\Coverage\\Subscriber\\Local' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Subscriber/Local.php', - 'Codeception\\Coverage\\Subscriber\\LocalServer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Subscriber/LocalServer.php', - 'Codeception\\Coverage\\Subscriber\\Printer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Subscriber/Printer.php', - 'Codeception\\Coverage\\Subscriber\\RemoteServer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/Subscriber/RemoteServer.php', - 'Codeception\\Coverage\\SuiteSubscriber' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Coverage/SuiteSubscriber.php', - 'Codeception\\CustomCommandInterface' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/CustomCommandInterface.php', - 'Codeception\\Event\\FailEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/FailEvent.php', - 'Codeception\\Event\\PrintResultEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/PrintResultEvent.php', - 'Codeception\\Event\\StepEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/StepEvent.php', - 'Codeception\\Event\\SuiteEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/SuiteEvent.php', - 'Codeception\\Event\\TestEvent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Event/TestEvent.php', - 'Codeception\\Events' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Events.php', - 'Codeception\\Example' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Example.php', - 'Codeception\\Exception\\ConditionalAssertionFailed' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ConditionalAssertionFailed.php', - 'Codeception\\Exception\\ConfigurationException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ConfigurationException.php', - 'Codeception\\Exception\\ConnectionException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ConnectionException.php', - 'Codeception\\Exception\\ContentNotFound' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ContentNotFound.php', - 'Codeception\\Exception\\ElementNotFound' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ElementNotFound.php', - 'Codeception\\Exception\\ExtensionException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ExtensionException.php', - 'Codeception\\Exception\\ExternalUrlException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ExternalUrlException.php', - 'Codeception\\Exception\\Fail' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/Fail.php', - 'Codeception\\Exception\\Incomplete' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/Incomplete.php', - 'Codeception\\Exception\\InjectionException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/InjectionException.php', - 'Codeception\\Exception\\MalformedLocatorException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/MalformedLocatorException.php', - 'Codeception\\Exception\\ModuleConfigException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ModuleConfigException.php', - 'Codeception\\Exception\\ModuleConflictException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ModuleConflictException.php', - 'Codeception\\Exception\\ModuleException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ModuleException.php', - 'Codeception\\Exception\\ModuleRequireException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ModuleRequireException.php', - 'Codeception\\Exception\\ParseException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/ParseException.php', - 'Codeception\\Exception\\RemoteException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/RemoteException.php', - 'Codeception\\Exception\\Skip' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/Skip.php', - 'Codeception\\Exception\\TestParseException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/TestParseException.php', - 'Codeception\\Exception\\TestRuntimeException' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Exception/TestRuntimeException.php', - 'Codeception\\Extension' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Extension.php', - 'Codeception\\Extension\\DotReporter' => __DIR__ . '/..' . '/codeception/codeception/ext/DotReporter.php', - 'Codeception\\Extension\\Logger' => __DIR__ . '/..' . '/codeception/codeception/ext/Logger.php', - 'Codeception\\Extension\\Recorder' => __DIR__ . '/..' . '/codeception/codeception/ext/Recorder.php', - 'Codeception\\Extension\\RunBefore' => __DIR__ . '/..' . '/codeception/codeception/ext/RunBefore.php', - 'Codeception\\Extension\\RunFailed' => __DIR__ . '/..' . '/codeception/codeception/ext/RunFailed.php', - 'Codeception\\Extension\\RunProcess' => __DIR__ . '/..' . '/codeception/codeception/ext/RunProcess.php', - 'Codeception\\Extension\\SimpleReporter' => __DIR__ . '/..' . '/codeception/codeception/ext/SimpleReporter.php', - 'Codeception\\GroupObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/GroupObject.php', - 'Codeception\\InitTemplate' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/InitTemplate.php', - 'Codeception\\Lib\\Actor\\Shared\\Comment' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Actor/Shared/Comment.php', - 'Codeception\\Lib\\Actor\\Shared\\Friend' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Actor/Shared/Friend.php', - 'Codeception\\Lib\\Connector\\Guzzle' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Guzzle.php', - 'Codeception\\Lib\\Connector\\Guzzle6' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Guzzle6.php', - 'Codeception\\Lib\\Connector\\Laravel5' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Laravel5.php', - 'Codeception\\Lib\\Connector\\Laravel5\\ExceptionHandlerDecorator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Laravel5/ExceptionHandlerDecorator.php', - 'Codeception\\Lib\\Connector\\Lumen' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Lumen.php', - 'Codeception\\Lib\\Connector\\Lumen\\DummyKernel' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Lumen/DummyKernel.php', - 'Codeception\\Lib\\Connector\\Phalcon' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Phalcon.php', - 'Codeception\\Lib\\Connector\\Phalcon\\MemorySession' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Phalcon/MemorySession.php', - 'Codeception\\Lib\\Connector\\Shared\\LaravelCommon' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Shared/LaravelCommon.php', - 'Codeception\\Lib\\Connector\\Shared\\PhpSuperGlobalsConverter' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Shared/PhpSuperGlobalsConverter.php', - 'Codeception\\Lib\\Connector\\Symfony' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Symfony.php', - 'Codeception\\Lib\\Connector\\Universal' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Universal.php', - 'Codeception\\Lib\\Connector\\Yii1' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii1.php', - 'Codeception\\Lib\\Connector\\Yii2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2.php', - 'Codeception\\Lib\\Connector\\Yii2\\ConnectionWatcher' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/ConnectionWatcher.php', - 'Codeception\\Lib\\Connector\\Yii2\\FixturesStore' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/FixturesStore.php', - 'Codeception\\Lib\\Connector\\Yii2\\Logger' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/Logger.php', - 'Codeception\\Lib\\Connector\\Yii2\\TestMailer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/TestMailer.php', - 'Codeception\\Lib\\Connector\\Yii2\\TransactionForcer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/Yii2/TransactionForcer.php', - 'Codeception\\Lib\\Connector\\ZF1' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZF1.php', - 'Codeception\\Lib\\Connector\\ZF2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZF2.php', - 'Codeception\\Lib\\Connector\\ZF2\\PersistentServiceManager' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZF2/PersistentServiceManager.php', - 'Codeception\\Lib\\Connector\\ZendExpressive' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZendExpressive.php', - 'Codeception\\Lib\\Connector\\ZendExpressive\\ResponseCollector' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Connector/ZendExpressive/ResponseCollector.php', - 'Codeception\\Lib\\Console\\Colorizer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/Colorizer.php', - 'Codeception\\Lib\\Console\\DiffFactory' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/DiffFactory.php', - 'Codeception\\Lib\\Console\\Message' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/Message.php', - 'Codeception\\Lib\\Console\\MessageFactory' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/MessageFactory.php', - 'Codeception\\Lib\\Console\\Output' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Console/Output.php', - 'Codeception\\Lib\\DbPopulator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/DbPopulator.php', - 'Codeception\\Lib\\Di' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Di.php', - 'Codeception\\Lib\\Driver\\AmazonSQS' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/AmazonSQS.php', - 'Codeception\\Lib\\Driver\\Beanstalk' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Beanstalk.php', - 'Codeception\\Lib\\Driver\\Db' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Db.php', - 'Codeception\\Lib\\Driver\\ExtendedDbDriver' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Driver/ExtendedDbDriver.php', - 'Codeception\\Lib\\Driver\\ExtendedMySql' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Driver/ExtendedMySql.php', - 'Codeception\\Lib\\Driver\\Facebook' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Facebook.php', - 'Codeception\\Lib\\Driver\\Iron' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Iron.php', - 'Codeception\\Lib\\Driver\\MongoDb' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/MongoDb.php', - 'Codeception\\Lib\\Driver\\MySql' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/MySql.php', - 'Codeception\\Lib\\Driver\\Oci' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Oci.php', - 'Codeception\\Lib\\Driver\\PostgreSql' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/PostgreSql.php', - 'Codeception\\Lib\\Driver\\SqlSrv' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/SqlSrv.php', - 'Codeception\\Lib\\Driver\\Sqlite' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Driver/Sqlite.php', - 'Codeception\\Lib\\Framework' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Framework.php', - 'Codeception\\Lib\\Friend' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Friend.php', - 'Codeception\\Lib\\Generator\\AbstractGenerator' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/AbstractGenerator.php', - 'Codeception\\Lib\\Generator\\AcceptanceSuiteConfig' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/AcceptanceSuiteConfig.php', - 'Codeception\\Lib\\Generator\\Actions' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Actions.php', - 'Codeception\\Lib\\Generator\\Actor' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Actor.php', - 'Codeception\\Lib\\Generator\\Cept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Cept.php', - 'Codeception\\Lib\\Generator\\Cest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Cest.php', - 'Codeception\\Lib\\Generator\\Feature' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Feature.php', - 'Codeception\\Lib\\Generator\\FunctionalSuiteConfig' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/FunctionalSuiteConfig.php', - 'Codeception\\Lib\\Generator\\GeneratorInterface' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/GeneratorInterface.php', - 'Codeception\\Lib\\Generator\\GherkinSnippets' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/GherkinSnippets.php', - 'Codeception\\Lib\\Generator\\Group' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Group.php', - 'Codeception\\Lib\\Generator\\Helper' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Helper.php', - 'Codeception\\Lib\\Generator\\IntegrationSuiteConfig' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/IntegrationSuiteConfig.php', - 'Codeception\\Lib\\Generator\\IntegrationSuiteThemeConfig' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/IntegrationSuiteThemeConfig.php', - 'Codeception\\Lib\\Generator\\PageObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/PageObject.php', - 'Codeception\\Lib\\Generator\\Shared\\Classname' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Shared/Classname.php', - 'Codeception\\Lib\\Generator\\Snapshot' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Snapshot.php', - 'Codeception\\Lib\\Generator\\StepObject' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/StepObject.php', - 'Codeception\\Lib\\Generator\\Test' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Generator/Test.php', - 'Codeception\\Lib\\Generator\\WPUnit' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Lib/Generator/WPUnit.php', - 'Codeception\\Lib\\GroupManager' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/GroupManager.php', - 'Codeception\\Lib\\InnerBrowser' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/InnerBrowser.php', - 'Codeception\\Lib\\Interfaces\\API' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/API.php', - 'Codeception\\Lib\\Interfaces\\ActiveRecord' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ActiveRecord.php', - 'Codeception\\Lib\\Interfaces\\ConflictsWithModule' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ConflictsWithModule.php', - 'Codeception\\Lib\\Interfaces\\DataMapper' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/DataMapper.php', - 'Codeception\\Lib\\Interfaces\\Db' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/Db.php', - 'Codeception\\Lib\\Interfaces\\DependsOnModule' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/DependsOnModule.php', - 'Codeception\\Lib\\Interfaces\\DoctrineProvider' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/DoctrineProvider.php', - 'Codeception\\Lib\\Interfaces\\ElementLocator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ElementLocator.php', - 'Codeception\\Lib\\Interfaces\\MultiSession' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/MultiSession.php', - 'Codeception\\Lib\\Interfaces\\ORM' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ORM.php', - 'Codeception\\Lib\\Interfaces\\PageSourceSaver' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/PageSourceSaver.php', - 'Codeception\\Lib\\Interfaces\\PartedModule' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/PartedModule.php', - 'Codeception\\Lib\\Interfaces\\Queue' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/Queue.php', - 'Codeception\\Lib\\Interfaces\\Remote' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/Remote.php', - 'Codeception\\Lib\\Interfaces\\RequiresPackage' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/RequiresPackage.php', - 'Codeception\\Lib\\Interfaces\\ScreenshotSaver' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/ScreenshotSaver.php', - 'Codeception\\Lib\\Interfaces\\SessionSnapshot' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/SessionSnapshot.php', - 'Codeception\\Lib\\Interfaces\\Web' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Interfaces/Web.php', - 'Codeception\\Lib\\ModuleContainer' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/ModuleContainer.php', - 'Codeception\\Lib\\Notification' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Notification.php', - 'Codeception\\Lib\\ParamsLoader' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/ParamsLoader.php', - 'Codeception\\Lib\\Parser' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Parser.php', - 'Codeception\\Lib\\Shared\\LaravelCommon' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Lib/Shared/LaravelCommon.php', - 'Codeception\\Module' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module.php', - 'Codeception\\Module\\AMQP' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/AMQP.php', - 'Codeception\\Module\\AngularJS' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/AngularJS.php', - 'Codeception\\Module\\Apc' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Apc.php', - 'Codeception\\Module\\Asserts' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Asserts.php', - 'Codeception\\Module\\Cli' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Cli.php', - 'Codeception\\Module\\DataFactory' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/DataFactory.php', - 'Codeception\\Module\\Db' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Db.php', - 'Codeception\\Module\\Doctrine2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Doctrine2.php', - 'Codeception\\Module\\FTP' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/FTP.php', - 'Codeception\\Module\\Facebook' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Facebook.php', - 'Codeception\\Module\\Filesystem' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Filesystem.php', - 'Codeception\\Module\\Laravel5' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Laravel5.php', - 'Codeception\\Module\\Lumen' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Lumen.php', - 'Codeception\\Module\\Memcache' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Memcache.php', - 'Codeception\\Module\\MongoDb' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/MongoDb.php', - 'Codeception\\Module\\Phalcon' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Phalcon.php', - 'Codeception\\Module\\PhpBrowser' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/PhpBrowser.php', - 'Codeception\\Module\\Queue' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Queue.php', - 'Codeception\\Module\\REST' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/REST.php', - 'Codeception\\Module\\Redis' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Redis.php', - 'Codeception\\Module\\SOAP' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/SOAP.php', - 'Codeception\\Module\\Sequence' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Sequence.php', - 'Codeception\\Module\\Silex' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Silex.php', - 'Codeception\\Module\\Symfony' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Symfony.php', - 'Codeception\\Module\\WPBrowser' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPBrowser.php', - 'Codeception\\Module\\WPBrowserMethods' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPBrowserMethods.php', - 'Codeception\\Module\\WPCLI' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPCLI.php', - 'Codeception\\Module\\WPDb' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPDb.php', - 'Codeception\\Module\\WPFilesystem' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPFilesystem.php', - 'Codeception\\Module\\WPLoader' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPLoader.php', - 'Codeception\\Module\\WPQueries' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPQueries.php', - 'Codeception\\Module\\WPWebDriver' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WPWebDriver.php', - 'Codeception\\Module\\WebDriver' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/WebDriver.php', - 'Codeception\\Module\\WordPress' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Module/WordPress.php', - 'Codeception\\Module\\XMLRPC' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/XMLRPC.php', - 'Codeception\\Module\\Yii1' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Yii1.php', - 'Codeception\\Module\\Yii2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/Yii2.php', - 'Codeception\\Module\\ZF1' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/ZF1.php', - 'Codeception\\Module\\ZF2' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/ZF2.php', - 'Codeception\\Module\\ZendExpressive' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Module/ZendExpressive.php', - 'Codeception\\PHPUnit\\ConsolePrinter' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ConsolePrinter.php', - 'Codeception\\PHPUnit\\Constraint\\Crawler' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/Crawler.php', - 'Codeception\\PHPUnit\\Constraint\\CrawlerNot' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/CrawlerNot.php', - 'Codeception\\PHPUnit\\Constraint\\JsonContains' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/JsonContains.php', - 'Codeception\\PHPUnit\\Constraint\\JsonType' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/JsonType.php', - 'Codeception\\PHPUnit\\Constraint\\Page' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/Page.php', - 'Codeception\\PHPUnit\\Constraint\\WebDriver' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/WebDriver.php', - 'Codeception\\PHPUnit\\Constraint\\WebDriverNot' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Constraint/WebDriverNot.php', - 'Codeception\\PHPUnit\\DispatcherWrapper' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/DispatcherWrapper.php', - 'Codeception\\PHPUnit\\FilterTest' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/FilterTest.php', - 'Codeception\\PHPUnit\\Init' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Init.php', - 'Codeception\\PHPUnit\\Listener' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Listener.php', - 'Codeception\\PHPUnit\\Log\\JUnit' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Log/JUnit.php', - 'Codeception\\PHPUnit\\Log\\PhpUnit' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Log/PhpUnit.php', - 'Codeception\\PHPUnit\\ResultPrinter' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ResultPrinter.php', - 'Codeception\\PHPUnit\\ResultPrinter\\HTML' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ResultPrinter/HTML.php', - 'Codeception\\PHPUnit\\ResultPrinter\\Report' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ResultPrinter/Report.php', - 'Codeception\\PHPUnit\\ResultPrinter\\UI' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/ResultPrinter/UI.php', - 'Codeception\\PHPUnit\\Runner' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/Runner.php', - 'Codeception\\PHPUnit\\TestCase' => __DIR__ . '/..' . '/codeception/phpunit-wrapper/src/TestCase.php', - 'Codeception\\Scenario' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Scenario.php', - 'Codeception\\Snapshot' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Snapshot.php', - 'Codeception\\Step' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step.php', - 'Codeception\\Step\\Action' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Action.php', - 'Codeception\\Step\\Argument\\FormattedOutput' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Argument/FormattedOutput.php', - 'Codeception\\Step\\Argument\\PasswordArgument' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Argument/PasswordArgument.php', - 'Codeception\\Step\\Assertion' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Assertion.php', - 'Codeception\\Step\\Comment' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Comment.php', - 'Codeception\\Step\\Condition' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Condition.php', - 'Codeception\\Step\\ConditionalAssertion' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/ConditionalAssertion.php', - 'Codeception\\Step\\Executor' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Executor.php', - 'Codeception\\Step\\Incomplete' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Incomplete.php', - 'Codeception\\Step\\Meta' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Meta.php', - 'Codeception\\Step\\Skip' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Step/Skip.php', - 'Codeception\\Stub' => __DIR__ . '/..' . '/codeception/stub/src/Stub.php', - 'Codeception\\Stub\\ConsecutiveMap' => __DIR__ . '/..' . '/codeception/stub/src/Stub/ConsecutiveMap.php', - 'Codeception\\Stub\\Expected' => __DIR__ . '/..' . '/codeception/stub/src/Stub/Expected.php', - 'Codeception\\Stub\\StubMarshaler' => __DIR__ . '/..' . '/codeception/stub/src/Stub/StubMarshaler.php', - 'Codeception\\Subscriber\\AutoRebuild' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/AutoRebuild.php', - 'Codeception\\Subscriber\\BeforeAfterTest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/BeforeAfterTest.php', - 'Codeception\\Subscriber\\Bootstrap' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Bootstrap.php', - 'Codeception\\Subscriber\\Console' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Console.php', - 'Codeception\\Subscriber\\Dependencies' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Dependencies.php', - 'Codeception\\Subscriber\\ErrorHandler' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/ErrorHandler.php', - 'Codeception\\Subscriber\\ExtensionLoader' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/ExtensionLoader.php', - 'Codeception\\Subscriber\\FailFast' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/FailFast.php', - 'Codeception\\Subscriber\\GracefulTermination' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/GracefulTermination.php', - 'Codeception\\Subscriber\\Module' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Module.php', - 'Codeception\\Subscriber\\PrepareTest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/PrepareTest.php', - 'Codeception\\Subscriber\\Shared\\StaticEvents' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Subscriber/Shared/StaticEvents.php', - 'Codeception\\Suite' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Suite.php', - 'Codeception\\SuiteManager' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/SuiteManager.php', - 'Codeception\\Template\\Acceptance' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Template/Acceptance.php', - 'Codeception\\Template\\Api' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Template/Api.php', - 'Codeception\\Template\\Bootstrap' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Template/Bootstrap.php', - 'Codeception\\Template\\Unit' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Template/Unit.php', - 'Codeception\\Template\\Wpbrowser' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/Template/Wpbrowser.php', - 'Codeception\\TestCase\\WPAjaxTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPAjaxTestCase.php', - 'Codeception\\TestCase\\WPCanonicalTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPCanonicalTestCase.php', - 'Codeception\\TestCase\\WPRestApiTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestApiTestCase.php', - 'Codeception\\TestCase\\WPRestControllerTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestControllerTestCase.php', - 'Codeception\\TestCase\\WPRestPostTypeControllerTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPRestPostTypeControllerTestCase.php', - 'Codeception\\TestCase\\WPTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPTestCase.php', - 'Codeception\\TestCase\\WPXMLRPCTestCase' => __DIR__ . '/..' . '/lucatume/wp-browser/src/Codeception/TestCase/WPXMLRPCTestCase.php', - 'Codeception\\TestInterface' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/TestInterface.php', - 'Codeception\\Test\\Cept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Cept.php', - 'Codeception\\Test\\Cest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Cest.php', - 'Codeception\\Test\\Descriptor' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Descriptor.php', - 'Codeception\\Test\\Feature\\AssertionCounter' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/AssertionCounter.php', - 'Codeception\\Test\\Feature\\CodeCoverage' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/CodeCoverage.php', - 'Codeception\\Test\\Feature\\ErrorLogger' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/ErrorLogger.php', - 'Codeception\\Test\\Feature\\IgnoreIfMetadataBlocked' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/IgnoreIfMetadataBlocked.php', - 'Codeception\\Test\\Feature\\MetadataCollector' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/MetadataCollector.php', - 'Codeception\\Test\\Feature\\ScenarioLoader' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Feature/ScenarioLoader.php', - 'Codeception\\Test\\Feature\\Stub' => __DIR__ . '/..' . '/codeception/stub/src/Test/Feature/Stub.php', - 'Codeception\\Test\\Gherkin' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Gherkin.php', - 'Codeception\\Test\\Interfaces\\Dependent' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/Dependent.php', - 'Codeception\\Test\\Interfaces\\Descriptive' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/Descriptive.php', - 'Codeception\\Test\\Interfaces\\Plain' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/Plain.php', - 'Codeception\\Test\\Interfaces\\Reported' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/Reported.php', - 'Codeception\\Test\\Interfaces\\ScenarioDriven' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/ScenarioDriven.php', - 'Codeception\\Test\\Interfaces\\StrictCoverage' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Interfaces/StrictCoverage.php', - 'Codeception\\Test\\Loader' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader.php', - 'Codeception\\Test\\Loader\\Cept' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/Cept.php', - 'Codeception\\Test\\Loader\\Cest' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/Cest.php', - 'Codeception\\Test\\Loader\\Gherkin' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/Gherkin.php', - 'Codeception\\Test\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/LoaderInterface.php', - 'Codeception\\Test\\Loader\\Unit' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Loader/Unit.php', - 'Codeception\\Test\\Metadata' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Metadata.php', - 'Codeception\\Test\\Test' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Test.php', - 'Codeception\\Test\\Unit' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Test/Unit.php', - 'Codeception\\Util\\ActionSequence' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/ActionSequence.php', - 'Codeception\\Util\\Annotation' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Annotation.php', - 'Codeception\\Util\\ArrayContainsComparator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/ArrayContainsComparator.php', - 'Codeception\\Util\\Autoload' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Autoload.php', - 'Codeception\\Util\\Debug' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Debug.php', - 'Codeception\\Util\\FileSystem' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/FileSystem.php', - 'Codeception\\Util\\Fixtures' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Fixtures.php', - 'Codeception\\Util\\HttpCode' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/HttpCode.php', - 'Codeception\\Util\\JsonArray' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/JsonArray.php', - 'Codeception\\Util\\JsonType' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/JsonType.php', - 'Codeception\\Util\\Locator' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Locator.php', - 'Codeception\\Util\\Maybe' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Maybe.php', - 'Codeception\\Util\\PathResolver' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/PathResolver.php', - 'Codeception\\Util\\PropertyAccess' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/PropertyAccess.php', - 'Codeception\\Util\\ReflectionHelper' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/ReflectionHelper.php', - 'Codeception\\Util\\Shared\\Asserts' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Shared/Asserts.php', - 'Codeception\\Util\\Shared\\Namespaces' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Shared/Namespaces.php', - 'Codeception\\Util\\Soap' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Soap.php', - 'Codeception\\Util\\Stub' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Stub.php', - 'Codeception\\Util\\Template' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Template.php', - 'Codeception\\Util\\Uri' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Uri.php', - 'Codeception\\Util\\Xml' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/Xml.php', - 'Codeception\\Util\\XmlBuilder' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/XmlBuilder.php', - 'Codeception\\Util\\XmlStructure' => __DIR__ . '/..' . '/codeception/codeception/src/Codeception/Util/XmlStructure.php', - 'Comment_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Comment_Command.php', - 'Comment_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Comment_Meta_Command.php', - 'Composer\\Autoload\\AutoloadGenerator' => __DIR__ . '/..' . '/composer/composer/src/Composer/Autoload/AutoloadGenerator.php', - 'Composer\\Autoload\\ClassLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Autoload/ClassLoader.php', - 'Composer\\Autoload\\ClassMapGenerator' => __DIR__ . '/..' . '/composer/composer/src/Composer/Autoload/ClassMapGenerator.php', - 'Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php', - 'Composer\\Cache' => __DIR__ . '/..' . '/composer/composer/src/Composer/Cache.php', - 'Composer\\Command\\AboutCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/AboutCommand.php', - 'Composer\\Command\\ArchiveCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ArchiveCommand.php', - 'Composer\\Command\\BaseCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/BaseCommand.php', - 'Composer\\Command\\BaseDependencyCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/BaseDependencyCommand.php', - 'Composer\\Command\\CheckPlatformReqsCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php', - 'Composer\\Command\\ClearCacheCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ClearCacheCommand.php', - 'Composer\\Command\\ConfigCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ConfigCommand.php', - 'Composer\\Command\\CreateProjectCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/CreateProjectCommand.php', - 'Composer\\Command\\DependsCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/DependsCommand.php', - 'Composer\\Command\\DiagnoseCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/DiagnoseCommand.php', - 'Composer\\Command\\DumpAutoloadCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/DumpAutoloadCommand.php', - 'Composer\\Command\\ExecCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ExecCommand.php', - 'Composer\\Command\\GlobalCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/GlobalCommand.php', - 'Composer\\Command\\HomeCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/HomeCommand.php', - 'Composer\\Command\\InitCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/InitCommand.php', - 'Composer\\Command\\InstallCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/InstallCommand.php', - 'Composer\\Command\\LicensesCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/LicensesCommand.php', - 'Composer\\Command\\OutdatedCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/OutdatedCommand.php', - 'Composer\\Command\\ProhibitsCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ProhibitsCommand.php', - 'Composer\\Command\\RemoveCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/RemoveCommand.php', - 'Composer\\Command\\RequireCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/RequireCommand.php', - 'Composer\\Command\\RunScriptCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/RunScriptCommand.php', - 'Composer\\Command\\ScriptAliasCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ScriptAliasCommand.php', - 'Composer\\Command\\SearchCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/SearchCommand.php', - 'Composer\\Command\\SelfUpdateCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/SelfUpdateCommand.php', - 'Composer\\Command\\ShowCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ShowCommand.php', - 'Composer\\Command\\StatusCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/StatusCommand.php', - 'Composer\\Command\\SuggestsCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/SuggestsCommand.php', - 'Composer\\Command\\UpdateCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/UpdateCommand.php', - 'Composer\\Command\\ValidateCommand' => __DIR__ . '/..' . '/composer/composer/src/Composer/Command/ValidateCommand.php', - 'Composer\\Compiler' => __DIR__ . '/..' . '/composer/composer/src/Composer/Compiler.php', - 'Composer\\Composer' => __DIR__ . '/..' . '/composer/composer/src/Composer/Composer.php', - 'Composer\\Config' => __DIR__ . '/..' . '/composer/composer/src/Composer/Config.php', - 'Composer\\Config\\ConfigSourceInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Config/ConfigSourceInterface.php', - 'Composer\\Config\\JsonConfigSource' => __DIR__ . '/..' . '/composer/composer/src/Composer/Config/JsonConfigSource.php', - 'Composer\\Console\\Application' => __DIR__ . '/..' . '/composer/composer/src/Composer/Console/Application.php', - 'Composer\\Console\\HtmlOutputFormatter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Console/HtmlOutputFormatter.php', - 'Composer\\DependencyResolver\\Decisions' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Decisions.php', - 'Composer\\DependencyResolver\\DefaultPolicy' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php', - 'Composer\\DependencyResolver\\GenericRule' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/GenericRule.php', - 'Composer\\DependencyResolver\\Operation\\InstallOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php', - 'Composer\\DependencyResolver\\Operation\\MarkAliasInstalledOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php', - 'Composer\\DependencyResolver\\Operation\\MarkAliasUninstalledOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php', - 'Composer\\DependencyResolver\\Operation\\OperationInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php', - 'Composer\\DependencyResolver\\Operation\\SolverOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php', - 'Composer\\DependencyResolver\\Operation\\UninstallOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php', - 'Composer\\DependencyResolver\\Operation\\UpdateOperation' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php', - 'Composer\\DependencyResolver\\PolicyInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php', - 'Composer\\DependencyResolver\\Pool' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Pool.php', - 'Composer\\DependencyResolver\\Problem' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Problem.php', - 'Composer\\DependencyResolver\\Request' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Request.php', - 'Composer\\DependencyResolver\\Rule' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Rule.php', - 'Composer\\DependencyResolver\\Rule2Literals' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php', - 'Composer\\DependencyResolver\\RuleSet' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleSet.php', - 'Composer\\DependencyResolver\\RuleSetGenerator' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php', - 'Composer\\DependencyResolver\\RuleSetIterator' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php', - 'Composer\\DependencyResolver\\RuleWatchChain' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php', - 'Composer\\DependencyResolver\\RuleWatchGraph' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php', - 'Composer\\DependencyResolver\\RuleWatchNode' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php', - 'Composer\\DependencyResolver\\Solver' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Solver.php', - 'Composer\\DependencyResolver\\SolverBugException' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/SolverBugException.php', - 'Composer\\DependencyResolver\\SolverProblemsException' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php', - 'Composer\\DependencyResolver\\Transaction' => __DIR__ . '/..' . '/composer/composer/src/Composer/DependencyResolver/Transaction.php', - 'Composer\\Downloader\\ArchiveDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/ArchiveDownloader.php', - 'Composer\\Downloader\\ChangeReportInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/ChangeReportInterface.php', - 'Composer\\Downloader\\DownloadManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/DownloadManager.php', - 'Composer\\Downloader\\DownloaderInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/DownloaderInterface.php', - 'Composer\\Downloader\\DvcsDownloaderInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php', - 'Composer\\Downloader\\FileDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/FileDownloader.php', - 'Composer\\Downloader\\FilesystemException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/FilesystemException.php', - 'Composer\\Downloader\\FossilDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/FossilDownloader.php', - 'Composer\\Downloader\\GitDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/GitDownloader.php', - 'Composer\\Downloader\\GzipDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/GzipDownloader.php', - 'Composer\\Downloader\\HgDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/HgDownloader.php', - 'Composer\\Downloader\\PathDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/PathDownloader.php', - 'Composer\\Downloader\\PearPackageExtractor' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/PearPackageExtractor.php', - 'Composer\\Downloader\\PerforceDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/PerforceDownloader.php', - 'Composer\\Downloader\\PharDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/PharDownloader.php', - 'Composer\\Downloader\\RarDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/RarDownloader.php', - 'Composer\\Downloader\\SvnDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/SvnDownloader.php', - 'Composer\\Downloader\\TarDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/TarDownloader.php', - 'Composer\\Downloader\\TransportException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/TransportException.php', - 'Composer\\Downloader\\VcsCapableDownloaderInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php', - 'Composer\\Downloader\\VcsDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/VcsDownloader.php', - 'Composer\\Downloader\\XzDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/XzDownloader.php', - 'Composer\\Downloader\\ZipDownloader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Downloader/ZipDownloader.php', - 'Composer\\EventDispatcher\\Event' => __DIR__ . '/..' . '/composer/composer/src/Composer/EventDispatcher/Event.php', - 'Composer\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php', - 'Composer\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php', - 'Composer\\EventDispatcher\\ScriptExecutionException' => __DIR__ . '/..' . '/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php', - 'Composer\\Exception\\NoSslException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Exception/NoSslException.php', - 'Composer\\Factory' => __DIR__ . '/..' . '/composer/composer/src/Composer/Factory.php', - 'Composer\\IO\\BaseIO' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/BaseIO.php', - 'Composer\\IO\\BufferIO' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/BufferIO.php', - 'Composer\\IO\\ConsoleIO' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/ConsoleIO.php', - 'Composer\\IO\\IOInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/IOInterface.php', - 'Composer\\IO\\NullIO' => __DIR__ . '/..' . '/composer/composer/src/Composer/IO/NullIO.php', - 'Composer\\Installer' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer.php', - 'Composer\\Installer\\BinaryInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/BinaryInstaller.php', - 'Composer\\Installer\\BinaryPresenceInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php', - 'Composer\\Installer\\InstallationManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/InstallationManager.php', - 'Composer\\Installer\\InstallerEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/InstallerEvent.php', - 'Composer\\Installer\\InstallerEvents' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/InstallerEvents.php', - 'Composer\\Installer\\InstallerInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/InstallerInterface.php', - 'Composer\\Installer\\LibraryInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/LibraryInstaller.php', - 'Composer\\Installer\\MetapackageInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/MetapackageInstaller.php', - 'Composer\\Installer\\NoopInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/NoopInstaller.php', - 'Composer\\Installer\\PackageEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PackageEvent.php', - 'Composer\\Installer\\PackageEvents' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PackageEvents.php', - 'Composer\\Installer\\PearBinaryInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PearBinaryInstaller.php', - 'Composer\\Installer\\PearInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PearInstaller.php', - 'Composer\\Installer\\PluginInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/PluginInstaller.php', - 'Composer\\Installer\\ProjectInstaller' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/ProjectInstaller.php', - 'Composer\\Installer\\SuggestedPackagesReporter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php', - 'Composer\\Json\\JsonFile' => __DIR__ . '/..' . '/composer/composer/src/Composer/Json/JsonFile.php', - 'Composer\\Json\\JsonFormatter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Json/JsonFormatter.php', - 'Composer\\Json\\JsonManipulator' => __DIR__ . '/..' . '/composer/composer/src/Composer/Json/JsonManipulator.php', - 'Composer\\Json\\JsonValidationException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Json/JsonValidationException.php', - 'Composer\\Package\\AliasPackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/AliasPackage.php', - 'Composer\\Package\\Archiver\\ArchivableFilesFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php', - 'Composer\\Package\\Archiver\\ArchivableFilesFinder' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php', - 'Composer\\Package\\Archiver\\ArchiveManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php', - 'Composer\\Package\\Archiver\\ArchiverInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php', - 'Composer\\Package\\Archiver\\BaseExcludeFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php', - 'Composer\\Package\\Archiver\\ComposerExcludeFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php', - 'Composer\\Package\\Archiver\\GitExcludeFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php', - 'Composer\\Package\\Archiver\\HgExcludeFilter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php', - 'Composer\\Package\\Archiver\\PharArchiver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/PharArchiver.php', - 'Composer\\Package\\Archiver\\ZipArchiver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php', - 'Composer\\Package\\BasePackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/BasePackage.php', - 'Composer\\Package\\Comparer\\Comparer' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Comparer/Comparer.php', - 'Composer\\Package\\CompletePackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/CompletePackage.php', - 'Composer\\Package\\CompletePackageInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/CompletePackageInterface.php', - 'Composer\\Package\\Dumper\\ArrayDumper' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php', - 'Composer\\Package\\Link' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Link.php', - 'Composer\\Package\\LinkConstraint\\EmptyConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php', - 'Composer\\Package\\LinkConstraint\\LinkConstraintInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php', - 'Composer\\Package\\LinkConstraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php', - 'Composer\\Package\\LinkConstraint\\SpecificConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php', - 'Composer\\Package\\LinkConstraint\\VersionConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php', - 'Composer\\Package\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/ArrayLoader.php', - 'Composer\\Package\\Loader\\InvalidPackageException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php', - 'Composer\\Package\\Loader\\JsonLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/JsonLoader.php', - 'Composer\\Package\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/LoaderInterface.php', - 'Composer\\Package\\Loader\\RootPackageLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php', - 'Composer\\Package\\Loader\\ValidatingArrayLoader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php', - 'Composer\\Package\\Locker' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Locker.php', - 'Composer\\Package\\Package' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Package.php', - 'Composer\\Package\\PackageInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/PackageInterface.php', - 'Composer\\Package\\RootAliasPackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/RootAliasPackage.php', - 'Composer\\Package\\RootPackage' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/RootPackage.php', - 'Composer\\Package\\RootPackageInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/RootPackageInterface.php', - 'Composer\\Package\\Version\\VersionGuesser' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Version/VersionGuesser.php', - 'Composer\\Package\\Version\\VersionParser' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Version/VersionParser.php', - 'Composer\\Package\\Version\\VersionSelector' => __DIR__ . '/..' . '/composer/composer/src/Composer/Package/Version/VersionSelector.php', - 'Composer\\Plugin\\Capability\\Capability' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/Capability/Capability.php', - 'Composer\\Plugin\\Capability\\CommandProvider' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php', - 'Composer\\Plugin\\Capable' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/Capable.php', - 'Composer\\Plugin\\CommandEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/CommandEvent.php', - 'Composer\\Plugin\\PluginEvents' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PluginEvents.php', - 'Composer\\Plugin\\PluginInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PluginInterface.php', - 'Composer\\Plugin\\PluginManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PluginManager.php', - 'Composer\\Plugin\\PreCommandRunEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php', - 'Composer\\Plugin\\PreFileDownloadEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php', - 'Composer\\Question\\StrictConfirmationQuestion' => __DIR__ . '/..' . '/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php', - 'Composer\\Repository\\ArrayRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/ArrayRepository.php', - 'Composer\\Repository\\ArtifactRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/ArtifactRepository.php', - 'Composer\\Repository\\BaseRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/BaseRepository.php', - 'Composer\\Repository\\ComposerRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/ComposerRepository.php', - 'Composer\\Repository\\CompositeRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/CompositeRepository.php', - 'Composer\\Repository\\ConfigurableRepositoryInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php', - 'Composer\\Repository\\FilesystemRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/FilesystemRepository.php', - 'Composer\\Repository\\InstalledArrayRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/InstalledArrayRepository.php', - 'Composer\\Repository\\InstalledFilesystemRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php', - 'Composer\\Repository\\InstalledRepositoryInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php', - 'Composer\\Repository\\InvalidRepositoryException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/InvalidRepositoryException.php', - 'Composer\\Repository\\PackageRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/PackageRepository.php', - 'Composer\\Repository\\PathRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/PathRepository.php', - 'Composer\\Repository\\PearRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/PearRepository.php', - 'Composer\\Repository\\Pear\\BaseChannelReader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php', - 'Composer\\Repository\\Pear\\ChannelInfo' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php', - 'Composer\\Repository\\Pear\\ChannelReader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ChannelReader.php', - 'Composer\\Repository\\Pear\\ChannelRest10Reader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php', - 'Composer\\Repository\\Pear\\ChannelRest11Reader' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php', - 'Composer\\Repository\\Pear\\DependencyConstraint' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php', - 'Composer\\Repository\\Pear\\DependencyInfo' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php', - 'Composer\\Repository\\Pear\\PackageDependencyParser' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php', - 'Composer\\Repository\\Pear\\PackageInfo' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/PackageInfo.php', - 'Composer\\Repository\\Pear\\ReleaseInfo' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php', - 'Composer\\Repository\\PlatformRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/PlatformRepository.php', - 'Composer\\Repository\\RepositoryFactory' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/RepositoryFactory.php', - 'Composer\\Repository\\RepositoryInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/RepositoryInterface.php', - 'Composer\\Repository\\RepositoryManager' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/RepositoryManager.php', - 'Composer\\Repository\\RepositorySecurityException' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/RepositorySecurityException.php', - 'Composer\\Repository\\VcsRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/VcsRepository.php', - 'Composer\\Repository\\Vcs\\BitbucketDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php', - 'Composer\\Repository\\Vcs\\FossilDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php', - 'Composer\\Repository\\Vcs\\GitBitbucketDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php', - 'Composer\\Repository\\Vcs\\GitDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/GitDriver.php', - 'Composer\\Repository\\Vcs\\GitHubDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php', - 'Composer\\Repository\\Vcs\\GitLabDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php', - 'Composer\\Repository\\Vcs\\HgBitbucketDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php', - 'Composer\\Repository\\Vcs\\HgDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/HgDriver.php', - 'Composer\\Repository\\Vcs\\PerforceDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php', - 'Composer\\Repository\\Vcs\\SvnDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php', - 'Composer\\Repository\\Vcs\\VcsDriver' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php', - 'Composer\\Repository\\Vcs\\VcsDriverInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php', - 'Composer\\Repository\\VersionCacheInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/VersionCacheInterface.php', - 'Composer\\Repository\\WritableArrayRepository' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/WritableArrayRepository.php', - 'Composer\\Repository\\WritableRepositoryInterface' => __DIR__ . '/..' . '/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php', - 'Composer\\Script\\CommandEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Script/CommandEvent.php', - 'Composer\\Script\\Event' => __DIR__ . '/..' . '/composer/composer/src/Composer/Script/Event.php', - 'Composer\\Script\\PackageEvent' => __DIR__ . '/..' . '/composer/composer/src/Composer/Script/PackageEvent.php', - 'Composer\\Script\\ScriptEvents' => __DIR__ . '/..' . '/composer/composer/src/Composer/Script/ScriptEvents.php', - 'Composer\\SelfUpdate\\Keys' => __DIR__ . '/..' . '/composer/composer/src/Composer/SelfUpdate/Keys.php', - 'Composer\\SelfUpdate\\Versions' => __DIR__ . '/..' . '/composer/composer/src/Composer/SelfUpdate/Versions.php', - 'Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php', - 'Composer\\Semver\\Constraint\\AbstractConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/AbstractConstraint.php', - 'Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php', - 'Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php', - 'Composer\\Semver\\Constraint\\EmptyConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/EmptyConstraint.php', - 'Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php', - 'Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php', - 'Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php', - 'Composer\\Spdx\\SpdxLicenses' => __DIR__ . '/..' . '/composer/spdx-licenses/src/SpdxLicenses.php', - 'Composer\\Util\\AuthHelper' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/AuthHelper.php', - 'Composer\\Util\\Bitbucket' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Bitbucket.php', - 'Composer\\Util\\ComposerMirror' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/ComposerMirror.php', - 'Composer\\Util\\ConfigValidator' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/ConfigValidator.php', - 'Composer\\Util\\ErrorHandler' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/ErrorHandler.php', - 'Composer\\Util\\Filesystem' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Filesystem.php', - 'Composer\\Util\\Git' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Git.php', - 'Composer\\Util\\GitHub' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/GitHub.php', - 'Composer\\Util\\GitLab' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/GitLab.php', - 'Composer\\Util\\Hg' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Hg.php', - 'Composer\\Util\\IniHelper' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/IniHelper.php', - 'Composer\\Util\\NoProxyPattern' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/NoProxyPattern.php', - 'Composer\\Util\\PackageSorter' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/PackageSorter.php', - 'Composer\\Util\\Perforce' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Perforce.php', - 'Composer\\Util\\Platform' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Platform.php', - 'Composer\\Util\\ProcessExecutor' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/ProcessExecutor.php', - 'Composer\\Util\\RemoteFilesystem' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/RemoteFilesystem.php', - 'Composer\\Util\\Silencer' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Silencer.php', - 'Composer\\Util\\SpdxLicense' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/SpdxLicense.php', - 'Composer\\Util\\StreamContextFactory' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/StreamContextFactory.php', - 'Composer\\Util\\Svn' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Svn.php', - 'Composer\\Util\\TlsHelper' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/TlsHelper.php', - 'Composer\\Util\\Url' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Url.php', - 'Composer\\Util\\Zip' => __DIR__ . '/..' . '/composer/composer/src/Composer/Util/Zip.php', - 'Composer\\XdebugHandler' => __DIR__ . '/..' . '/composer/composer/src/Composer/XdebugHandler.php', - 'Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php', - 'Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php', - 'Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php', - 'Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php', - 'Config_Command' => __DIR__ . '/..' . '/wp-cli/config-command/src/Config_Command.php', - 'Core_Command' => __DIR__ . '/..' . '/wp-cli/core-command/src/Core_Command.php', - 'Core_Command_Namespace' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Core_Command_Namespace.php', - 'Core_Language_Command' => __DIR__ . '/..' . '/wp-cli/language-command/src/Core_Language_Command.php', - 'Cron_Command' => __DIR__ . '/..' . '/wp-cli/cron-command/src/Cron_Command.php', - 'Cron_Event_Command' => __DIR__ . '/..' . '/wp-cli/cron-command/src/Cron_Event_Command.php', - 'Cron_Schedule_Command' => __DIR__ . '/..' . '/wp-cli/cron-command/src/Cron_Schedule_Command.php', - 'DB_Command' => __DIR__ . '/..' . '/wp-cli/db-command/src/DB_Command.php', - 'DeepCopy\\DeepCopy' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php', - 'DeepCopy\\Exception\\CloneException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php', - 'DeepCopy\\Exception\\PropertyException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', - 'DeepCopy\\Filter\\Filter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php', - 'DeepCopy\\Filter\\KeepFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php', - 'DeepCopy\\Filter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php', - 'DeepCopy\\Filter\\SetNullFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php', - 'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php', - 'DeepCopy\\Matcher\\Matcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php', - 'DeepCopy\\Matcher\\PropertyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php', - 'DeepCopy\\Matcher\\PropertyNameMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php', - 'DeepCopy\\Matcher\\PropertyTypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php', - 'DeepCopy\\Reflection\\ReflectionHelper' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php', - 'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php', - 'DeepCopy\\TypeFilter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php', - 'DeepCopy\\TypeFilter\\ShallowCopyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', - 'DeepCopy\\TypeFilter\\TypeFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', - 'DeepCopy\\TypeMatcher\\TypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', - 'Doctrine\\Common\\Inflector\\Inflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php', - 'Doctrine\\Instantiator\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php', - 'Doctrine\\Instantiator\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php', - 'Doctrine\\Instantiator\\Exception\\UnexpectedValueException' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php', - 'Doctrine\\Instantiator\\Instantiator' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php', - 'Doctrine\\Instantiator\\InstantiatorInterface' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php', - 'Dotenv\\Dotenv' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Dotenv.php', - 'Dotenv\\Environment\\AbstractVariables' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/AbstractVariables.php', - 'Dotenv\\Environment\\Adapter\\AdapterInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/AdapterInterface.php', - 'Dotenv\\Environment\\Adapter\\ApacheAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ApacheAdapter.php', - 'Dotenv\\Environment\\Adapter\\ArrayAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ArrayAdapter.php', - 'Dotenv\\Environment\\Adapter\\EnvConstAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/EnvConstAdapter.php', - 'Dotenv\\Environment\\Adapter\\PutenvAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/PutenvAdapter.php', - 'Dotenv\\Environment\\Adapter\\ServerConstAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ServerConstAdapter.php', - 'Dotenv\\Environment\\DotenvFactory' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/DotenvFactory.php', - 'Dotenv\\Environment\\DotenvVariables' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/DotenvVariables.php', - 'Dotenv\\Environment\\FactoryInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/FactoryInterface.php', - 'Dotenv\\Environment\\VariablesInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/VariablesInterface.php', - 'Dotenv\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/ExceptionInterface.php', - 'Dotenv\\Exception\\InvalidFileException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidFileException.php', - 'Dotenv\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidPathException.php', - 'Dotenv\\Exception\\ValidationException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/ValidationException.php', - 'Dotenv\\Lines' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Lines.php', - 'Dotenv\\Loader' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Loader.php', - 'Dotenv\\Parser' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser.php', - 'Dotenv\\Regex\\Error' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Error.php', - 'Dotenv\\Regex\\Regex' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Regex.php', - 'Dotenv\\Regex\\Result' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Result.php', - 'Dotenv\\Regex\\Success' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Success.php', - 'Dotenv\\Validator' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Validator.php', - 'EvalFile_Command' => __DIR__ . '/..' . '/wp-cli/eval-command/src/EvalFile_Command.php', - 'Eval_Command' => __DIR__ . '/..' . '/wp-cli/eval-command/src/Eval_Command.php', - 'Export_Command' => __DIR__ . '/..' . '/wp-cli/export-command/src/Export_Command.php', - 'Facebook\\WebDriver\\AbstractWebDriverCheckboxOrRadio' => __DIR__ . '/..' . '/facebook/webdriver/lib/AbstractWebDriverCheckboxOrRadio.php', - 'Facebook\\WebDriver\\Chrome\\ChromeDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/Chrome/ChromeDriver.php', - 'Facebook\\WebDriver\\Chrome\\ChromeDriverService' => __DIR__ . '/..' . '/facebook/webdriver/lib/Chrome/ChromeDriverService.php', - 'Facebook\\WebDriver\\Chrome\\ChromeOptions' => __DIR__ . '/..' . '/facebook/webdriver/lib/Chrome/ChromeOptions.php', - 'Facebook\\WebDriver\\Cookie' => __DIR__ . '/..' . '/facebook/webdriver/lib/Cookie.php', - 'Facebook\\WebDriver\\Exception\\ElementNotSelectableException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/ElementNotSelectableException.php', - 'Facebook\\WebDriver\\Exception\\ElementNotVisibleException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/ElementNotVisibleException.php', - 'Facebook\\WebDriver\\Exception\\ExpectedException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/ExpectedException.php', - 'Facebook\\WebDriver\\Exception\\IMEEngineActivationFailedException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/IMEEngineActivationFailedException.php', - 'Facebook\\WebDriver\\Exception\\IMENotAvailableException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/IMENotAvailableException.php', - 'Facebook\\WebDriver\\Exception\\IndexOutOfBoundsException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/IndexOutOfBoundsException.php', - 'Facebook\\WebDriver\\Exception\\InvalidCookieDomainException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/InvalidCookieDomainException.php', - 'Facebook\\WebDriver\\Exception\\InvalidCoordinatesException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/InvalidCoordinatesException.php', - 'Facebook\\WebDriver\\Exception\\InvalidElementStateException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/InvalidElementStateException.php', - 'Facebook\\WebDriver\\Exception\\InvalidSelectorException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/InvalidSelectorException.php', - 'Facebook\\WebDriver\\Exception\\MoveTargetOutOfBoundsException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/MoveTargetOutOfBoundsException.php', - 'Facebook\\WebDriver\\Exception\\NoAlertOpenException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoAlertOpenException.php', - 'Facebook\\WebDriver\\Exception\\NoCollectionException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoCollectionException.php', - 'Facebook\\WebDriver\\Exception\\NoScriptResultException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoScriptResultException.php', - 'Facebook\\WebDriver\\Exception\\NoStringException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoStringException.php', - 'Facebook\\WebDriver\\Exception\\NoStringLengthException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoStringLengthException.php', - 'Facebook\\WebDriver\\Exception\\NoStringWrapperException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoStringWrapperException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchCollectionException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchCollectionException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchDocumentException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchDocumentException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchDriverException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchDriverException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchElementException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchElementException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchFrameException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchFrameException.php', - 'Facebook\\WebDriver\\Exception\\NoSuchWindowException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NoSuchWindowException.php', - 'Facebook\\WebDriver\\Exception\\NullPointerException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/NullPointerException.php', - 'Facebook\\WebDriver\\Exception\\ScriptTimeoutException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/ScriptTimeoutException.php', - 'Facebook\\WebDriver\\Exception\\SessionNotCreatedException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/SessionNotCreatedException.php', - 'Facebook\\WebDriver\\Exception\\StaleElementReferenceException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/StaleElementReferenceException.php', - 'Facebook\\WebDriver\\Exception\\TimeOutException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/TimeOutException.php', - 'Facebook\\WebDriver\\Exception\\UnableToSetCookieException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnableToSetCookieException.php', - 'Facebook\\WebDriver\\Exception\\UnexpectedAlertOpenException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnexpectedAlertOpenException.php', - 'Facebook\\WebDriver\\Exception\\UnexpectedJavascriptException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnexpectedJavascriptException.php', - 'Facebook\\WebDriver\\Exception\\UnexpectedTagNameException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnexpectedTagNameException.php', - 'Facebook\\WebDriver\\Exception\\UnknownCommandException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnknownCommandException.php', - 'Facebook\\WebDriver\\Exception\\UnknownServerException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnknownServerException.php', - 'Facebook\\WebDriver\\Exception\\UnrecognizedExceptionException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnrecognizedExceptionException.php', - 'Facebook\\WebDriver\\Exception\\UnsupportedOperationException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/UnsupportedOperationException.php', - 'Facebook\\WebDriver\\Exception\\WebDriverCurlException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/WebDriverCurlException.php', - 'Facebook\\WebDriver\\Exception\\WebDriverException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/WebDriverException.php', - 'Facebook\\WebDriver\\Exception\\XPathLookupException' => __DIR__ . '/..' . '/facebook/webdriver/lib/Exception/XPathLookupException.php', - 'Facebook\\WebDriver\\Firefox\\FirefoxDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/Firefox/FirefoxDriver.php', - 'Facebook\\WebDriver\\Firefox\\FirefoxPreferences' => __DIR__ . '/..' . '/facebook/webdriver/lib/Firefox/FirefoxPreferences.php', - 'Facebook\\WebDriver\\Firefox\\FirefoxProfile' => __DIR__ . '/..' . '/facebook/webdriver/lib/Firefox/FirefoxProfile.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverButtonReleaseAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverButtonReleaseAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverClickAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverClickAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverClickAndHoldAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverClickAndHoldAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverContextClickAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverContextClickAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverCoordinates' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverCoordinates.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverDoubleClickAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverDoubleClickAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeyDownAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeyDownAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeyUpAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeyUpAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverKeysRelatedAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverKeysRelatedAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMouseAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMouseAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMouseMoveAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMouseMoveAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverMoveToOffsetAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverMoveToOffsetAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverSendKeysAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverSendKeysAction.php', - 'Facebook\\WebDriver\\Interactions\\Internal\\WebDriverSingleKeyAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Internal/WebDriverSingleKeyAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverDoubleTapAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverDoubleTapAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverDownAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverDownAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverFlickAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverFlickAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverFlickFromElementAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverFlickFromElementAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverLongPressAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverLongPressAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverMoveAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverMoveAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverScrollAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverScrollAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverScrollFromElementAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverScrollFromElementAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTapAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTapAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTouchAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTouchAction.php', - 'Facebook\\WebDriver\\Interactions\\Touch\\WebDriverTouchScreen' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/Touch/WebDriverTouchScreen.php', - 'Facebook\\WebDriver\\Interactions\\WebDriverActions' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/WebDriverActions.php', - 'Facebook\\WebDriver\\Interactions\\WebDriverCompositeAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/WebDriverCompositeAction.php', - 'Facebook\\WebDriver\\Interactions\\WebDriverTouchActions' => __DIR__ . '/..' . '/facebook/webdriver/lib/Interactions/WebDriverTouchActions.php', - 'Facebook\\WebDriver\\Internal\\WebDriverLocatable' => __DIR__ . '/..' . '/facebook/webdriver/lib/Internal/WebDriverLocatable.php', - 'Facebook\\WebDriver\\JavaScriptExecutor' => __DIR__ . '/..' . '/facebook/webdriver/lib/JavaScriptExecutor.php', - 'Facebook\\WebDriver\\Net\\URLChecker' => __DIR__ . '/..' . '/facebook/webdriver/lib/Net/URLChecker.php', - 'Facebook\\WebDriver\\Remote\\DesiredCapabilities' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/DesiredCapabilities.php', - 'Facebook\\WebDriver\\Remote\\DriverCommand' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/DriverCommand.php', - 'Facebook\\WebDriver\\Remote\\ExecuteMethod' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/ExecuteMethod.php', - 'Facebook\\WebDriver\\Remote\\FileDetector' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/FileDetector.php', - 'Facebook\\WebDriver\\Remote\\HttpCommandExecutor' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/HttpCommandExecutor.php', - 'Facebook\\WebDriver\\Remote\\LocalFileDetector' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/LocalFileDetector.php', - 'Facebook\\WebDriver\\Remote\\RemoteExecuteMethod' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteExecuteMethod.php', - 'Facebook\\WebDriver\\Remote\\RemoteKeyboard' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteKeyboard.php', - 'Facebook\\WebDriver\\Remote\\RemoteMouse' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteMouse.php', - 'Facebook\\WebDriver\\Remote\\RemoteTargetLocator' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteTargetLocator.php', - 'Facebook\\WebDriver\\Remote\\RemoteTouchScreen' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteTouchScreen.php', - 'Facebook\\WebDriver\\Remote\\RemoteWebDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteWebDriver.php', - 'Facebook\\WebDriver\\Remote\\RemoteWebElement' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/RemoteWebElement.php', - 'Facebook\\WebDriver\\Remote\\Service\\DriverCommandExecutor' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/Service/DriverCommandExecutor.php', - 'Facebook\\WebDriver\\Remote\\Service\\DriverService' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/Service/DriverService.php', - 'Facebook\\WebDriver\\Remote\\UselessFileDetector' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/UselessFileDetector.php', - 'Facebook\\WebDriver\\Remote\\WebDriverBrowserType' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/WebDriverBrowserType.php', - 'Facebook\\WebDriver\\Remote\\WebDriverCapabilityType' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/WebDriverCapabilityType.php', - 'Facebook\\WebDriver\\Remote\\WebDriverCommand' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/WebDriverCommand.php', - 'Facebook\\WebDriver\\Remote\\WebDriverResponse' => __DIR__ . '/..' . '/facebook/webdriver/lib/Remote/WebDriverResponse.php', - 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/Support/Events/EventFiringWebDriver.php', - 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebDriverNavigation' => __DIR__ . '/..' . '/facebook/webdriver/lib/Support/Events/EventFiringWebDriverNavigation.php', - 'Facebook\\WebDriver\\Support\\Events\\EventFiringWebElement' => __DIR__ . '/..' . '/facebook/webdriver/lib/Support/Events/EventFiringWebElement.php', - 'Facebook\\WebDriver\\Support\\XPathEscaper' => __DIR__ . '/..' . '/facebook/webdriver/lib/Support/XPathEscaper.php', - 'Facebook\\WebDriver\\WebDriver' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriver.php', - 'Facebook\\WebDriver\\WebDriverAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverAction.php', - 'Facebook\\WebDriver\\WebDriverAlert' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverAlert.php', - 'Facebook\\WebDriver\\WebDriverBy' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverBy.php', - 'Facebook\\WebDriver\\WebDriverCapabilities' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverCapabilities.php', - 'Facebook\\WebDriver\\WebDriverCheckboxes' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverCheckboxes.php', - 'Facebook\\WebDriver\\WebDriverCommandExecutor' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverCommandExecutor.php', - 'Facebook\\WebDriver\\WebDriverDimension' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverDimension.php', - 'Facebook\\WebDriver\\WebDriverDispatcher' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverDispatcher.php', - 'Facebook\\WebDriver\\WebDriverElement' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverElement.php', - 'Facebook\\WebDriver\\WebDriverEventListener' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverEventListener.php', - 'Facebook\\WebDriver\\WebDriverExpectedCondition' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverExpectedCondition.php', - 'Facebook\\WebDriver\\WebDriverHasInputDevices' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverHasInputDevices.php', - 'Facebook\\WebDriver\\WebDriverKeyboard' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverKeyboard.php', - 'Facebook\\WebDriver\\WebDriverKeys' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverKeys.php', - 'Facebook\\WebDriver\\WebDriverMouse' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverMouse.php', - 'Facebook\\WebDriver\\WebDriverNavigation' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverNavigation.php', - 'Facebook\\WebDriver\\WebDriverOptions' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverOptions.php', - 'Facebook\\WebDriver\\WebDriverPlatform' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverPlatform.php', - 'Facebook\\WebDriver\\WebDriverPoint' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverPoint.php', - 'Facebook\\WebDriver\\WebDriverRadios' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverRadios.php', - 'Facebook\\WebDriver\\WebDriverSearchContext' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverSearchContext.php', - 'Facebook\\WebDriver\\WebDriverSelect' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverSelect.php', - 'Facebook\\WebDriver\\WebDriverSelectInterface' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverSelectInterface.php', - 'Facebook\\WebDriver\\WebDriverTargetLocator' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverTargetLocator.php', - 'Facebook\\WebDriver\\WebDriverTimeouts' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverTimeouts.php', - 'Facebook\\WebDriver\\WebDriverUpAction' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverUpAction.php', - 'Facebook\\WebDriver\\WebDriverWait' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverWait.php', - 'Facebook\\WebDriver\\WebDriverWindow' => __DIR__ . '/..' . '/facebook/webdriver/lib/WebDriverWindow.php', 'Firebase\\JWT\\BeforeValidException' => __DIR__ . '/..' . '/firebase/php-jwt/src/BeforeValidException.php', 'Firebase\\JWT\\ExpiredException' => __DIR__ . '/..' . '/firebase/php-jwt/src/ExpiredException.php', 'Firebase\\JWT\\JWT' => __DIR__ . '/..' . '/firebase/php-jwt/src/JWT.php', 'Firebase\\JWT\\SignatureInvalidException' => __DIR__ . '/..' . '/firebase/php-jwt/src/SignatureInvalidException.php', - 'Gettext\\BaseTranslator' => __DIR__ . '/..' . '/gettext/gettext/src/BaseTranslator.php', - 'Gettext\\Extractors\\Blade' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Blade.php', - 'Gettext\\Extractors\\Csv' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Csv.php', - 'Gettext\\Extractors\\CsvDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/CsvDictionary.php', - 'Gettext\\Extractors\\Extractor' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Extractor.php', - 'Gettext\\Extractors\\ExtractorInterface' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/ExtractorInterface.php', - 'Gettext\\Extractors\\ExtractorMultiInterface' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/ExtractorMultiInterface.php', - 'Gettext\\Extractors\\Jed' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Jed.php', - 'Gettext\\Extractors\\JsCode' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/JsCode.php', - 'Gettext\\Extractors\\Json' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Json.php', - 'Gettext\\Extractors\\JsonDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/JsonDictionary.php', - 'Gettext\\Extractors\\Mo' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Mo.php', - 'Gettext\\Extractors\\PhpArray' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/PhpArray.php', - 'Gettext\\Extractors\\PhpCode' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/PhpCode.php', - 'Gettext\\Extractors\\Po' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Po.php', - 'Gettext\\Extractors\\Twig' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Twig.php', - 'Gettext\\Extractors\\VueJs' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/VueJs.php', - 'Gettext\\Extractors\\Xliff' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Xliff.php', - 'Gettext\\Extractors\\Yaml' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/Yaml.php', - 'Gettext\\Extractors\\YamlDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Extractors/YamlDictionary.php', - 'Gettext\\Generators\\Csv' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Csv.php', - 'Gettext\\Generators\\CsvDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/CsvDictionary.php', - 'Gettext\\Generators\\Generator' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Generator.php', - 'Gettext\\Generators\\GeneratorInterface' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/GeneratorInterface.php', - 'Gettext\\Generators\\Jed' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Jed.php', - 'Gettext\\Generators\\Json' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Json.php', - 'Gettext\\Generators\\JsonDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/JsonDictionary.php', - 'Gettext\\Generators\\Mo' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Mo.php', - 'Gettext\\Generators\\PhpArray' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/PhpArray.php', - 'Gettext\\Generators\\Po' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Po.php', - 'Gettext\\Generators\\Xliff' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Xliff.php', - 'Gettext\\Generators\\Yaml' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/Yaml.php', - 'Gettext\\Generators\\YamlDictionary' => __DIR__ . '/..' . '/gettext/gettext/src/Generators/YamlDictionary.php', - 'Gettext\\GettextTranslator' => __DIR__ . '/..' . '/gettext/gettext/src/GettextTranslator.php', - 'Gettext\\Languages\\Category' => __DIR__ . '/..' . '/gettext/languages/src/Category.php', - 'Gettext\\Languages\\CldrData' => __DIR__ . '/..' . '/gettext/languages/src/CldrData.php', - 'Gettext\\Languages\\Exporter\\Docs' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Docs.php', - 'Gettext\\Languages\\Exporter\\Exporter' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Exporter.php', - 'Gettext\\Languages\\Exporter\\Html' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Html.php', - 'Gettext\\Languages\\Exporter\\Json' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Json.php', - 'Gettext\\Languages\\Exporter\\Php' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Php.php', - 'Gettext\\Languages\\Exporter\\Po' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Po.php', - 'Gettext\\Languages\\Exporter\\Prettyjson' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Prettyjson.php', - 'Gettext\\Languages\\Exporter\\Xml' => __DIR__ . '/..' . '/gettext/languages/src/Exporter/Xml.php', - 'Gettext\\Languages\\FormulaConverter' => __DIR__ . '/..' . '/gettext/languages/src/FormulaConverter.php', - 'Gettext\\Languages\\Language' => __DIR__ . '/..' . '/gettext/languages/src/Language.php', - 'Gettext\\Merge' => __DIR__ . '/..' . '/gettext/gettext/src/Merge.php', - 'Gettext\\Translation' => __DIR__ . '/..' . '/gettext/gettext/src/Translation.php', - 'Gettext\\Translations' => __DIR__ . '/..' . '/gettext/gettext/src/Translations.php', - 'Gettext\\Translator' => __DIR__ . '/..' . '/gettext/gettext/src/Translator.php', - 'Gettext\\TranslatorInterface' => __DIR__ . '/..' . '/gettext/gettext/src/TranslatorInterface.php', - 'Gettext\\Utils\\CsvTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/CsvTrait.php', - 'Gettext\\Utils\\DictionaryTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/DictionaryTrait.php', - 'Gettext\\Utils\\FunctionsScanner' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/FunctionsScanner.php', - 'Gettext\\Utils\\HeadersExtractorTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/HeadersExtractorTrait.php', - 'Gettext\\Utils\\HeadersGeneratorTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/HeadersGeneratorTrait.php', - 'Gettext\\Utils\\JsFunctionsScanner' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/JsFunctionsScanner.php', - 'Gettext\\Utils\\MultidimensionalArrayTrait' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/MultidimensionalArrayTrait.php', - 'Gettext\\Utils\\ParsedComment' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/ParsedComment.php', - 'Gettext\\Utils\\ParsedFunction' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/ParsedFunction.php', - 'Gettext\\Utils\\PhpFunctionsScanner' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/PhpFunctionsScanner.php', - 'Gettext\\Utils\\StringReader' => __DIR__ . '/..' . '/gettext/gettext/src/Utils/StringReader.php', - 'Gumlet\\ImageResize' => __DIR__ . '/..' . '/gumlet/php-image-resize/lib/ImageResize.php', - 'Gumlet\\ImageResizeException' => __DIR__ . '/..' . '/gumlet/php-image-resize/lib/ImageResizeException.php', - 'GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php', - 'GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php', - 'GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', - 'GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', - 'GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', - 'GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', - 'GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', - 'GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', - 'GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php', - 'GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', - 'GuzzleHttp\\Exception\\GuzzleException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', - 'GuzzleHttp\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php', - 'GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php', - 'GuzzleHttp\\Exception\\SeekException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/SeekException.php', - 'GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php', - 'GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', - 'GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php', - 'GuzzleHttp\\HandlerStack' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HandlerStack.php', - 'GuzzleHttp\\Handler\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', - 'GuzzleHttp\\Handler\\CurlFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', - 'GuzzleHttp\\Handler\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', - 'GuzzleHttp\\Handler\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', - 'GuzzleHttp\\Handler\\EasyHandle' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', - 'GuzzleHttp\\Handler\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', - 'GuzzleHttp\\Handler\\Proxy' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/Proxy.php', - 'GuzzleHttp\\Handler\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', - 'GuzzleHttp\\MessageFormatter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatter.php', - 'GuzzleHttp\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Middleware.php', - 'GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php', - 'GuzzleHttp\\PrepareBodyMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', - 'GuzzleHttp\\Promise\\AggregateException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/AggregateException.php', - 'GuzzleHttp\\Promise\\CancellationException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/CancellationException.php', - 'GuzzleHttp\\Promise\\Coroutine' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Coroutine.php', - 'GuzzleHttp\\Promise\\EachPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/EachPromise.php', - 'GuzzleHttp\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/FulfilledPromise.php', - 'GuzzleHttp\\Promise\\Promise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Promise.php', - 'GuzzleHttp\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromiseInterface.php', - 'GuzzleHttp\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromisorInterface.php', - 'GuzzleHttp\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectedPromise.php', - 'GuzzleHttp\\Promise\\RejectionException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectionException.php', - 'GuzzleHttp\\Promise\\TaskQueue' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueue.php', - 'GuzzleHttp\\Promise\\TaskQueueInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueueInterface.php', - 'GuzzleHttp\\Psr7\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/AppendStream.php', - 'GuzzleHttp\\Psr7\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/BufferStream.php', - 'GuzzleHttp\\Psr7\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/CachingStream.php', - 'GuzzleHttp\\Psr7\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/DroppingStream.php', - 'GuzzleHttp\\Psr7\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/FnStream.php', - 'GuzzleHttp\\Psr7\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/InflateStream.php', - 'GuzzleHttp\\Psr7\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LazyOpenStream.php', - 'GuzzleHttp\\Psr7\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LimitStream.php', - 'GuzzleHttp\\Psr7\\MessageTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MessageTrait.php', - 'GuzzleHttp\\Psr7\\MultipartStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MultipartStream.php', - 'GuzzleHttp\\Psr7\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/NoSeekStream.php', - 'GuzzleHttp\\Psr7\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/PumpStream.php', - 'GuzzleHttp\\Psr7\\Request' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Request.php', - 'GuzzleHttp\\Psr7\\Response' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Response.php', - 'GuzzleHttp\\Psr7\\Rfc7230' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Rfc7230.php', - 'GuzzleHttp\\Psr7\\ServerRequest' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/ServerRequest.php', - 'GuzzleHttp\\Psr7\\Stream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Stream.php', - 'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', - 'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php', - 'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php', - 'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php', - 'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php', - 'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php', - 'GuzzleHttp\\RedirectMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', - 'GuzzleHttp\\RequestOptions' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestOptions.php', - 'GuzzleHttp\\RetryMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RetryMiddleware.php', - 'GuzzleHttp\\TransferStats' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/TransferStats.php', - 'GuzzleHttp\\UriTemplate' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/UriTemplate.php', - 'Handlebars\\Arguments' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Arguments.php', - 'Handlebars\\Autoloader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Autoloader.php', - 'Handlebars\\BaseString' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/BaseString.php', - 'Handlebars\\Cache' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Cache.php', - 'Handlebars\\Cache\\APC' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Cache/APC.php', - 'Handlebars\\Cache\\Disk' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Cache/Disk.php', - 'Handlebars\\Cache\\Dummy' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Cache/Dummy.php', - 'Handlebars\\ChildContext' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/ChildContext.php', - 'Handlebars\\Context' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Context.php', - 'Handlebars\\Handlebars' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Handlebars.php', - 'Handlebars\\Helper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper.php', - 'Handlebars\\Helper\\BindAttrHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/BindAttrHelper.php', - 'Handlebars\\Helper\\EachHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/EachHelper.php', - 'Handlebars\\Helper\\IfHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/IfHelper.php', - 'Handlebars\\Helper\\UnlessHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/UnlessHelper.php', - 'Handlebars\\Helper\\WithHelper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helper/WithHelper.php', - 'Handlebars\\Helpers' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Helpers.php', - 'Handlebars\\Loader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader.php', - 'Handlebars\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader/ArrayLoader.php', - 'Handlebars\\Loader\\FilesystemLoader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader/FilesystemLoader.php', - 'Handlebars\\Loader\\InlineLoader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader/InlineLoader.php', - 'Handlebars\\Loader\\StringLoader' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Loader/StringLoader.php', - 'Handlebars\\Parser' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Parser.php', - 'Handlebars\\SafeString' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/SafeString.php', - 'Handlebars\\String' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/String.php', - 'Handlebars\\StringWrapper' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/StringWrapper.php', - 'Handlebars\\Template' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Template.php', - 'Handlebars\\Tokenizer' => __DIR__ . '/..' . '/xamin/handlebars.php/src/Handlebars/Tokenizer.php', - 'Hautelook\\Phpass\\PasswordHash' => __DIR__ . '/..' . '/hautelook/phpass/src/Hautelook/Phpass/PasswordHash.php', - 'Illuminate\\Contracts\\Auth\\Access\\Authorizable' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Access/Authorizable.php', - 'Illuminate\\Contracts\\Auth\\Access\\Gate' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Access/Gate.php', - 'Illuminate\\Contracts\\Auth\\Authenticatable' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Authenticatable.php', - 'Illuminate\\Contracts\\Auth\\CanResetPassword' => __DIR__ . '/..' . '/illuminate/contracts/Auth/CanResetPassword.php', - 'Illuminate\\Contracts\\Auth\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Factory.php', - 'Illuminate\\Contracts\\Auth\\Guard' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Guard.php', - 'Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php', - 'Illuminate\\Contracts\\Auth\\MustVerifyEmail' => __DIR__ . '/..' . '/illuminate/contracts/Auth/MustVerifyEmail.php', - 'Illuminate\\Contracts\\Auth\\PasswordBroker' => __DIR__ . '/..' . '/illuminate/contracts/Auth/PasswordBroker.php', - 'Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => __DIR__ . '/..' . '/illuminate/contracts/Auth/PasswordBrokerFactory.php', - 'Illuminate\\Contracts\\Auth\\StatefulGuard' => __DIR__ . '/..' . '/illuminate/contracts/Auth/StatefulGuard.php', - 'Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => __DIR__ . '/..' . '/illuminate/contracts/Auth/SupportsBasicAuth.php', - 'Illuminate\\Contracts\\Auth\\UserProvider' => __DIR__ . '/..' . '/illuminate/contracts/Auth/UserProvider.php', - 'Illuminate\\Contracts\\Broadcasting\\Broadcaster' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/Broadcaster.php', - 'Illuminate\\Contracts\\Broadcasting\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/Factory.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBroadcast.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php', - 'Illuminate\\Contracts\\Bus\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Bus/Dispatcher.php', - 'Illuminate\\Contracts\\Bus\\QueueingDispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Bus/QueueingDispatcher.php', - 'Illuminate\\Contracts\\Cache\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Factory.php', - 'Illuminate\\Contracts\\Cache\\Lock' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Lock.php', - 'Illuminate\\Contracts\\Cache\\LockProvider' => __DIR__ . '/..' . '/illuminate/contracts/Cache/LockProvider.php', - 'Illuminate\\Contracts\\Cache\\LockTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Cache/LockTimeoutException.php', - 'Illuminate\\Contracts\\Cache\\Repository' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Repository.php', - 'Illuminate\\Contracts\\Cache\\Store' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Store.php', - 'Illuminate\\Contracts\\Config\\Repository' => __DIR__ . '/..' . '/illuminate/contracts/Config/Repository.php', - 'Illuminate\\Contracts\\Console\\Application' => __DIR__ . '/..' . '/illuminate/contracts/Console/Application.php', - 'Illuminate\\Contracts\\Console\\Kernel' => __DIR__ . '/..' . '/illuminate/contracts/Console/Kernel.php', - 'Illuminate\\Contracts\\Container\\BindingResolutionException' => __DIR__ . '/..' . '/illuminate/contracts/Container/BindingResolutionException.php', - 'Illuminate\\Contracts\\Container\\Container' => __DIR__ . '/..' . '/illuminate/contracts/Container/Container.php', - 'Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/illuminate/contracts/Container/ContextualBindingBuilder.php', - 'Illuminate\\Contracts\\Cookie\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Cookie/Factory.php', - 'Illuminate\\Contracts\\Cookie\\QueueingFactory' => __DIR__ . '/..' . '/illuminate/contracts/Cookie/QueueingFactory.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/CastsAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php', - 'Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => __DIR__ . '/..' . '/illuminate/contracts/Database/Events/MigrationEvent.php', - 'Illuminate\\Contracts\\Database\\ModelIdentifier' => __DIR__ . '/..' . '/illuminate/contracts/Database/ModelIdentifier.php', - 'Illuminate\\Contracts\\Debug\\ExceptionHandler' => __DIR__ . '/..' . '/illuminate/contracts/Debug/ExceptionHandler.php', - 'Illuminate\\Contracts\\Encryption\\DecryptException' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/DecryptException.php', - 'Illuminate\\Contracts\\Encryption\\EncryptException' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/EncryptException.php', - 'Illuminate\\Contracts\\Encryption\\Encrypter' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/Encrypter.php', - 'Illuminate\\Contracts\\Events\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Events/Dispatcher.php', - 'Illuminate\\Contracts\\Filesystem\\Cloud' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Cloud.php', - 'Illuminate\\Contracts\\Filesystem\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Factory.php', - 'Illuminate\\Contracts\\Filesystem\\FileExistsException' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/FileExistsException.php', - 'Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/FileNotFoundException.php', - 'Illuminate\\Contracts\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Filesystem.php', - 'Illuminate\\Contracts\\Foundation\\Application' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/Application.php', - 'Illuminate\\Contracts\\Foundation\\CachesConfiguration' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/CachesConfiguration.php', - 'Illuminate\\Contracts\\Foundation\\CachesRoutes' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/CachesRoutes.php', - 'Illuminate\\Contracts\\Hashing\\Hasher' => __DIR__ . '/..' . '/illuminate/contracts/Hashing/Hasher.php', - 'Illuminate\\Contracts\\Http\\Kernel' => __DIR__ . '/..' . '/illuminate/contracts/Http/Kernel.php', - 'Illuminate\\Contracts\\Mail\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Factory.php', - 'Illuminate\\Contracts\\Mail\\MailQueue' => __DIR__ . '/..' . '/illuminate/contracts/Mail/MailQueue.php', - 'Illuminate\\Contracts\\Mail\\Mailable' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Mailable.php', - 'Illuminate\\Contracts\\Mail\\Mailer' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Mailer.php', - 'Illuminate\\Contracts\\Notifications\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Notifications/Dispatcher.php', - 'Illuminate\\Contracts\\Notifications\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Notifications/Factory.php', - 'Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/LengthAwarePaginator.php', - 'Illuminate\\Contracts\\Pagination\\Paginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/Paginator.php', - 'Illuminate\\Contracts\\Pipeline\\Hub' => __DIR__ . '/..' . '/illuminate/contracts/Pipeline/Hub.php', - 'Illuminate\\Contracts\\Pipeline\\Pipeline' => __DIR__ . '/..' . '/illuminate/contracts/Pipeline/Pipeline.php', - 'Illuminate\\Contracts\\Queue\\EntityNotFoundException' => __DIR__ . '/..' . '/illuminate/contracts/Queue/EntityNotFoundException.php', - 'Illuminate\\Contracts\\Queue\\EntityResolver' => __DIR__ . '/..' . '/illuminate/contracts/Queue/EntityResolver.php', - 'Illuminate\\Contracts\\Queue\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Factory.php', - 'Illuminate\\Contracts\\Queue\\Job' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Job.php', - 'Illuminate\\Contracts\\Queue\\Monitor' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Monitor.php', - 'Illuminate\\Contracts\\Queue\\Queue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Queue.php', - 'Illuminate\\Contracts\\Queue\\QueueableCollection' => __DIR__ . '/..' . '/illuminate/contracts/Queue/QueueableCollection.php', - 'Illuminate\\Contracts\\Queue\\QueueableEntity' => __DIR__ . '/..' . '/illuminate/contracts/Queue/QueueableEntity.php', - 'Illuminate\\Contracts\\Queue\\ShouldQueue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldQueue.php', - 'Illuminate\\Contracts\\Redis\\Connection' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Connection.php', - 'Illuminate\\Contracts\\Redis\\Connector' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Connector.php', - 'Illuminate\\Contracts\\Redis\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Factory.php', - 'Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Redis/LimiterTimeoutException.php', - 'Illuminate\\Contracts\\Routing\\BindingRegistrar' => __DIR__ . '/..' . '/illuminate/contracts/Routing/BindingRegistrar.php', - 'Illuminate\\Contracts\\Routing\\Registrar' => __DIR__ . '/..' . '/illuminate/contracts/Routing/Registrar.php', - 'Illuminate\\Contracts\\Routing\\ResponseFactory' => __DIR__ . '/..' . '/illuminate/contracts/Routing/ResponseFactory.php', - 'Illuminate\\Contracts\\Routing\\UrlGenerator' => __DIR__ . '/..' . '/illuminate/contracts/Routing/UrlGenerator.php', - 'Illuminate\\Contracts\\Routing\\UrlRoutable' => __DIR__ . '/..' . '/illuminate/contracts/Routing/UrlRoutable.php', - 'Illuminate\\Contracts\\Session\\Session' => __DIR__ . '/..' . '/illuminate/contracts/Session/Session.php', - 'Illuminate\\Contracts\\Support\\Arrayable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Arrayable.php', - 'Illuminate\\Contracts\\Support\\DeferrableProvider' => __DIR__ . '/..' . '/illuminate/contracts/Support/DeferrableProvider.php', - 'Illuminate\\Contracts\\Support\\Htmlable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Htmlable.php', - 'Illuminate\\Contracts\\Support\\Jsonable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Jsonable.php', - 'Illuminate\\Contracts\\Support\\MessageBag' => __DIR__ . '/..' . '/illuminate/contracts/Support/MessageBag.php', - 'Illuminate\\Contracts\\Support\\MessageProvider' => __DIR__ . '/..' . '/illuminate/contracts/Support/MessageProvider.php', - 'Illuminate\\Contracts\\Support\\Renderable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Renderable.php', - 'Illuminate\\Contracts\\Support\\Responsable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Responsable.php', - 'Illuminate\\Contracts\\Translation\\HasLocalePreference' => __DIR__ . '/..' . '/illuminate/contracts/Translation/HasLocalePreference.php', - 'Illuminate\\Contracts\\Translation\\Loader' => __DIR__ . '/..' . '/illuminate/contracts/Translation/Loader.php', - 'Illuminate\\Contracts\\Translation\\Translator' => __DIR__ . '/..' . '/illuminate/contracts/Translation/Translator.php', - 'Illuminate\\Contracts\\Validation\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Factory.php', - 'Illuminate\\Contracts\\Validation\\ImplicitRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ImplicitRule.php', - 'Illuminate\\Contracts\\Validation\\Rule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Rule.php', - 'Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ValidatesWhenResolved.php', - 'Illuminate\\Contracts\\Validation\\Validator' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Validator.php', - 'Illuminate\\Contracts\\View\\Engine' => __DIR__ . '/..' . '/illuminate/contracts/View/Engine.php', - 'Illuminate\\Contracts\\View\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/View/Factory.php', - 'Illuminate\\Contracts\\View\\View' => __DIR__ . '/..' . '/illuminate/contracts/View/View.php', - 'Illuminate\\Support\\AggregateServiceProvider' => __DIR__ . '/..' . '/illuminate/support/AggregateServiceProvider.php', - 'Illuminate\\Support\\Arr' => __DIR__ . '/..' . '/illuminate/support/Arr.php', - 'Illuminate\\Support\\Carbon' => __DIR__ . '/..' . '/illuminate/support/Carbon.php', - 'Illuminate\\Support\\Collection' => __DIR__ . '/..' . '/illuminate/support/Collection.php', - 'Illuminate\\Support\\Composer' => __DIR__ . '/..' . '/illuminate/support/Composer.php', - 'Illuminate\\Support\\ConfigurationUrlParser' => __DIR__ . '/..' . '/illuminate/support/ConfigurationUrlParser.php', - 'Illuminate\\Support\\DateFactory' => __DIR__ . '/..' . '/illuminate/support/DateFactory.php', - 'Illuminate\\Support\\Enumerable' => __DIR__ . '/..' . '/illuminate/support/Enumerable.php', - 'Illuminate\\Support\\Env' => __DIR__ . '/..' . '/illuminate/support/Env.php', - 'Illuminate\\Support\\Facades\\App' => __DIR__ . '/..' . '/illuminate/support/Facades/App.php', - 'Illuminate\\Support\\Facades\\Artisan' => __DIR__ . '/..' . '/illuminate/support/Facades/Artisan.php', - 'Illuminate\\Support\\Facades\\Auth' => __DIR__ . '/..' . '/illuminate/support/Facades/Auth.php', - 'Illuminate\\Support\\Facades\\Blade' => __DIR__ . '/..' . '/illuminate/support/Facades/Blade.php', - 'Illuminate\\Support\\Facades\\Broadcast' => __DIR__ . '/..' . '/illuminate/support/Facades/Broadcast.php', - 'Illuminate\\Support\\Facades\\Bus' => __DIR__ . '/..' . '/illuminate/support/Facades/Bus.php', - 'Illuminate\\Support\\Facades\\Cache' => __DIR__ . '/..' . '/illuminate/support/Facades/Cache.php', - 'Illuminate\\Support\\Facades\\Config' => __DIR__ . '/..' . '/illuminate/support/Facades/Config.php', - 'Illuminate\\Support\\Facades\\Cookie' => __DIR__ . '/..' . '/illuminate/support/Facades/Cookie.php', - 'Illuminate\\Support\\Facades\\Crypt' => __DIR__ . '/..' . '/illuminate/support/Facades/Crypt.php', - 'Illuminate\\Support\\Facades\\DB' => __DIR__ . '/..' . '/illuminate/support/Facades/DB.php', - 'Illuminate\\Support\\Facades\\Date' => __DIR__ . '/..' . '/illuminate/support/Facades/Date.php', - 'Illuminate\\Support\\Facades\\Event' => __DIR__ . '/..' . '/illuminate/support/Facades/Event.php', - 'Illuminate\\Support\\Facades\\Facade' => __DIR__ . '/..' . '/illuminate/support/Facades/Facade.php', - 'Illuminate\\Support\\Facades\\File' => __DIR__ . '/..' . '/illuminate/support/Facades/File.php', - 'Illuminate\\Support\\Facades\\Gate' => __DIR__ . '/..' . '/illuminate/support/Facades/Gate.php', - 'Illuminate\\Support\\Facades\\Hash' => __DIR__ . '/..' . '/illuminate/support/Facades/Hash.php', - 'Illuminate\\Support\\Facades\\Http' => __DIR__ . '/..' . '/illuminate/support/Facades/Http.php', - 'Illuminate\\Support\\Facades\\Lang' => __DIR__ . '/..' . '/illuminate/support/Facades/Lang.php', - 'Illuminate\\Support\\Facades\\Log' => __DIR__ . '/..' . '/illuminate/support/Facades/Log.php', - 'Illuminate\\Support\\Facades\\Mail' => __DIR__ . '/..' . '/illuminate/support/Facades/Mail.php', - 'Illuminate\\Support\\Facades\\Notification' => __DIR__ . '/..' . '/illuminate/support/Facades/Notification.php', - 'Illuminate\\Support\\Facades\\Password' => __DIR__ . '/..' . '/illuminate/support/Facades/Password.php', - 'Illuminate\\Support\\Facades\\Queue' => __DIR__ . '/..' . '/illuminate/support/Facades/Queue.php', - 'Illuminate\\Support\\Facades\\Redirect' => __DIR__ . '/..' . '/illuminate/support/Facades/Redirect.php', - 'Illuminate\\Support\\Facades\\Redis' => __DIR__ . '/..' . '/illuminate/support/Facades/Redis.php', - 'Illuminate\\Support\\Facades\\Request' => __DIR__ . '/..' . '/illuminate/support/Facades/Request.php', - 'Illuminate\\Support\\Facades\\Response' => __DIR__ . '/..' . '/illuminate/support/Facades/Response.php', - 'Illuminate\\Support\\Facades\\Route' => __DIR__ . '/..' . '/illuminate/support/Facades/Route.php', - 'Illuminate\\Support\\Facades\\Schema' => __DIR__ . '/..' . '/illuminate/support/Facades/Schema.php', - 'Illuminate\\Support\\Facades\\Session' => __DIR__ . '/..' . '/illuminate/support/Facades/Session.php', - 'Illuminate\\Support\\Facades\\Storage' => __DIR__ . '/..' . '/illuminate/support/Facades/Storage.php', - 'Illuminate\\Support\\Facades\\URL' => __DIR__ . '/..' . '/illuminate/support/Facades/URL.php', - 'Illuminate\\Support\\Facades\\Validator' => __DIR__ . '/..' . '/illuminate/support/Facades/Validator.php', - 'Illuminate\\Support\\Facades\\View' => __DIR__ . '/..' . '/illuminate/support/Facades/View.php', - 'Illuminate\\Support\\Fluent' => __DIR__ . '/..' . '/illuminate/support/Fluent.php', - 'Illuminate\\Support\\HigherOrderCollectionProxy' => __DIR__ . '/..' . '/illuminate/support/HigherOrderCollectionProxy.php', - 'Illuminate\\Support\\HigherOrderTapProxy' => __DIR__ . '/..' . '/illuminate/support/HigherOrderTapProxy.php', - 'Illuminate\\Support\\HtmlString' => __DIR__ . '/..' . '/illuminate/support/HtmlString.php', - 'Illuminate\\Support\\InteractsWithTime' => __DIR__ . '/..' . '/illuminate/support/InteractsWithTime.php', - 'Illuminate\\Support\\LazyCollection' => __DIR__ . '/..' . '/illuminate/support/LazyCollection.php', - 'Illuminate\\Support\\Manager' => __DIR__ . '/..' . '/illuminate/support/Manager.php', - 'Illuminate\\Support\\MessageBag' => __DIR__ . '/..' . '/illuminate/support/MessageBag.php', - 'Illuminate\\Support\\NamespacedItemResolver' => __DIR__ . '/..' . '/illuminate/support/NamespacedItemResolver.php', - 'Illuminate\\Support\\Optional' => __DIR__ . '/..' . '/illuminate/support/Optional.php', - 'Illuminate\\Support\\Pluralizer' => __DIR__ . '/..' . '/illuminate/support/Pluralizer.php', - 'Illuminate\\Support\\ProcessUtils' => __DIR__ . '/..' . '/illuminate/support/ProcessUtils.php', - 'Illuminate\\Support\\ServiceProvider' => __DIR__ . '/..' . '/illuminate/support/ServiceProvider.php', - 'Illuminate\\Support\\Str' => __DIR__ . '/..' . '/illuminate/support/Str.php', - 'Illuminate\\Support\\Stringable' => __DIR__ . '/..' . '/illuminate/support/Stringable.php', - 'Illuminate\\Support\\Testing\\Fakes\\BusFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/BusFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\EventFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/EventFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\MailFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/MailFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\NotificationFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/NotificationFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\PendingMailFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/PendingMailFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\QueueFake' => __DIR__ . '/..' . '/illuminate/support/Testing/Fakes/QueueFake.php', - 'Illuminate\\Support\\Traits\\CapsuleManagerTrait' => __DIR__ . '/..' . '/illuminate/support/Traits/CapsuleManagerTrait.php', - 'Illuminate\\Support\\Traits\\EnumeratesValues' => __DIR__ . '/..' . '/illuminate/support/Traits/EnumeratesValues.php', - 'Illuminate\\Support\\Traits\\ForwardsCalls' => __DIR__ . '/..' . '/illuminate/support/Traits/ForwardsCalls.php', - 'Illuminate\\Support\\Traits\\Localizable' => __DIR__ . '/..' . '/illuminate/support/Traits/Localizable.php', - 'Illuminate\\Support\\Traits\\Macroable' => __DIR__ . '/..' . '/illuminate/support/Traits/Macroable.php', - 'Illuminate\\Support\\Traits\\Tappable' => __DIR__ . '/..' . '/illuminate/support/Traits/Tappable.php', - 'Illuminate\\Support\\ViewErrorBag' => __DIR__ . '/..' . '/illuminate/support/ViewErrorBag.php', - 'Import_Command' => __DIR__ . '/..' . '/wp-cli/import-command/src/Import_Command.php', - 'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', - 'JsonSchema\\Constraints\\BaseConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php', - 'JsonSchema\\Constraints\\CollectionConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php', - 'JsonSchema\\Constraints\\Constraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php', - 'JsonSchema\\Constraints\\ConstraintInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php', - 'JsonSchema\\Constraints\\EnumConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php', - 'JsonSchema\\Constraints\\Factory' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php', - 'JsonSchema\\Constraints\\FormatConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php', - 'JsonSchema\\Constraints\\NumberConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php', - 'JsonSchema\\Constraints\\ObjectConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php', - 'JsonSchema\\Constraints\\SchemaConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php', - 'JsonSchema\\Constraints\\StringConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php', - 'JsonSchema\\Constraints\\TypeCheck\\LooseTypeCheck' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php', - 'JsonSchema\\Constraints\\TypeCheck\\StrictTypeCheck' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php', - 'JsonSchema\\Constraints\\TypeCheck\\TypeCheckInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php', - 'JsonSchema\\Constraints\\TypeConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php', - 'JsonSchema\\Constraints\\UndefinedConstraint' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php', - 'JsonSchema\\Entity\\JsonPointer' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php', - 'JsonSchema\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php', - 'JsonSchema\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php', - 'JsonSchema\\Exception\\InvalidConfigException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php', - 'JsonSchema\\Exception\\InvalidSchemaException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php', - 'JsonSchema\\Exception\\InvalidSchemaMediaTypeException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php', - 'JsonSchema\\Exception\\InvalidSourceUriException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php', - 'JsonSchema\\Exception\\JsonDecodingException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php', - 'JsonSchema\\Exception\\ResourceNotFoundException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php', - 'JsonSchema\\Exception\\RuntimeException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php', - 'JsonSchema\\Exception\\UnresolvableJsonPointerException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php', - 'JsonSchema\\Exception\\UriResolverException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php', - 'JsonSchema\\Exception\\ValidationException' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php', - 'JsonSchema\\Iterator\\ObjectIterator' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php', - 'JsonSchema\\Rfc3339' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php', - 'JsonSchema\\SchemaStorage' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php', - 'JsonSchema\\SchemaStorageInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php', - 'JsonSchema\\UriResolverInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php', - 'JsonSchema\\UriRetrieverInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php', - 'JsonSchema\\Uri\\Retrievers\\AbstractRetriever' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php', - 'JsonSchema\\Uri\\Retrievers\\Curl' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php', - 'JsonSchema\\Uri\\Retrievers\\FileGetContents' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php', - 'JsonSchema\\Uri\\Retrievers\\PredefinedArray' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php', - 'JsonSchema\\Uri\\Retrievers\\UriRetrieverInterface' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php', - 'JsonSchema\\Uri\\UriResolver' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php', - 'JsonSchema\\Uri\\UriRetriever' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php', - 'JsonSchema\\Validator' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Validator.php', - 'Language_Namespace' => __DIR__ . '/..' . '/wp-cli/language-command/src/Language_Namespace.php', - 'Media_Command' => __DIR__ . '/..' . '/wp-cli/media-command/src/Media_Command.php', - 'Menu_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Menu_Command.php', - 'Menu_Item_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Menu_Item_Command.php', - 'Menu_Location_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Menu_Location_Command.php', - 'MikeMcLin\\WpPassword\\Contracts\\WpPassword' => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src/Contracts/WpPassword.php', - 'MikeMcLin\\WpPassword\\Facades\\WpPassword' => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src/Facades/WpPassword.php', - 'MikeMcLin\\WpPassword\\WpPassword' => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src/WpPassword.php', - 'MikeMcLin\\WpPassword\\WpPasswordProvider' => __DIR__ . '/..' . '/mikemclin/laravel-wp-password/src/WpPasswordProvider.php', - 'Mustache_Autoloader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Autoloader.php', - 'Mustache_Cache' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Cache.php', - 'Mustache_Cache_AbstractCache' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Cache/AbstractCache.php', - 'Mustache_Cache_FilesystemCache' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Cache/FilesystemCache.php', - 'Mustache_Cache_NoopCache' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Cache/NoopCache.php', - 'Mustache_Compiler' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Compiler.php', - 'Mustache_Context' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Context.php', - 'Mustache_Engine' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Engine.php', - 'Mustache_Exception' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception.php', - 'Mustache_Exception_InvalidArgumentException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php', - 'Mustache_Exception_LogicException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/LogicException.php', - 'Mustache_Exception_RuntimeException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/RuntimeException.php', - 'Mustache_Exception_SyntaxException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/SyntaxException.php', - 'Mustache_Exception_UnknownFilterException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php', - 'Mustache_Exception_UnknownHelperException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php', - 'Mustache_Exception_UnknownTemplateException' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php', - 'Mustache_HelperCollection' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/HelperCollection.php', - 'Mustache_LambdaHelper' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/LambdaHelper.php', - 'Mustache_Loader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader.php', - 'Mustache_Loader_ArrayLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/ArrayLoader.php', - 'Mustache_Loader_CascadingLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/CascadingLoader.php', - 'Mustache_Loader_FilesystemLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php', - 'Mustache_Loader_InlineLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/InlineLoader.php', - 'Mustache_Loader_MutableLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/MutableLoader.php', - 'Mustache_Loader_ProductionFilesystemLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/ProductionFilesystemLoader.php', - 'Mustache_Loader_StringLoader' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Loader/StringLoader.php', - 'Mustache_Logger' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Logger.php', - 'Mustache_Logger_AbstractLogger' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Logger/AbstractLogger.php', - 'Mustache_Logger_StreamLogger' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Logger/StreamLogger.php', - 'Mustache_Parser' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Parser.php', - 'Mustache_Source' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Source.php', - 'Mustache_Source_FilesystemSource' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Source/FilesystemSource.php', - 'Mustache_Template' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Template.php', - 'Mustache_Tokenizer' => __DIR__ . '/..' . '/mustache/mustache/src/Mustache/Tokenizer.php', - 'Mustangostang\\Spyc' => __DIR__ . '/..' . '/wp-cli/mustangostang-spyc/src/Spyc.php', - 'MySQLDump' => __DIR__ . '/..' . '/dg/mysql-dump/src/MySQLDump.php', - 'MySQLImport' => __DIR__ . '/..' . '/dg/mysql-dump/src/MySQLImport.php', - 'Network_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Network_Meta_Command.php', - 'Network_Namespace' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Network_Namespace.php', - 'Option_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Option_Command.php', - 'Oxymel' => __DIR__ . '/..' . '/nb/oxymel/Oxymel.php', - 'OxymelException' => __DIR__ . '/..' . '/nb/oxymel/Oxymel.php', - 'OxymelTest' => __DIR__ . '/..' . '/nb/oxymel/OxymelTest.php', - 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', - 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', - 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', - 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', - 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', - 'PHPUnit\\Framework\\Constraint\\ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', - 'PHPUnit\\Framework\\Constraint\\Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', - 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', - 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', - 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', - 'PHPUnit\\Framework\\Constraint\\Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', - 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php', - 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php', - 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php', - 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', - 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', - 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', - 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', - 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', - 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', - 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', - 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', - 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', - 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', - 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', - 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', - 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php', - 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', - 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', - 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php', - 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', - 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php', - 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', - 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php', - 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php', - 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php', - 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php', - 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', - 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', - 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', - 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', - 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php', - 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', - 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php', - 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', - 'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', - 'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php', - 'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php', - 'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php', - 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php', - 'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', - 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', - 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php', - 'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', - 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', - 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', - 'PHPUnit\\Framework\\InvalidParameterGroupException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php', - 'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php', - 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Match' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Match.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/NamespaceMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php', - 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator.php', - 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation/Invocation.php', - 'PHPUnit\\Framework\\MockObject\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/InvocationMocker.php', - 'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation/ObjectInvocation.php', - 'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation/StaticInvocation.php', - 'PHPUnit\\Framework\\MockObject\\Invokable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invokable.php', - 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/AnyInvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/AnyParameters.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\DeferredError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/DeferredError.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/Invocation.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtIndex.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/InvokedRecorder.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/MethodName.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/Parameters.php', - 'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher/StatelessInvocation.php', - 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', - 'PHPUnit\\Framework\\MockObject\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php', - 'PHPUnit\\Framework\\MockObject\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php', - 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ForwardCompatibility/MockObject.php', - 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/MatcherCollection.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php', - 'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php', - 'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php', - 'PHPUnit\\Framework\\RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php', - 'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php', - 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', - 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php', - 'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', - 'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php', - 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', - 'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php', - 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php', - 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php', - 'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php', - 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php', - 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php', - 'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php', - 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', - 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', - 'PHPUnit\\Framework\\UnexpectedValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnexpectedValueException.php', - 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', - 'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php', - 'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php', - 'PHPUnit\\Runner\\AfterIncompleteTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php', - 'PHPUnit\\Runner\\AfterLastTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php', - 'PHPUnit\\Runner\\AfterRiskyTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php', - 'PHPUnit\\Runner\\AfterSkippedTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php', - 'PHPUnit\\Runner\\AfterSuccessfulTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php', - 'PHPUnit\\Runner\\AfterTestErrorHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php', - 'PHPUnit\\Runner\\AfterTestFailureHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php', - 'PHPUnit\\Runner\\AfterTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php', - 'PHPUnit\\Runner\\AfterTestWarningHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php', - 'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', - 'PHPUnit\\Runner\\BeforeFirstTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php', - 'PHPUnit\\Runner\\BeforeTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php', - 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php', - 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php', - 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php', - 'PHPUnit\\Runner\\Hook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/Hook.php', - 'PHPUnit\\Runner\\NullTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/NullTestResultCache.php', - 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php', - 'PHPUnit\\Runner\\ResultCacheExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php', - 'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', - 'PHPUnit\\Runner\\TestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestHook.php', - 'PHPUnit\\Runner\\TestListenerAdapter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php', - 'PHPUnit\\Runner\\TestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestResultCache.php', - 'PHPUnit\\Runner\\TestResultCacheInterface' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestResultCacheInterface.php', - 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', - 'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', - 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', - 'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php', - 'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', - 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', - 'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php', - 'PHPUnit\\Util\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php', - 'PHPUnit\\Util\\ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php', - 'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php', - 'PHPUnit\\Util\\FileLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/FileLoader.php', - 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php', - 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php', - 'PHPUnit\\Util\\Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php', - 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php', - 'PHPUnit\\Util\\InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', - 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php', - 'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php', - 'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php', - 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php', - 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php', - 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php', - 'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php', - 'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php', - 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php', - 'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php', - 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php', - 'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', - 'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', - 'PHPUnit\\Util\\TestDox\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TestResult.php', - 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php', - 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php', - 'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php', - 'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php', - 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php', - 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php', - 'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php', - 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php', - 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COALESCE_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php', - 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', - 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Util' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Util.php', - 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'Package_Command' => __DIR__ . '/..' . '/wp-cli/package-command/src/Package_Command.php', - 'Peast\\Formatter\\Base' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Formatter/Base.php', - 'Peast\\Formatter\\Compact' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Formatter/Compact.php', - 'Peast\\Formatter\\Expanded' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Formatter/Expanded.php', - 'Peast\\Formatter\\PrettyPrint' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Formatter/PrettyPrint.php', - 'Peast\\Peast' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Peast.php', - 'Peast\\Renderer' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Renderer.php', - 'Peast\\Syntax\\CommentsRegistry' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/CommentsRegistry.php', - 'Peast\\Syntax\\ES2015\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2015/Features.php', - 'Peast\\Syntax\\ES2016\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2016/Features.php', - 'Peast\\Syntax\\ES2017\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2017/Features.php', - 'Peast\\Syntax\\ES2018\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2018/Features.php', - 'Peast\\Syntax\\ES2019\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2019/Features.php', - 'Peast\\Syntax\\ES2020\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ES2020/Features.php', - 'Peast\\Syntax\\EncodingException' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/EncodingException.php', - 'Peast\\Syntax\\EventsEmitter' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/EventsEmitter.php', - 'Peast\\Syntax\\Exception' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Exception.php', - 'Peast\\Syntax\\Features' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Features.php', - 'Peast\\Syntax\\JSX\\Parser' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/JSX/Parser.php', - 'Peast\\Syntax\\JSX\\Scanner' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/JSX/Scanner.php', - 'Peast\\Syntax\\LSM' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/LSM.php', - 'Peast\\Syntax\\Node\\ArrayExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ArrayExpression.php', - 'Peast\\Syntax\\Node\\ArrayPattern' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ArrayPattern.php', - 'Peast\\Syntax\\Node\\ArrowFunctionExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ArrowFunctionExpression.php', - 'Peast\\Syntax\\Node\\AssignmentExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentExpression.php', - 'Peast\\Syntax\\Node\\AssignmentPattern' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentPattern.php', - 'Peast\\Syntax\\Node\\AssignmentProperty' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/AssignmentProperty.php', - 'Peast\\Syntax\\Node\\AwaitExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/AwaitExpression.php', - 'Peast\\Syntax\\Node\\BigIntLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BigIntLiteral.php', - 'Peast\\Syntax\\Node\\BinaryExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BinaryExpression.php', - 'Peast\\Syntax\\Node\\BlockStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BlockStatement.php', - 'Peast\\Syntax\\Node\\BooleanLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BooleanLiteral.php', - 'Peast\\Syntax\\Node\\BreakStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/BreakStatement.php', - 'Peast\\Syntax\\Node\\CallExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/CallExpression.php', - 'Peast\\Syntax\\Node\\CatchClause' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/CatchClause.php', - 'Peast\\Syntax\\Node\\ClassBody' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ClassBody.php', - 'Peast\\Syntax\\Node\\ClassDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ClassDeclaration.php', - 'Peast\\Syntax\\Node\\ClassExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ClassExpression.php', - 'Peast\\Syntax\\Node\\Class_' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Class_.php', - 'Peast\\Syntax\\Node\\Comment' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Comment.php', - 'Peast\\Syntax\\Node\\ConditionalExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ConditionalExpression.php', - 'Peast\\Syntax\\Node\\ContinueStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ContinueStatement.php', - 'Peast\\Syntax\\Node\\DebuggerStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/DebuggerStatement.php', - 'Peast\\Syntax\\Node\\Declaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Declaration.php', - 'Peast\\Syntax\\Node\\DoWhileStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/DoWhileStatement.php', - 'Peast\\Syntax\\Node\\EmptyStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/EmptyStatement.php', - 'Peast\\Syntax\\Node\\ExportAllDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExportAllDeclaration.php', - 'Peast\\Syntax\\Node\\ExportDefaultDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExportDefaultDeclaration.php', - 'Peast\\Syntax\\Node\\ExportNamedDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExportNamedDeclaration.php', - 'Peast\\Syntax\\Node\\ExportSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExportSpecifier.php', - 'Peast\\Syntax\\Node\\Expression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Expression.php', - 'Peast\\Syntax\\Node\\ExpressionStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ExpressionStatement.php', - 'Peast\\Syntax\\Node\\ForInStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ForInStatement.php', - 'Peast\\Syntax\\Node\\ForOfStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ForOfStatement.php', - 'Peast\\Syntax\\Node\\ForStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ForStatement.php', - 'Peast\\Syntax\\Node\\FunctionDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/FunctionDeclaration.php', - 'Peast\\Syntax\\Node\\FunctionExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/FunctionExpression.php', - 'Peast\\Syntax\\Node\\Function_' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Function_.php', - 'Peast\\Syntax\\Node\\Identifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Identifier.php', - 'Peast\\Syntax\\Node\\IfStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/IfStatement.php', - 'Peast\\Syntax\\Node\\ImportDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportDeclaration.php', - 'Peast\\Syntax\\Node\\ImportDefaultSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportDefaultSpecifier.php', - 'Peast\\Syntax\\Node\\ImportExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportExpression.php', - 'Peast\\Syntax\\Node\\ImportNamespaceSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportNamespaceSpecifier.php', - 'Peast\\Syntax\\Node\\ImportSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ImportSpecifier.php', - 'Peast\\Syntax\\Node\\JSX\\JSXAttribute' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXAttribute.php', - 'Peast\\Syntax\\Node\\JSX\\JSXBoundaryElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXBoundaryElement.php', - 'Peast\\Syntax\\Node\\JSX\\JSXClosingElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingElement.php', - 'Peast\\Syntax\\Node\\JSX\\JSXClosingFragment' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingFragment.php', - 'Peast\\Syntax\\Node\\JSX\\JSXElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXElement.php', - 'Peast\\Syntax\\Node\\JSX\\JSXEmptyExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXEmptyExpression.php', - 'Peast\\Syntax\\Node\\JSX\\JSXExpressionContainer' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXExpressionContainer.php', - 'Peast\\Syntax\\Node\\JSX\\JSXFragment' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXFragment.php', - 'Peast\\Syntax\\Node\\JSX\\JSXIdentifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXIdentifier.php', - 'Peast\\Syntax\\Node\\JSX\\JSXMemberExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXMemberExpression.php', - 'Peast\\Syntax\\Node\\JSX\\JSXNamespacedName' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXNamespacedName.php', - 'Peast\\Syntax\\Node\\JSX\\JSXOpeningElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningElement.php', - 'Peast\\Syntax\\Node\\JSX\\JSXOpeningFragment' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningFragment.php', - 'Peast\\Syntax\\Node\\JSX\\JSXSpreadAttribute' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadAttribute.php', - 'Peast\\Syntax\\Node\\JSX\\JSXSpreadChild' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadChild.php', - 'Peast\\Syntax\\Node\\JSX\\JSXText' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXText.php', - 'Peast\\Syntax\\Node\\LabeledStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/LabeledStatement.php', - 'Peast\\Syntax\\Node\\Literal' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Literal.php', - 'Peast\\Syntax\\Node\\LogicalExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/LogicalExpression.php', - 'Peast\\Syntax\\Node\\MemberExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/MemberExpression.php', - 'Peast\\Syntax\\Node\\MetaProperty' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/MetaProperty.php', - 'Peast\\Syntax\\Node\\MethodDefinition' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/MethodDefinition.php', - 'Peast\\Syntax\\Node\\ModuleDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ModuleDeclaration.php', - 'Peast\\Syntax\\Node\\ModuleSpecifier' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ModuleSpecifier.php', - 'Peast\\Syntax\\Node\\NewExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/NewExpression.php', - 'Peast\\Syntax\\Node\\Node' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Node.php', - 'Peast\\Syntax\\Node\\NullLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/NullLiteral.php', - 'Peast\\Syntax\\Node\\NumericLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/NumericLiteral.php', - 'Peast\\Syntax\\Node\\ObjectExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ObjectExpression.php', - 'Peast\\Syntax\\Node\\ObjectPattern' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ObjectPattern.php', - 'Peast\\Syntax\\Node\\ParenthesizedExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ParenthesizedExpression.php', - 'Peast\\Syntax\\Node\\Pattern' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Pattern.php', - 'Peast\\Syntax\\Node\\Program' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Program.php', - 'Peast\\Syntax\\Node\\Property' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Property.php', - 'Peast\\Syntax\\Node\\RegExpLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/RegExpLiteral.php', - 'Peast\\Syntax\\Node\\RestElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/RestElement.php', - 'Peast\\Syntax\\Node\\ReturnStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ReturnStatement.php', - 'Peast\\Syntax\\Node\\SequenceExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/SequenceExpression.php', - 'Peast\\Syntax\\Node\\SpreadElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/SpreadElement.php', - 'Peast\\Syntax\\Node\\Statement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Statement.php', - 'Peast\\Syntax\\Node\\StringLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/StringLiteral.php', - 'Peast\\Syntax\\Node\\Super' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/Super.php', - 'Peast\\Syntax\\Node\\SwitchCase' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/SwitchCase.php', - 'Peast\\Syntax\\Node\\SwitchStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/SwitchStatement.php', - 'Peast\\Syntax\\Node\\TaggedTemplateExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/TaggedTemplateExpression.php', - 'Peast\\Syntax\\Node\\TemplateElement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/TemplateElement.php', - 'Peast\\Syntax\\Node\\TemplateLiteral' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/TemplateLiteral.php', - 'Peast\\Syntax\\Node\\ThisExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ThisExpression.php', - 'Peast\\Syntax\\Node\\ThrowStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/ThrowStatement.php', - 'Peast\\Syntax\\Node\\TryStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/TryStatement.php', - 'Peast\\Syntax\\Node\\UnaryExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/UnaryExpression.php', - 'Peast\\Syntax\\Node\\UpdateExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/UpdateExpression.php', - 'Peast\\Syntax\\Node\\VariableDeclaration' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/VariableDeclaration.php', - 'Peast\\Syntax\\Node\\VariableDeclarator' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/VariableDeclarator.php', - 'Peast\\Syntax\\Node\\WhileStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/WhileStatement.php', - 'Peast\\Syntax\\Node\\WithStatement' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/WithStatement.php', - 'Peast\\Syntax\\Node\\YieldExpression' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Node/YieldExpression.php', - 'Peast\\Syntax\\Parser' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Parser.php', - 'Peast\\Syntax\\ParserAbstract' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/ParserAbstract.php', - 'Peast\\Syntax\\Position' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Position.php', - 'Peast\\Syntax\\Scanner' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Scanner.php', - 'Peast\\Syntax\\SourceLocation' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/SourceLocation.php', - 'Peast\\Syntax\\Token' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Token.php', - 'Peast\\Syntax\\Utils' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Syntax/Utils.php', - 'Peast\\Traverser' => __DIR__ . '/..' . '/mck89/peast/lib/Peast/Traverser.php', - 'Peast\\test\\PeastTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/PeastTest.php', - 'Peast\\test\\Syntax\\CommentsRegistryTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/CommentsRegistryTest.php', - 'Peast\\test\\Syntax\\ES2015\\ES2015Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2015/ES2015Test.php', - 'Peast\\test\\Syntax\\ES2016\\ES2016Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2016/ES2016Test.php', - 'Peast\\test\\Syntax\\ES2017\\ES2017Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2017/ES2017Test.php', - 'Peast\\test\\Syntax\\ES2018\\ES2018Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2018/ES2018Test.php', - 'Peast\\test\\Syntax\\ES2019\\ES2019Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2019/ES2019Test.php', - 'Peast\\test\\Syntax\\ES2020\\ES2020Test' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ES2020/ES2020Test.php', - 'Peast\\test\\Syntax\\Node\\BooleanLiteralTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/BooleanLiteralTest.php', - 'Peast\\test\\Syntax\\Node\\CommentTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/CommentTest.php', - 'Peast\\test\\Syntax\\Node\\NullLiteralTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/NullLiteralTest.php', - 'Peast\\test\\Syntax\\Node\\NumericLiteralTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/NumericLiteralTest.php', - 'Peast\\test\\Syntax\\Node\\StringLiteralTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/Node/StringLiteralTest.php', - 'Peast\\test\\Syntax\\ScannerTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/Syntax/ScannerTest.php', - 'Peast\\test\\TestBase' => __DIR__ . '/..' . '/mck89/peast/test/Peast/TestBase.php', - 'Peast\\test\\TestCaseBase' => __DIR__ . '/..' . '/mck89/peast/test/Peast/TestCaseBase.php', - 'Peast\\test\\TestParser' => __DIR__ . '/..' . '/mck89/peast/test/Peast/TestParser.php', - 'Peast\\test\\Traverser\\RendererTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/RendererTest.php', - 'Peast\\test\\Traverser\\TraverserTest' => __DIR__ . '/..' . '/mck89/peast/test/Peast/TraverserTest.php', - 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php', - 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php', - 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php', - 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php', - 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php', - 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php', - 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php', - 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php', - 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php', - 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php', - 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php', - 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php', - 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php', - 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php', - 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php', - 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php', - 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php', - 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php', - 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php', - 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php', - 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php', - 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php', - 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php', - 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php', - 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php', - 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php', - 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php', - 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php', - 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php', - 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php', - 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php', - 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php', - 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php', - 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php', - 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php', - 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php', - 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php', - 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php', - 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php', - 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php', - 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php', - 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php', - 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php', - 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php', - 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php', - 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php', - 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php', - 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php', - 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php', - 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AbstractVersionConstraint.php', - 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php', - 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AnyVersionConstraint.php', - 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/ExactVersionConstraint.php', - 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/Exception.php', - 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php', - 'PharIo\\Version\\InvalidPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php', - 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidVersionException.php', - 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php', - 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php', - 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', - 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php', - 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php', - 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php', - 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/VersionConstraint.php', - 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php', - 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php', - 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php', - 'PhpOption\\LazyOption' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/LazyOption.php', - 'PhpOption\\None' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/None.php', - 'PhpOption\\Option' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Option.php', - 'PhpOption\\Some' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Some.php', - 'Plugin_Command' => __DIR__ . '/..' . '/wp-cli/extension-command/src/Plugin_Command.php', - 'Plugin_Command_Namespace' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/Plugin_Command_Namespace.php', - 'Plugin_Language_Command' => __DIR__ . '/..' . '/wp-cli/language-command/src/Plugin_Language_Command.php', - 'Post_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Post_Command.php', - 'Post_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Post_Meta_Command.php', - 'Post_Term_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Post_Term_Command.php', - 'Post_Type_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Post_Type_Command.php', - 'Prophecy\\Argument' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument.php', - 'Prophecy\\Argument\\ArgumentsWildcard' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php', - 'Prophecy\\Argument\\Token\\AnyValueToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php', - 'Prophecy\\Argument\\Token\\AnyValuesToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php', - 'Prophecy\\Argument\\Token\\ApproximateValueToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php', - 'Prophecy\\Argument\\Token\\ArrayCountToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php', - 'Prophecy\\Argument\\Token\\ArrayEntryToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php', - 'Prophecy\\Argument\\Token\\ArrayEveryEntryToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php', - 'Prophecy\\Argument\\Token\\CallbackToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php', - 'Prophecy\\Argument\\Token\\ExactValueToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php', - 'Prophecy\\Argument\\Token\\IdenticalValueToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php', - 'Prophecy\\Argument\\Token\\LogicalAndToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php', - 'Prophecy\\Argument\\Token\\LogicalNotToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php', - 'Prophecy\\Argument\\Token\\ObjectStateToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php', - 'Prophecy\\Argument\\Token\\StringContainsToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php', - 'Prophecy\\Argument\\Token\\TokenInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php', - 'Prophecy\\Argument\\Token\\TypeToken' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php', - 'Prophecy\\Call\\Call' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Call/Call.php', - 'Prophecy\\Call\\CallCenter' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Call/CallCenter.php', - 'Prophecy\\Comparator\\ClosureComparator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php', - 'Prophecy\\Comparator\\Factory' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Comparator/Factory.php', - 'Prophecy\\Comparator\\ProphecyComparator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php', - 'Prophecy\\Doubler\\CachedDoubler' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php', - 'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php', - 'Prophecy\\Doubler\\ClassPatch\\DisableConstructorPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\HhvmExceptionPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\KeywordPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\MagicCallPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\ProphecySubjectPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\ReflectionClassNewInstancePatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php', - 'Prophecy\\Doubler\\ClassPatch\\SplFileInfoPatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php', - 'Prophecy\\Doubler\\ClassPatch\\ThrowablePatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php', - 'Prophecy\\Doubler\\ClassPatch\\TraversablePatch' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php', - 'Prophecy\\Doubler\\DoubleInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php', - 'Prophecy\\Doubler\\Doubler' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php', - 'Prophecy\\Doubler\\Generator\\ClassCodeGenerator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php', - 'Prophecy\\Doubler\\Generator\\ClassCreator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php', - 'Prophecy\\Doubler\\Generator\\ClassMirror' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php', - 'Prophecy\\Doubler\\Generator\\Node\\ArgumentNode' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php', - 'Prophecy\\Doubler\\Generator\\Node\\ClassNode' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php', - 'Prophecy\\Doubler\\Generator\\Node\\MethodNode' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php', - 'Prophecy\\Doubler\\Generator\\ReflectionInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php', - 'Prophecy\\Doubler\\Generator\\TypeHintReference' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php', - 'Prophecy\\Doubler\\LazyDouble' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php', - 'Prophecy\\Doubler\\NameGenerator' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php', - 'Prophecy\\Exception\\Call\\UnexpectedCallException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php', - 'Prophecy\\Exception\\Doubler\\ClassCreatorException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php', - 'Prophecy\\Exception\\Doubler\\ClassMirrorException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php', - 'Prophecy\\Exception\\Doubler\\ClassNotFoundException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php', - 'Prophecy\\Exception\\Doubler\\DoubleException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php', - 'Prophecy\\Exception\\Doubler\\DoublerException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php', - 'Prophecy\\Exception\\Doubler\\InterfaceNotFoundException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php', - 'Prophecy\\Exception\\Doubler\\MethodNotExtendableException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php', - 'Prophecy\\Exception\\Doubler\\MethodNotFoundException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php', - 'Prophecy\\Exception\\Doubler\\ReturnByReferenceException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php', - 'Prophecy\\Exception\\Exception' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Exception.php', - 'Prophecy\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php', - 'Prophecy\\Exception\\Prediction\\AggregateException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php', - 'Prophecy\\Exception\\Prediction\\FailedPredictionException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php', - 'Prophecy\\Exception\\Prediction\\NoCallsException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php', - 'Prophecy\\Exception\\Prediction\\PredictionException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php', - 'Prophecy\\Exception\\Prediction\\UnexpectedCallsCountException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php', - 'Prophecy\\Exception\\Prediction\\UnexpectedCallsException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php', - 'Prophecy\\Exception\\Prophecy\\MethodProphecyException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php', - 'Prophecy\\Exception\\Prophecy\\ObjectProphecyException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php', - 'Prophecy\\Exception\\Prophecy\\ProphecyException' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php', - 'Prophecy\\PhpDocumentor\\ClassAndInterfaceTagRetriever' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php', - 'Prophecy\\PhpDocumentor\\ClassTagRetriever' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php', - 'Prophecy\\PhpDocumentor\\LegacyClassTagRetriever' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php', - 'Prophecy\\PhpDocumentor\\MethodTagRetrieverInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php', - 'Prophecy\\Prediction\\CallPrediction' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php', - 'Prophecy\\Prediction\\CallTimesPrediction' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php', - 'Prophecy\\Prediction\\CallbackPrediction' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php', - 'Prophecy\\Prediction\\NoCallsPrediction' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php', - 'Prophecy\\Prediction\\PredictionInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php', - 'Prophecy\\Promise\\CallbackPromise' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php', - 'Prophecy\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php', - 'Prophecy\\Promise\\ReturnArgumentPromise' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php', - 'Prophecy\\Promise\\ReturnPromise' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php', - 'Prophecy\\Promise\\ThrowPromise' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php', - 'Prophecy\\Prophecy\\MethodProphecy' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php', - 'Prophecy\\Prophecy\\ObjectProphecy' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php', - 'Prophecy\\Prophecy\\ProphecyInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php', - 'Prophecy\\Prophecy\\ProphecySubjectInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php', - 'Prophecy\\Prophecy\\Revealer' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php', - 'Prophecy\\Prophecy\\RevealerInterface' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php', - 'Prophecy\\Prophet' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Prophet.php', - 'Prophecy\\Util\\ExportUtil' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php', - 'Prophecy\\Util\\StringUtil' => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy/Util/StringUtil.php', - 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', - 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', - 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', - 'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', - 'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', - 'Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', - 'Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', - 'Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', - 'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', - 'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', - 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php', - 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php', - 'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php', - 'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php', - 'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php', - 'Requests' => __DIR__ . '/..' . '/rmccue/requests/library/Requests.php', - 'Requests_Auth' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Auth.php', - 'Requests_Auth_Basic' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Auth/Basic.php', - 'Requests_Cookie' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Cookie.php', - 'Requests_Cookie_Jar' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Cookie/Jar.php', - 'Requests_Exception' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception.php', - 'Requests_Exception_HTTP' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP.php', - 'Requests_Exception_HTTP_304' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/304.php', - 'Requests_Exception_HTTP_305' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/305.php', - 'Requests_Exception_HTTP_306' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/306.php', - 'Requests_Exception_HTTP_400' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/400.php', - 'Requests_Exception_HTTP_401' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/401.php', - 'Requests_Exception_HTTP_402' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/402.php', - 'Requests_Exception_HTTP_403' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/403.php', - 'Requests_Exception_HTTP_404' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/404.php', - 'Requests_Exception_HTTP_405' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/405.php', - 'Requests_Exception_HTTP_406' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/406.php', - 'Requests_Exception_HTTP_407' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/407.php', - 'Requests_Exception_HTTP_408' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/408.php', - 'Requests_Exception_HTTP_409' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/409.php', - 'Requests_Exception_HTTP_410' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/410.php', - 'Requests_Exception_HTTP_411' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/411.php', - 'Requests_Exception_HTTP_412' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/412.php', - 'Requests_Exception_HTTP_413' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/413.php', - 'Requests_Exception_HTTP_414' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/414.php', - 'Requests_Exception_HTTP_415' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/415.php', - 'Requests_Exception_HTTP_416' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/416.php', - 'Requests_Exception_HTTP_417' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/417.php', - 'Requests_Exception_HTTP_418' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/418.php', - 'Requests_Exception_HTTP_428' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/428.php', - 'Requests_Exception_HTTP_429' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/429.php', - 'Requests_Exception_HTTP_431' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/431.php', - 'Requests_Exception_HTTP_500' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/500.php', - 'Requests_Exception_HTTP_501' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/501.php', - 'Requests_Exception_HTTP_502' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/502.php', - 'Requests_Exception_HTTP_503' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/503.php', - 'Requests_Exception_HTTP_504' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/504.php', - 'Requests_Exception_HTTP_505' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/505.php', - 'Requests_Exception_HTTP_511' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/511.php', - 'Requests_Exception_HTTP_Unknown' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/HTTP/Unknown.php', - 'Requests_Exception_Transport' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/Transport.php', - 'Requests_Exception_Transport_cURL' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Exception/Transport/cURL.php', - 'Requests_Hooker' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Hooker.php', - 'Requests_Hooks' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Hooks.php', - 'Requests_IDNAEncoder' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/IDNAEncoder.php', - 'Requests_IPv6' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/IPv6.php', - 'Requests_IRI' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/IRI.php', - 'Requests_Proxy' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Proxy.php', - 'Requests_Proxy_HTTP' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Proxy/HTTP.php', - 'Requests_Response' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Response.php', - 'Requests_Response_Headers' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Response/Headers.php', - 'Requests_SSL' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/SSL.php', - 'Requests_Session' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Session.php', - 'Requests_Transport' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Transport.php', - 'Requests_Transport_cURL' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Transport/cURL.php', - 'Requests_Transport_fsockopen' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Transport/fsockopen.php', - 'Requests_Utility_CaseInsensitiveDictionary' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Utility/CaseInsensitiveDictionary.php', - 'Requests_Utility_FilteredIterator' => __DIR__ . '/..' . '/rmccue/requests/library/Requests/Utility/FilteredIterator.php', - 'Rewrite_Command' => __DIR__ . '/..' . '/wp-cli/rewrite-command/src/Rewrite_Command.php', - 'Role_Command' => __DIR__ . '/..' . '/wp-cli/role-command/src/Role_Command.php', - 'Scaffold_Command' => __DIR__ . '/..' . '/wp-cli/scaffold-command/src/Scaffold_Command.php', - 'Search_Replace_Command' => __DIR__ . '/..' . '/wp-cli/search-replace-command/src/Search_Replace_Command.php', - 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', - 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', - 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php', - 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php', - 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', - 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', - 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', - 'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php', - 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', - 'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php', - 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php', - 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', - 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', - 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', - 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', - 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', - 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', - 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php', - 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', - 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', - 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', - 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', - 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', - 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', - 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', - 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', - 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', - 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php', - 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php', - 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', - 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php', - 'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php', - 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php', - 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\FileIterator\\Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', - 'SebastianBergmann\\FileIterator\\Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', - 'SebastianBergmann\\FileIterator\\Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php', - 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php', - 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php', - 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php', - 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php', - 'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php', - 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php', - 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php', - 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php', - 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php', - 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php', - 'SebastianBergmann\\Timer\\Exception' => __DIR__ . '/..' . '/phpunit/php-timer/src/Exception.php', - 'SebastianBergmann\\Timer\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-timer/src/RuntimeException.php', - 'SebastianBergmann\\Timer\\Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', - 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php', - 'Seld\\JsonLint\\DuplicateKeyException' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php', - 'Seld\\JsonLint\\JsonParser' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/JsonParser.php', - 'Seld\\JsonLint\\Lexer' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/Lexer.php', - 'Seld\\JsonLint\\ParsingException' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/ParsingException.php', - 'Seld\\JsonLint\\Undefined' => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint/Undefined.php', - 'Seld\\PharUtils\\Linter' => __DIR__ . '/..' . '/seld/phar-utils/src/Linter.php', - 'Seld\\PharUtils\\Timestamps' => __DIR__ . '/..' . '/seld/phar-utils/src/Timestamps.php', - 'Server_Command' => __DIR__ . '/..' . '/wp-cli/server-command/src/Server_Command.php', - 'Shell_Command' => __DIR__ . '/..' . '/wp-cli/shell-command/src/Shell_Command.php', - 'Sidebar_Command' => __DIR__ . '/..' . '/wp-cli/widget-command/src/Sidebar_Command.php', - 'Site_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Site_Command.php', - 'Site_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Site_Meta_Command.php', - 'Site_Option_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Site_Option_Command.php', - 'Site_Switch_Language_Command' => __DIR__ . '/..' . '/wp-cli/language-command/src/Site_Switch_Language_Command.php', - 'Super_Admin_Command' => __DIR__ . '/..' . '/wp-cli/super-admin-command/src/Super_Admin_Command.php', - 'Symfony\\Component\\BrowserKit\\AbstractBrowser' => __DIR__ . '/..' . '/symfony/browser-kit/AbstractBrowser.php', - 'Symfony\\Component\\BrowserKit\\Client' => __DIR__ . '/..' . '/symfony/browser-kit/Client.php', - 'Symfony\\Component\\BrowserKit\\Cookie' => __DIR__ . '/..' . '/symfony/browser-kit/Cookie.php', - 'Symfony\\Component\\BrowserKit\\CookieJar' => __DIR__ . '/..' . '/symfony/browser-kit/CookieJar.php', - 'Symfony\\Component\\BrowserKit\\Exception\\BadMethodCallException' => __DIR__ . '/..' . '/symfony/browser-kit/Exception/BadMethodCallException.php', - 'Symfony\\Component\\BrowserKit\\History' => __DIR__ . '/..' . '/symfony/browser-kit/History.php', - 'Symfony\\Component\\BrowserKit\\HttpBrowser' => __DIR__ . '/..' . '/symfony/browser-kit/HttpBrowser.php', - 'Symfony\\Component\\BrowserKit\\Request' => __DIR__ . '/..' . '/symfony/browser-kit/Request.php', - 'Symfony\\Component\\BrowserKit\\Response' => __DIR__ . '/..' . '/symfony/browser-kit/Response.php', - 'Symfony\\Component\\BrowserKit\\Test\\Constraint\\BrowserCookieValueSame' => __DIR__ . '/..' . '/symfony/browser-kit/Test/Constraint/BrowserCookieValueSame.php', - 'Symfony\\Component\\BrowserKit\\Test\\Constraint\\BrowserHasCookie' => __DIR__ . '/..' . '/symfony/browser-kit/Test/Constraint/BrowserHasCookie.php', - 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', - 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php', - 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php', - 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php', - 'Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php', - 'Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php', - 'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php', - 'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php', - 'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php', - 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', - 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php', - 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php', - 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php', - 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php', - 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleCommandEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleErrorEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleTerminateEvent.php', - 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php', - 'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php', - 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php', - 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php', - 'Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php', - 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php', - 'Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php', - 'Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php', - 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php', - 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php', - 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php', - 'Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php', - 'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php', - 'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php', - 'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php', - 'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php', - 'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php', - 'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php', - 'Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php', - 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php', - 'Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php', - 'Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php', - 'Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php', - 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php', - 'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php', - 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php', - 'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php', - 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php', - 'Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php', - 'Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php', - 'Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php', - 'Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php', - 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php', - 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php', - 'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php', - 'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php', - 'Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php', - 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php', - 'Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php', - 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => __DIR__ . '/..' . '/symfony/console/Tester/ApplicationTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandTester.php', - 'Symfony\\Component\\Console\\Tester\\TesterTrait' => __DIR__ . '/..' . '/symfony/console/Tester/TesterTrait.php', - 'Symfony\\Component\\CssSelector\\CssSelectorConverter' => __DIR__ . '/..' . '/symfony/css-selector/CssSelectorConverter.php', - 'Symfony\\Component\\CssSelector\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ExceptionInterface.php', - 'Symfony\\Component\\CssSelector\\Exception\\ExpressionErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ExpressionErrorException.php', - 'Symfony\\Component\\CssSelector\\Exception\\InternalErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/InternalErrorException.php', - 'Symfony\\Component\\CssSelector\\Exception\\ParseException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ParseException.php', - 'Symfony\\Component\\CssSelector\\Exception\\SyntaxErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/SyntaxErrorException.php', - 'Symfony\\Component\\CssSelector\\Node\\AbstractNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/AbstractNode.php', - 'Symfony\\Component\\CssSelector\\Node\\AttributeNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/AttributeNode.php', - 'Symfony\\Component\\CssSelector\\Node\\ClassNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/ClassNode.php', - 'Symfony\\Component\\CssSelector\\Node\\CombinedSelectorNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/CombinedSelectorNode.php', - 'Symfony\\Component\\CssSelector\\Node\\ElementNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/ElementNode.php', - 'Symfony\\Component\\CssSelector\\Node\\FunctionNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/FunctionNode.php', - 'Symfony\\Component\\CssSelector\\Node\\HashNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/HashNode.php', - 'Symfony\\Component\\CssSelector\\Node\\NegationNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/NegationNode.php', - 'Symfony\\Component\\CssSelector\\Node\\NodeInterface' => __DIR__ . '/..' . '/symfony/css-selector/Node/NodeInterface.php', - 'Symfony\\Component\\CssSelector\\Node\\PseudoNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/PseudoNode.php', - 'Symfony\\Component\\CssSelector\\Node\\SelectorNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/SelectorNode.php', - 'Symfony\\Component\\CssSelector\\Node\\Specificity' => __DIR__ . '/..' . '/symfony/css-selector/Node/Specificity.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\CommentHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/CommentHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/HandlerInterface.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HashHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/HashHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\IdentifierHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/IdentifierHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\NumberHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/NumberHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\StringHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/StringHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\WhitespaceHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/WhitespaceHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Parser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Parser.php', - 'Symfony\\Component\\CssSelector\\Parser\\ParserInterface' => __DIR__ . '/..' . '/symfony/css-selector/Parser/ParserInterface.php', - 'Symfony\\Component\\CssSelector\\Parser\\Reader' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Reader.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ClassParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/ClassParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ElementParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/ElementParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\EmptyStringParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\HashParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/HashParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Token' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Token.php', - 'Symfony\\Component\\CssSelector\\Parser\\TokenStream' => __DIR__ . '/..' . '/symfony/css-selector/Parser/TokenStream.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/Tokenizer.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerEscaping' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerPatterns' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AbstractExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/AbstractExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AttributeMatchingExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\CombinationExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/CombinationExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\ExtensionInterface' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/ExtensionInterface.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\FunctionExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/FunctionExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\HtmlExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/HtmlExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\NodeExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/NodeExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\PseudoClassExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/PseudoClassExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Translator' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Translator.php', - 'Symfony\\Component\\CssSelector\\XPath\\TranslatorInterface' => __DIR__ . '/..' . '/symfony/css-selector/XPath/TranslatorInterface.php', - 'Symfony\\Component\\CssSelector\\XPath\\XPathExpr' => __DIR__ . '/..' . '/symfony/css-selector/XPath/XPathExpr.php', - 'Symfony\\Component\\DomCrawler\\AbstractUriElement' => __DIR__ . '/..' . '/symfony/dom-crawler/AbstractUriElement.php', - 'Symfony\\Component\\DomCrawler\\Crawler' => __DIR__ . '/..' . '/symfony/dom-crawler/Crawler.php', - 'Symfony\\Component\\DomCrawler\\Field\\ChoiceFormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/ChoiceFormField.php', - 'Symfony\\Component\\DomCrawler\\Field\\FileFormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/FileFormField.php', - 'Symfony\\Component\\DomCrawler\\Field\\FormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/FormField.php', - 'Symfony\\Component\\DomCrawler\\Field\\InputFormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/InputFormField.php', - 'Symfony\\Component\\DomCrawler\\Field\\TextareaFormField' => __DIR__ . '/..' . '/symfony/dom-crawler/Field/TextareaFormField.php', - 'Symfony\\Component\\DomCrawler\\Form' => __DIR__ . '/..' . '/symfony/dom-crawler/Form.php', - 'Symfony\\Component\\DomCrawler\\FormFieldRegistry' => __DIR__ . '/..' . '/symfony/dom-crawler/FormFieldRegistry.php', - 'Symfony\\Component\\DomCrawler\\Image' => __DIR__ . '/..' . '/symfony/dom-crawler/Image.php', - 'Symfony\\Component\\DomCrawler\\Link' => __DIR__ . '/..' . '/symfony/dom-crawler/Link.php', - 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorAttributeValueSame' => __DIR__ . '/..' . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorAttributeValueSame.php', - 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorExists' => __DIR__ . '/..' . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorExists.php', - 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorTextContains' => __DIR__ . '/..' . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorTextContains.php', - 'Symfony\\Component\\DomCrawler\\Test\\Constraint\\CrawlerSelectorTextSame' => __DIR__ . '/..' . '/symfony/dom-crawler/Test/Constraint/CrawlerSelectorTextSame.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/WrappedListener.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\ExtractingEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher/Event.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventSubscriberInterface.php', - 'Symfony\\Component\\EventDispatcher\\GenericEvent' => __DIR__ . '/..' . '/symfony/event-dispatcher/GenericEvent.php', - 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\LegacyEventDispatcherProxy' => __DIR__ . '/..' . '/symfony/event-dispatcher/LegacyEventDispatcherProxy.php', - 'Symfony\\Component\\EventDispatcher\\LegacyEventProxy' => __DIR__ . '/..' . '/symfony/event-dispatcher/LegacyEventProxy.php', - 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php', - 'Symfony\\Component\\Filesystem\\LockHandler' => __DIR__ . '/..' . '/symfony/filesystem/LockHandler.php', - 'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php', - 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php', - 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php', - 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php', - 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php', - 'Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php', - 'Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php', - 'Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php', - 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php', - 'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php', - 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php', - 'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php', - 'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php', - 'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php', - 'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php', - 'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php', - 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php', - 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php', - 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php', - 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php', - 'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php', - 'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php', - 'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/AbstractOperation.php', - 'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/MergeOperation.php', - 'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => __DIR__ . '/..' . '/symfony/translation/Catalogue/OperationInterface.php', - 'Symfony\\Component\\Translation\\Catalogue\\TargetOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/TargetOperation.php', - 'Symfony\\Component\\Translation\\Command\\XliffLintCommand' => __DIR__ . '/..' . '/symfony/translation/Command/XliffLintCommand.php', - 'Symfony\\Component\\Translation\\DataCollectorTranslator' => __DIR__ . '/..' . '/symfony/translation/DataCollectorTranslator.php', - 'Symfony\\Component\\Translation\\DataCollector\\TranslationDataCollector' => __DIR__ . '/..' . '/symfony/translation/DataCollector/TranslationDataCollector.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationDumperPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslationDumperPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationExtractorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslationExtractorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslatorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPathsPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslatorPathsPass.php', - 'Symfony\\Component\\Translation\\Dumper\\CsvFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/CsvFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\DumperInterface' => __DIR__ . '/..' . '/symfony/translation/Dumper/DumperInterface.php', - 'Symfony\\Component\\Translation\\Dumper\\FileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/FileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\IcuResFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/IcuResFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\IniFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/IniFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\JsonFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/JsonFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\MoFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/MoFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\PhpFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/PhpFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\PoFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/PoFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\QtFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/QtFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\XliffFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/XliffFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\YamlFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/YamlFileDumper.php', - 'Symfony\\Component\\Translation\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/translation/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Translation\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/translation/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Translation\\Exception\\InvalidResourceException' => __DIR__ . '/..' . '/symfony/translation/Exception/InvalidResourceException.php', - 'Symfony\\Component\\Translation\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/translation/Exception/LogicException.php', - 'Symfony\\Component\\Translation\\Exception\\NotFoundResourceException' => __DIR__ . '/..' . '/symfony/translation/Exception/NotFoundResourceException.php', - 'Symfony\\Component\\Translation\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/translation/Exception/RuntimeException.php', - 'Symfony\\Component\\Translation\\Extractor\\AbstractFileExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/AbstractFileExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\ChainExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/ChainExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\ExtractorInterface' => __DIR__ . '/..' . '/symfony/translation/Extractor/ExtractorInterface.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpStringTokenParser' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpStringTokenParser.php', - 'Symfony\\Component\\Translation\\Formatter\\IntlFormatter' => __DIR__ . '/..' . '/symfony/translation/Formatter/IntlFormatter.php', - 'Symfony\\Component\\Translation\\Formatter\\IntlFormatterInterface' => __DIR__ . '/..' . '/symfony/translation/Formatter/IntlFormatterInterface.php', - 'Symfony\\Component\\Translation\\Formatter\\MessageFormatter' => __DIR__ . '/..' . '/symfony/translation/Formatter/MessageFormatter.php', - 'Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface' => __DIR__ . '/..' . '/symfony/translation/Formatter/MessageFormatterInterface.php', - 'Symfony\\Component\\Translation\\IdentityTranslator' => __DIR__ . '/..' . '/symfony/translation/IdentityTranslator.php', - 'Symfony\\Component\\Translation\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/ArrayLoader.php', - 'Symfony\\Component\\Translation\\Loader\\CsvFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/CsvFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\FileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/FileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IcuDatFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IcuDatFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IcuResFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IcuResFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IniFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IniFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\JsonFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/JsonFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/symfony/translation/Loader/LoaderInterface.php', - 'Symfony\\Component\\Translation\\Loader\\MoFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/MoFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\PhpFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/PhpFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\PoFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/PoFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\QtFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/QtFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\XliffFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/XliffFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\YamlFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/YamlFileLoader.php', - 'Symfony\\Component\\Translation\\LoggingTranslator' => __DIR__ . '/..' . '/symfony/translation/LoggingTranslator.php', - 'Symfony\\Component\\Translation\\MessageCatalogue' => __DIR__ . '/..' . '/symfony/translation/MessageCatalogue.php', - 'Symfony\\Component\\Translation\\MessageCatalogueInterface' => __DIR__ . '/..' . '/symfony/translation/MessageCatalogueInterface.php', - 'Symfony\\Component\\Translation\\MetadataAwareInterface' => __DIR__ . '/..' . '/symfony/translation/MetadataAwareInterface.php', - 'Symfony\\Component\\Translation\\Reader\\TranslationReader' => __DIR__ . '/..' . '/symfony/translation/Reader/TranslationReader.php', - 'Symfony\\Component\\Translation\\Reader\\TranslationReaderInterface' => __DIR__ . '/..' . '/symfony/translation/Reader/TranslationReaderInterface.php', - 'Symfony\\Component\\Translation\\Translator' => __DIR__ . '/..' . '/symfony/translation/Translator.php', - 'Symfony\\Component\\Translation\\TranslatorBagInterface' => __DIR__ . '/..' . '/symfony/translation/TranslatorBagInterface.php', - 'Symfony\\Component\\Translation\\Util\\ArrayConverter' => __DIR__ . '/..' . '/symfony/translation/Util/ArrayConverter.php', - 'Symfony\\Component\\Translation\\Util\\XliffUtils' => __DIR__ . '/..' . '/symfony/translation/Util/XliffUtils.php', - 'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => __DIR__ . '/..' . '/symfony/translation/Writer/TranslationWriter.php', - 'Symfony\\Component\\Translation\\Writer\\TranslationWriterInterface' => __DIR__ . '/..' . '/symfony/translation/Writer/TranslationWriterInterface.php', - 'Symfony\\Component\\Yaml\\Command\\LintCommand' => __DIR__ . '/..' . '/symfony/yaml/Command/LintCommand.php', - 'Symfony\\Component\\Yaml\\Dumper' => __DIR__ . '/..' . '/symfony/yaml/Dumper.php', - 'Symfony\\Component\\Yaml\\Escaper' => __DIR__ . '/..' . '/symfony/yaml/Escaper.php', - 'Symfony\\Component\\Yaml\\Exception\\DumpException' => __DIR__ . '/..' . '/symfony/yaml/Exception/DumpException.php', - 'Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/yaml/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Yaml\\Exception\\ParseException' => __DIR__ . '/..' . '/symfony/yaml/Exception/ParseException.php', - 'Symfony\\Component\\Yaml\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/yaml/Exception/RuntimeException.php', - 'Symfony\\Component\\Yaml\\Inline' => __DIR__ . '/..' . '/symfony/yaml/Inline.php', - 'Symfony\\Component\\Yaml\\Parser' => __DIR__ . '/..' . '/symfony/yaml/Parser.php', - 'Symfony\\Component\\Yaml\\Tag\\TaggedValue' => __DIR__ . '/..' . '/symfony/yaml/Tag/TaggedValue.php', - 'Symfony\\Component\\Yaml\\Unescaper' => __DIR__ . '/..' . '/symfony/yaml/Unescaper.php', - 'Symfony\\Component\\Yaml\\Yaml' => __DIR__ . '/..' . '/symfony/yaml/Yaml.php', - 'Symfony\\Contracts\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/Event.php', - 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', - 'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php', - 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php', - 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php', - 'Symfony\\Contracts\\Service\\Test\\ServiceLocatorTest' => __DIR__ . '/..' . '/symfony/service-contracts/Test/ServiceLocatorTest.php', - 'Symfony\\Contracts\\Translation\\LocaleAwareInterface' => __DIR__ . '/..' . '/symfony/translation-contracts/LocaleAwareInterface.php', - 'Symfony\\Contracts\\Translation\\Test\\TranslatorTest' => __DIR__ . '/..' . '/symfony/translation-contracts/Test/TranslatorTest.php', - 'Symfony\\Contracts\\Translation\\TranslatorInterface' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorInterface.php', - 'Symfony\\Contracts\\Translation\\TranslatorTrait' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorTrait.php', - 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', - 'Symfony\\Polyfill\\Php73\\Php73' => __DIR__ . '/..' . '/symfony/polyfill-php73/Php73.php', - 'Taxonomy_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Taxonomy_Command.php', - 'Term_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Term_Command.php', - 'Term_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/Term_Meta_Command.php', - 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', - 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php', - 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php', - 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php', - 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php', - 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php', - 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php', - 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php', - 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php', - 'Theme_Command' => __DIR__ . '/..' . '/wp-cli/extension-command/src/Theme_Command.php', - 'Theme_Language_Command' => __DIR__ . '/..' . '/wp-cli/language-command/src/Theme_Language_Command.php', - 'Theme_Mod_Command' => __DIR__ . '/..' . '/wp-cli/extension-command/src/Theme_Mod_Command.php', - 'Transient_Command' => __DIR__ . '/..' . '/wp-cli/cache-command/src/Transient_Command.php', - 'User_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/User_Command.php', - 'User_Meta_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/User_Meta_Command.php', - 'User_Session_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/User_Session_Command.php', - 'User_Term_Command' => __DIR__ . '/..' . '/wp-cli/entity-command/src/User_Term_Command.php', 'WPGraphQL\\JWT_Authentication\\Auth' => __DIR__ . '/../..' . '/src/Auth.php', 'WPGraphQL\\JWT_Authentication\\Login' => __DIR__ . '/../..' . '/src/Login.php', 'WPGraphQL\\JWT_Authentication\\ManageTokens' => __DIR__ . '/../..' . '/src/ManageTokens.php', 'WPGraphQL\\JWT_Authentication\\RefreshToken' => __DIR__ . '/../..' . '/src/RefreshToken.php', - 'WP_CLI' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/class-wp-cli.php', - 'WP_CLI\\Autoloader' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Autoloader.php', - 'WP_CLI\\Bootstrap\\AutoloaderStep' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/AutoloaderStep.php', - 'WP_CLI\\Bootstrap\\BootstrapState' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapState.php', - 'WP_CLI\\Bootstrap\\BootstrapStep' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapStep.php', - 'WP_CLI\\Bootstrap\\ConfigureRunner' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/ConfigureRunner.php', - 'WP_CLI\\Bootstrap\\DeclareAbstractBaseCommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareAbstractBaseCommand.php', - 'WP_CLI\\Bootstrap\\DeclareMainClass' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareMainClass.php', - 'WP_CLI\\Bootstrap\\DefineProtectedCommands' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DefineProtectedCommands.php', - 'WP_CLI\\Bootstrap\\IncludeFallbackAutoloader' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFallbackAutoloader.php', - 'WP_CLI\\Bootstrap\\IncludeFrameworkAutoloader' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFrameworkAutoloader.php', - 'WP_CLI\\Bootstrap\\IncludePackageAutoloader' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludePackageAutoloader.php', - 'WP_CLI\\Bootstrap\\InitializeColorization' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeColorization.php', - 'WP_CLI\\Bootstrap\\InitializeLogger' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeLogger.php', - 'WP_CLI\\Bootstrap\\LaunchRunner' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php', - 'WP_CLI\\Bootstrap\\LoadDispatcher' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadDispatcher.php', - 'WP_CLI\\Bootstrap\\LoadRequiredCommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadRequiredCommand.php', - 'WP_CLI\\Bootstrap\\LoadUtilityFunctions' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadUtilityFunctions.php', - 'WP_CLI\\Bootstrap\\RegisterDeferredCommands' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterDeferredCommands.php', - 'WP_CLI\\Bootstrap\\RegisterFrameworkCommands' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterFrameworkCommands.php', - 'WP_CLI\\Bootstrap\\RunnerInstance' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RunnerInstance.php', - 'WP_CLI\\CommandWithDBObject' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/CommandWithDBObject.php', - 'WP_CLI\\CommandWithMeta' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/CommandWithMeta.php', - 'WP_CLI\\CommandWithTerms' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/CommandWithTerms.php', - 'WP_CLI\\CommandWithTranslation' => __DIR__ . '/..' . '/wp-cli/language-command/src/WP_CLI/CommandWithTranslation.php', - 'WP_CLI\\CommandWithUpgrade' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/CommandWithUpgrade.php', - 'WP_CLI\\Compat\\FeedbackMethodTrait' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Compat/FeedbackMethodTrait.php', - 'WP_CLI\\Compat\\Min_PHP_5_4\\FeedbackMethodTrait' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_4/FeedbackMethodTrait.php', - 'WP_CLI\\Compat\\Min_PHP_5_6\\FeedbackMethodTrait' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_6/FeedbackMethodTrait.php', - 'WP_CLI\\Completions' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Completions.php', - 'WP_CLI\\ComposerIO' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/ComposerIO.php', - 'WP_CLI\\Configurator' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Configurator.php', - 'WP_CLI\\Core\\CoreUpgrader' => __DIR__ . '/..' . '/wp-cli/core-command/src/WP_CLI/Core/CoreUpgrader.php', - 'WP_CLI\\Core\\NonDestructiveCoreUpgrader' => __DIR__ . '/..' . '/wp-cli/core-command/src/WP_CLI/Core/NonDestructiveCoreUpgrader.php', - 'WP_CLI\\DestructivePluginUpgrader' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/DestructivePluginUpgrader.php', - 'WP_CLI\\DestructiveThemeUpgrader' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/DestructiveThemeUpgrader.php', - 'WP_CLI\\Dispatcher\\CommandAddition' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandAddition.php', - 'WP_CLI\\Dispatcher\\CommandFactory' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php', - 'WP_CLI\\Dispatcher\\CommandNamespace' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandNamespace.php', - 'WP_CLI\\Dispatcher\\CompositeCommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CompositeCommand.php', - 'WP_CLI\\Dispatcher\\RootCommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/RootCommand.php', - 'WP_CLI\\Dispatcher\\Subcommand' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.php', - 'WP_CLI\\DocParser' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/DocParser.php', - 'WP_CLI\\Embeds\\Cache_Command' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Cache_Command.php', - 'WP_CLI\\Embeds\\Embeds_Namespace' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Embeds_Namespace.php', - 'WP_CLI\\Embeds\\Fetch_Command' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Fetch_Command.php', - 'WP_CLI\\Embeds\\Handler_Command' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Handler_Command.php', - 'WP_CLI\\Embeds\\Provider_Command' => __DIR__ . '/..' . '/wp-cli/embed-command/src/Provider_Command.php', - 'WP_CLI\\Embeds\\oEmbed' => __DIR__ . '/..' . '/wp-cli/embed-command/src/oEmbed.php', - 'WP_CLI\\Entity\\NonExistentKeyException' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Entity/NonExistentKeyException.php', - 'WP_CLI\\Entity\\RecursiveDataStructureTraverser' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Entity/RecursiveDataStructureTraverser.php', - 'WP_CLI\\Entity\\Utils' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Entity/Utils.php', - 'WP_CLI\\ExitException' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/ExitException.php', - 'WP_CLI\\Extractor' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Extractor.php', - 'WP_CLI\\Fetchers\\Base' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Fetchers/Base.php', - 'WP_CLI\\Fetchers\\Comment' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Comment.php', - 'WP_CLI\\Fetchers\\Plugin' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/Fetchers/Plugin.php', - 'WP_CLI\\Fetchers\\Post' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Post.php', - 'WP_CLI\\Fetchers\\Site' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Fetchers/Site.php', - 'WP_CLI\\Fetchers\\Theme' => __DIR__ . '/..' . '/wp-cli/extension-command/src/WP_CLI/Fetchers/Theme.php', - 'WP_CLI\\Fetchers\\UnfilteredPlugin' => __DIR__ . '/..' . '/wp-cli/checksum-command/src/WP_CLI/Fetchers/UnfilteredPlugin.php', - 'WP_CLI\\Fetchers\\User' => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI/Fetchers/User.php', - 'WP_CLI\\FileCache' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/FileCache.php', - 'WP_CLI\\Formatter' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Formatter.php', - 'WP_CLI\\I18n\\CommandNamespace' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/CommandNamespace.php', - 'WP_CLI\\I18n\\IterableCodeExtractor' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/IterableCodeExtractor.php', - 'WP_CLI\\I18n\\JedGenerator' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/JedGenerator.php', - 'WP_CLI\\I18n\\JsCodeExtractor' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/JsCodeExtractor.php', - 'WP_CLI\\I18n\\JsFunctionsScanner' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/JsFunctionsScanner.php', - 'WP_CLI\\I18n\\MakeJsonCommand' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/MakeJsonCommand.php', - 'WP_CLI\\I18n\\MakePotCommand' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/MakePotCommand.php', - 'WP_CLI\\I18n\\MapCodeExtractor' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/MapCodeExtractor.php', - 'WP_CLI\\I18n\\PhpCodeExtractor' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/PhpCodeExtractor.php', - 'WP_CLI\\I18n\\PhpFunctionsScanner' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/PhpFunctionsScanner.php', - 'WP_CLI\\I18n\\PotGenerator' => __DIR__ . '/..' . '/wp-cli/i18n-command/src/PotGenerator.php', - 'WP_CLI\\Inflector' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Inflector.php', - 'WP_CLI\\Iterators\\CSV' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/CSV.php', - 'WP_CLI\\Iterators\\Exception' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Exception.php', - 'WP_CLI\\Iterators\\Query' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Query.php', - 'WP_CLI\\Iterators\\Table' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Table.php', - 'WP_CLI\\Iterators\\Transform' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Iterators/Transform.php', - 'WP_CLI\\JsonManipulator' => __DIR__ . '/..' . '/wp-cli/package-command/src/WP_CLI/JsonManipulator.php', - 'WP_CLI\\LanguagePackUpgrader' => __DIR__ . '/..' . '/wp-cli/language-command/src/WP_CLI/LanguagePackUpgrader.php', - 'WP_CLI\\Loggers\\Base' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Base.php', - 'WP_CLI\\Loggers\\Execution' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Execution.php', - 'WP_CLI\\Loggers\\Quiet' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Quiet.php', - 'WP_CLI\\Loggers\\Regular' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Loggers/Regular.php', - 'WP_CLI\\MaintenanceMode\\MaintenanceModeCommand' => __DIR__ . '/..' . '/wp-cli/maintenance-mode-command/src/MaintenanceModeCommand.php', - 'WP_CLI\\NoOp' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/NoOp.php', - 'WP_CLI\\PackageManagerEventSubscriber' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/PackageManagerEventSubscriber.php', - 'WP_CLI\\Process' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Process.php', - 'WP_CLI\\ProcessRun' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/ProcessRun.php', - 'WP_CLI\\Runner' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/Runner.php', - 'WP_CLI\\SearchReplacer' => __DIR__ . '/..' . '/wp-cli/search-replace-command/src/WP_CLI/SearchReplacer.php', - 'WP_CLI\\Shell\\REPL' => __DIR__ . '/..' . '/wp-cli/shell-command/src/WP_CLI/Shell/REPL.php', - 'WP_CLI\\SynopsisParser' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/SynopsisParser.php', - 'WP_CLI\\SynopsisValidator' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/SynopsisValidator.php', - 'WP_CLI\\UpgraderSkin' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/UpgraderSkin.php', - 'WP_CLI\\WpHttpCacheManager' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/WP_CLI/WpHttpCacheManager.php', - 'WP_CLI_Command' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/class-wp-cli-command.php', - 'WP_Export_Base_Writer' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Base_Writer.php', - 'WP_Export_Exception' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Exception.php', - 'WP_Export_File_Writer' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_File_Writer.php', - 'WP_Export_Oxymel' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Oxymel.php', - 'WP_Export_Query' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Query.php', - 'WP_Export_Returner' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Returner.php', - 'WP_Export_Split_Files_Writer' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Split_Files_Writer.php', - 'WP_Export_Term_Exception' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_Term_Exception.php', - 'WP_Export_WXR_Formatter' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_WXR_Formatter.php', - 'WP_Export_XML_Over_HTTP' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Export_XML_Over_HTTP.php', - 'WP_Iterator_Exception' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Iterator_Exception.php', - 'WP_Map_Iterator' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Map_Iterator.php', - 'WP_Post_IDs_Iterator' => __DIR__ . '/..' . '/wp-cli/export-command/src/WP_Post_IDs_Iterator.php', - 'Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php', - 'Widget_Command' => __DIR__ . '/..' . '/wp-cli/widget-command/src/Widget_Command.php', - 'cli\\Arguments' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Arguments.php', - 'cli\\Colors' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Colors.php', - 'cli\\Memoize' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Memoize.php', - 'cli\\Notify' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Notify.php', - 'cli\\Progress' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Progress.php', - 'cli\\Shell' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Shell.php', - 'cli\\Streams' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Streams.php', - 'cli\\Table' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Table.php', - 'cli\\Tree' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/Tree.php', - 'cli\\arguments\\Argument' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/arguments/Argument.php', - 'cli\\arguments\\HelpScreen' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/arguments/HelpScreen.php', - 'cli\\arguments\\InvalidArguments' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/arguments/InvalidArguments.php', - 'cli\\arguments\\Lexer' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/arguments/Lexer.php', - 'cli\\notify\\Dots' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/notify/Dots.php', - 'cli\\notify\\Spinner' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/notify/Spinner.php', - 'cli\\progress\\Bar' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/progress/Bar.php', - 'cli\\table\\Ascii' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/table/Ascii.php', - 'cli\\table\\Renderer' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/table/Renderer.php', - 'cli\\table\\Tabular' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/table/Tabular.php', - 'cli\\tree\\Ascii' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/tree/Ascii.php', - 'cli\\tree\\Markdown' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/tree/Markdown.php', - 'cli\\tree\\Renderer' => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/tree/Renderer.php', - 'cweagans\\Composer\\PatchEvent' => __DIR__ . '/..' . '/cweagans/composer-patches/src/PatchEvent.php', - 'cweagans\\Composer\\PatchEvents' => __DIR__ . '/..' . '/cweagans/composer-patches/src/PatchEvents.php', - 'cweagans\\Composer\\Patches' => __DIR__ . '/..' . '/cweagans/composer-patches/src/Patches.php', - 'phpDocumentor\\Reflection\\DocBlock' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock.php', - 'phpDocumentor\\Reflection\\DocBlockFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlockFactory.php', - 'phpDocumentor\\Reflection\\DocBlockFactoryInterface' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php', - 'phpDocumentor\\Reflection\\DocBlock\\Description' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Description.php', - 'phpDocumentor\\Reflection\\DocBlock\\DescriptionFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php', - 'phpDocumentor\\Reflection\\DocBlock\\ExampleFinder' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php', - 'phpDocumentor\\Reflection\\DocBlock\\Serializer' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php', - 'phpDocumentor\\Reflection\\DocBlock\\StandardTagFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php', - 'phpDocumentor\\Reflection\\DocBlock\\TagFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Author' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\BaseTag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Covers' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Deprecated' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Example' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Factory\\StaticMethod' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\AlignFormatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\PassthroughFormatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Generic' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\InvalidTag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Link' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Method' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Param' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Property' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyRead' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyWrite' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Fqsen' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Reference' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Url' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Return_' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\See' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Since' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Source' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\TagWithType' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Throws' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Uses' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Var_' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php', - 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Version' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php', - 'phpDocumentor\\Reflection\\Element' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Element.php', - 'phpDocumentor\\Reflection\\File' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/File.php', - 'phpDocumentor\\Reflection\\Fqsen' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Fqsen.php', - 'phpDocumentor\\Reflection\\FqsenResolver' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/FqsenResolver.php', - 'phpDocumentor\\Reflection\\Location' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Location.php', - 'phpDocumentor\\Reflection\\Project' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Project.php', - 'phpDocumentor\\Reflection\\ProjectFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/ProjectFactory.php', - 'phpDocumentor\\Reflection\\Type' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Type.php', - 'phpDocumentor\\Reflection\\TypeResolver' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/TypeResolver.php', - 'phpDocumentor\\Reflection\\Types\\AbstractList' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/AbstractList.php', - 'phpDocumentor\\Reflection\\Types\\Array_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Array_.php', - 'phpDocumentor\\Reflection\\Types\\Boolean' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Boolean.php', - 'phpDocumentor\\Reflection\\Types\\Callable_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Callable_.php', - 'phpDocumentor\\Reflection\\Types\\ClassString' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/ClassString.php', - 'phpDocumentor\\Reflection\\Types\\Collection' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Collection.php', - 'phpDocumentor\\Reflection\\Types\\Compound' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Compound.php', - 'phpDocumentor\\Reflection\\Types\\Context' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Context.php', - 'phpDocumentor\\Reflection\\Types\\ContextFactory' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/ContextFactory.php', - 'phpDocumentor\\Reflection\\Types\\Float_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Float_.php', - 'phpDocumentor\\Reflection\\Types\\Integer' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Integer.php', - 'phpDocumentor\\Reflection\\Types\\Iterable_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Iterable_.php', - 'phpDocumentor\\Reflection\\Types\\Mixed_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Mixed_.php', - 'phpDocumentor\\Reflection\\Types\\Null_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Null_.php', - 'phpDocumentor\\Reflection\\Types\\Nullable' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Nullable.php', - 'phpDocumentor\\Reflection\\Types\\Object_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Object_.php', - 'phpDocumentor\\Reflection\\Types\\Parent_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Parent_.php', - 'phpDocumentor\\Reflection\\Types\\Resource_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Resource_.php', - 'phpDocumentor\\Reflection\\Types\\Scalar' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Scalar.php', - 'phpDocumentor\\Reflection\\Types\\Self_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Self_.php', - 'phpDocumentor\\Reflection\\Types\\Static_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Static_.php', - 'phpDocumentor\\Reflection\\Types\\String_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/String_.php', - 'phpDocumentor\\Reflection\\Types\\This' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/This.php', - 'phpDocumentor\\Reflection\\Types\\Void_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Void_.php', - 'tad\\WPBrowser\\Adapters\\WP' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Adapters/WP.php', - 'tad\\WPBrowser\\Connector\\WordPress' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Connector/WordPress.php', - 'tad\\WPBrowser\\Documentation\\TableGenerator' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Documentation/TableGenerator.php', - 'tad\\WPBrowser\\Environment\\Constants' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/Constants.php', - 'tad\\WPBrowser\\Environment\\Executor' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/Executor.php', - 'tad\\WPBrowser\\Environment\\System' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Environment/System.php', - 'tad\\WPBrowser\\Extension\\Copier' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Extension/Copier.php', - 'tad\\WPBrowser\\Extension\\Symlinker' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Extension/Symlinker.php', - 'tad\\WPBrowser\\Filesystem\\FileReplacers\\AbstractFileReplacer' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/AbstractFileReplacer.php', - 'tad\\WPBrowser\\Filesystem\\FileReplacers\\HtaccesReplacer' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/HtaccesReplacer.php', - 'tad\\WPBrowser\\Filesystem\\FileReplacers\\WPConfigReplacer' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/FileReplacers/WPConfigReplacer.php', - 'tad\\WPBrowser\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/Filesystem.php', - 'tad\\WPBrowser\\Filesystem\\Utils' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Filesystem/Utils.php', - 'tad\\WPBrowser\\Generators\\Blog' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Blog.php', - 'tad\\WPBrowser\\Generators\\Comment' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Comment.php', - 'tad\\WPBrowser\\Generators\\Date' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Date.php', - 'tad\\WPBrowser\\Generators\\Links' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Links.php', - 'tad\\WPBrowser\\Generators\\Post' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Post.php', - 'tad\\WPBrowser\\Generators\\RedirectingWPConfig' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/RedirectingWPConfig.php', - 'tad\\WPBrowser\\Generators\\SubdomainHtaccess' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/SubdomainHtaccess.php', - 'tad\\WPBrowser\\Generators\\SubfolderHtaccess' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/SubfolderHtaccess.php', - 'tad\\WPBrowser\\Generators\\Tables' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/Tables.php', - 'tad\\WPBrowser\\Generators\\TemplateProviderInterface' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/TemplateProviderInterface.php', - 'tad\\WPBrowser\\Generators\\User' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/User.php', - 'tad\\WPBrowser\\Generators\\User\\Roles' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/User/Roles.php', - 'tad\\WPBrowser\\Generators\\WpPassword' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Generators/WpPassword.php', - 'tad\\WPBrowser\\Iterators\\Filters\\ActionsQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/ActionsQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\ClassMethodQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/ClassMethodQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\FactoryQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FactoryQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\FiltersQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FiltersQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\FunctionQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/FunctionQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\MainStatementQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/MainStatementQueriesFilter.php', - 'tad\\WPBrowser\\Iterators\\Filters\\QueriesCallerBasedFilterIterator' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/QueriesCallerBasedFilterIterator.php', - 'tad\\WPBrowser\\Iterators\\Filters\\QueriesCallerBasedKeepingFilterIterator' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/QueriesCallerBasedKeepingFilterIterator.php', - 'tad\\WPBrowser\\Iterators\\Filters\\SetupTearDownQueriesFilter' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Iterators/Filters/SetupTearDownQueriesFilter.php', - 'tad\\WPBrowser\\Module\\Support\\DbDump' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/Support/DbDump.php', - 'tad\\WPBrowser\\Module\\Support\\UriToIndexMapper' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/Support/UriToIndexMapper.php', - 'tad\\WPBrowser\\Module\\WPLoader\\FactoryStore' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/FactoryStore.php', - 'tad\\WPBrowser\\Module\\WPLoader\\Filters' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/Filters.php', - 'tad\\WPBrowser\\Module\\WPLoader\\FiltersGroup' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Module/WPLoader/FiltersGroup.php', - 'tad\\WPBrowser\\Services\\Db\\MySQLDumpFactory' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpFactory.php', - 'tad\\WPBrowser\\Services\\Db\\MySQLDumpFactoryInterface' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpFactoryInterface.php', - 'tad\\WPBrowser\\Services\\Db\\MySQLDumpInterface' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/Db/MySQLDumpInterface.php', - 'tad\\WPBrowser\\Services\\WP\\Bootstrapper' => __DIR__ . '/..' . '/lucatume/wp-browser-commons/src/tad/WPBrowser/Services/WP/Bootstrapper.php', - 'tad\\WPBrowser\\Template\\Data' => __DIR__ . '/..' . '/lucatume/wp-browser/src/tad/WPBrowser/Template/Data.php', - 'voku\\helper\\ASCII' => __DIR__ . '/..' . '/voku/portable-ascii/src/voku/helper/ASCII.php', ); public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$prefixDirsPsr4; - $loader->fallbackDirsPsr4 = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$fallbackDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$prefixesPsr0; - $loader->classMap = ComposerStaticInit2bca884894f5dad38a04fb4589efa493::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInitb81212723df6ec6a4125604686c14dbf::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitb81212723df6ec6a4125604686c14dbf::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitb81212723df6ec6a4125604686c14dbf::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/ca-bundle/LICENSE b/vendor/composer/ca-bundle/LICENSE deleted file mode 100644 index c5b5220..0000000 --- a/vendor/composer/ca-bundle/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2016 Composer - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/composer/ca-bundle/README.md b/vendor/composer/ca-bundle/README.md deleted file mode 100644 index d8205ec..0000000 --- a/vendor/composer/ca-bundle/README.md +++ /dev/null @@ -1,85 +0,0 @@ -composer/ca-bundle -================== - -Small utility library that lets you find a path to the system CA bundle, -and includes a fallback to the Mozilla CA bundle. - -Originally written as part of [composer/composer](https://github.com/composer/composer), -now extracted and made available as a stand-alone library. - - -Installation ------------- - -Install the latest version with: - -```bash -$ composer require composer/ca-bundle -``` - - -Requirements ------------- - -* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. - - -Basic usage ------------ - -### `Composer\CaBundle\CaBundle` - -- `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback -- `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file -- `CaBundle::validateCaFile($filename)`: Validates a CA file using openssl_x509_parse only if it is safe to use -- `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse() -- `CaBundle::reset()`: Resets the static caches - - -#### To use with curl - -```php -$curl = curl_init("https://example.org/"); - -$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(); -if (is_dir($caPathOrFile)) { - curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile); -} else { - curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile); -} - -$result = curl_exec($curl); -``` - -#### To use with php streams - -```php -$opts = array( - 'http' => array( - 'method' => "GET" - ) -); - -$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(); -if (is_dir($caPathOrFile)) { - $opts['ssl']['capath'] = $caPathOrFile; -} else { - $opts['ssl']['cafile'] = $caPathOrFile; -} - -$context = stream_context_create($opts); -$result = file_get_contents('https://example.com', false, $context); -``` - -#### To use with Guzzle - -```php -$client = new \GuzzleHttp\Client([ - \GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath() -]); -``` - -License -------- - -composer/ca-bundle is licensed under the MIT License, see the LICENSE file for details. diff --git a/vendor/composer/ca-bundle/composer.json b/vendor/composer/ca-bundle/composer.json deleted file mode 100644 index 22de0a8..0000000 --- a/vendor/composer/ca-bundle/composer.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "composer/ca-bundle", - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "type": "library", - "license": "MIT", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Composer\\CaBundle\\": "tests" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "config": { - "platform": { - "php": "5.3.9" - } - } -} diff --git a/vendor/composer/ca-bundle/res/cacert.pem b/vendor/composer/ca-bundle/res/cacert.pem deleted file mode 100644 index 651694e..0000000 --- a/vendor/composer/ca-bundle/res/cacert.pem +++ /dev/null @@ -1,3466 +0,0 @@ -## -## Bundle of CA Root Certificates -## -## Certificate data from Mozilla as of: Wed Jan 1 04:12:10 2020 GMT -## -## This is a bundle of X.509 certificates of public Certificate Authorities -## (CA). These were automatically extracted from Mozilla's root certificates -## file (certdata.txt). This file can be found in the mozilla source tree: -## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt -## -## It contains the certificates in PEM format and therefore -## can be directly used with curl / libcurl / php_curl, or with -## an Apache+mod_ssl webserver for SSL client authentication. -## Just configure this file as the SSLCACertificateFile. -## -## Conversion done with mk-ca-bundle.pl version 1.27. -## SHA256: f3bdcd74612952da8476a9d4147f50b29ad0710b7dd95b4c8690500209986d70 -## - - -GlobalSign Root CA -================== ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx -GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds -b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV -BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD -VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa -DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc -THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb -Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP -c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX -gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF -AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj -Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG -j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH -hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC -X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -GlobalSign Root CA - R2 -======================= ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv -YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh -bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT -aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln -bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 -ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp -s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN -S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL -TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C -ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i -YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN -BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp -9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu -01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 -9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- - -Verisign Class 3 Public Primary Certification Authority - G3 -============================================================ ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy -dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 -EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc -cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw -EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj -055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA -ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f -j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 -xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa -t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- - -Entrust.net Premium 2048 Secure Server CA -========================================= ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u -ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp -bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx -NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 -d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u -ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL -Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr -hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW -nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi -VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ -KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy -T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf -zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT -J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e -nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= ------END CERTIFICATE----- - -Baltimore CyberTrust Root -========================= ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE -ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li -ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC -SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs -dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME -uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB -UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C -G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 -XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr -l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI -VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB -BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh -cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 -hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa -Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H -RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- - -AddTrust External Root -====================== ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD -VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw -NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU -cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg -Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 -+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw -Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo -aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy -2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 -7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL -VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk -VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl -j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 -e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u -G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- - -Entrust Root Certification Authority -==================================== ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV -BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw -b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG -A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 -MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu -MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu -Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v -dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz -A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww -Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 -j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN -rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw -DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 -MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH -hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM -Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa -v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS -W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 -tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- - -GeoTrust Global CA -================== ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw -MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j -LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo -BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet -8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc -T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU -vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk -DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q -zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 -d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 -mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p -XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm -Mw== ------END CERTIFICATE----- - -GeoTrust Universal CA -===================== ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 -MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu -Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t -JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e -RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs -7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d -8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V -qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga -Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB -Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu -KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 -ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 -XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB -hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 -qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL -oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK -xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF -KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 -DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK -xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU -p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI -P/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE----- - -GeoTrust Universal CA 2 -======================= ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 -MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg -SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 -DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 -j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q -JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a -QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 -WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP -20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn -ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC -SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG -8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 -+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E -BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ -4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ -mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq -A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg -Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP -pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d -FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp -gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm -X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE----- - -Comodo AAA Services root -======================== ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS -R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg -TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw -MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl -c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV -BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG -C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs -i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW -Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH -Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK -Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f -BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl -cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz -LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm -7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z -8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C -12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- - -QuoVadis Root CA -================ ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE -ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz -MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp -cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD -EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk -J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL -F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL -YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen -AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w -PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y -ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 -MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj -YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs -ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW -Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu -BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw -FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 -tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo -fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul -LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x -gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi -5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi -5nrQNiOKSnQ2+Q== ------END CERTIFICATE----- - -QuoVadis Root CA 2 -================== ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT -EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx -ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC -DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 -XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk -lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB -lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy -lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt -66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn -wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh -D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy -BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie -J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud -DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU -a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT -ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv -Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 -UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm -VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK -+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW -IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 -WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X -f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II -4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 -VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u ------END CERTIFICATE----- - -QuoVadis Root CA 3 -================== ------BEGIN CERTIFICATE----- -MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT -EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx -OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC -DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg -DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij -KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K -DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv -BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp -p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 -nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX -MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM -Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz -uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT -BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj -YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 -aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB -BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD -VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 -ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE -AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV -qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s -hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z -POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 -Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp -8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC -bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu -g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p -vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr -qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= ------END CERTIFICATE----- - -Security Communication Root CA -============================== ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP -U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw -HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP -U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw -8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM -DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX -5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd -DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 -JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw -DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g -0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a -mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ -s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ -6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi -FL39vmwLAw== ------END CERTIFICATE----- - -Sonera Class 2 Root CA -====================== ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG -U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw -NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh -IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 -/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT -dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG -f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P -tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH -nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT -XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt -0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI -cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph -Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx -EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH -llpwrN9M ------END CERTIFICATE----- - -XRamp Global CA Root -==================== ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE -BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj -dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx -HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg -U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu -IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx -foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE -zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs -AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry -xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud -EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap -oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC -AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc -/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt -qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n -nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz -8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= ------END CERTIFICATE----- - -Go Daddy Class 2 CA -=================== ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY -VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG -A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g -RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD -ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv -2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 -qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j -YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY -vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O -BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o -atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu -MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG -A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim -PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt -I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI -Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b -vZ8= ------END CERTIFICATE----- - -Starfield Class 2 CA -==================== ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc -U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo -MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG -A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG -SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY -bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ -JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm -epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN -F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF -MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f -hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo -bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g -QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs -afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM -PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD -KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 -QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- - -Taiwan GRCA -=========== ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG -EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X -DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv -dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN -w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 -BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O -1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO -htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov -J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 -Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t -B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB -O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 -lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV -HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 -09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj -Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 -Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU -D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz -DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk -Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk -7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ -CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy -+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS ------END CERTIFICATE----- - -DigiCert Assured ID Root CA -=========================== ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw -IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx -MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL -ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO -9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy -UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW -/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy -oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf -GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF -66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq -hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc -EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn -SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i -8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- - -DigiCert Global Root CA -======================= ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw -HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw -MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 -dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn -TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 -BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H -4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y -7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB -o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm -8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF -BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr -EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt -tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 -UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- - -DigiCert High Assurance EV Root CA -================================== ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw -KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw -MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ -MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu -Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t -Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS -OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 -MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ -NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe -h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB -Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY -JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ -V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp -myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK -mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K ------END CERTIFICATE----- - -DST Root CA X3 -============== ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK -ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X -DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 -cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT -rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 -UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy -xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d -utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ -MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug -dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE -GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw -RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS -fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- - -SwissSign Gold CA - G2 -====================== ------BEGIN CERTIFICATE----- -MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw -EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN -MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp -c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq -t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C -jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg -vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF -ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR -AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend -jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO -peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR -7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi -GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 -OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov -L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm -5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr -44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf -Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m -Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp -mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk -vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf -KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br -NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj -viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ ------END CERTIFICATE----- - -SwissSign Silver CA - G2 -======================== ------BEGIN CERTIFICATE----- -MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT -BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X -DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 -aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG -9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 -N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm -+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH -6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu -MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h -qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 -FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs -ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc -celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X -CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB -tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 -cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P -4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F -kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L -3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx -/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa -DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP -e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu -WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ -DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub -DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u ------END CERTIFICATE----- - -GeoTrust Primary Certification Authority -======================================== ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx -CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ -cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN -b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 -nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge -RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt -tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI -hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K -Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN -NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa -Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG -1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- - -thawte Primary Root CA -====================== ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE -BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 -aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 -MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg -SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv -KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT -FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs -oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ -1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc -q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K -aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p -afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF -AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE -uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 -jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH -z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== ------END CERTIFICATE----- - -VeriSign Class 3 Public Primary Certification Authority - G5 -============================================================ ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln -biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh -dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz -j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD -Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ -Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r -fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv -Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG -SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ -X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE -KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC -Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE -ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE----- - -SecureTrust CA -============== ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG -EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy -dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe -BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX -OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t -DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH -GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b -01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH -ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj -aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ -KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu -SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf -mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ -nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- - -Secure Global CA -================ ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG -EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH -bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg -MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg -Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx -YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ -bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g -8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV -HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi -0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud -EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn -oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA -MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ -OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn -CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 -3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- - -COMODO Certification Authority -============================== ------BEGIN CERTIFICATE----- -MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE -BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG -A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb -MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD -T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH -+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww -xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV -4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA -1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI -rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k -b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC -AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP -OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ -RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc -IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN -+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== ------END CERTIFICATE----- - -Network Solutions Certificate Authority -======================================= ------BEGIN CERTIFICATE----- -MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG -EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr -IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx -MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu -MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx -jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT -aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT -crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc -/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB -AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv -bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA -A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q -4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ -GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv -wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD -ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey ------END CERTIFICATE----- - -COMODO ECC Certification Authority -================================== ------BEGIN CERTIFICATE----- -MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC -R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE -ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix -GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR -Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo -b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X -4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni -wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG -FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA -U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= ------END CERTIFICATE----- - -OISTE WISeKey Global Root GA CA -=============================== ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE -BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG -A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH -bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD -VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw -IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 -IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 -Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg -Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD -d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ -/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R -LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ -KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm -MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 -+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY -okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= ------END CERTIFICATE----- - -Certigna -======== ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw -EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 -MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI -Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q -XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH -GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p -ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg -DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf -Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ -tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ -BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J -SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA -hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ -ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu -PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY -1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw -WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== ------END CERTIFICATE----- - -Cybertrust Global Root -====================== ------BEGIN CERTIFICATE----- -MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li -ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 -MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD -ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW -0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL -AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin -89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT -8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 -MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G -A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO -lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi -5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 -hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T -X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW -WL1WMRJOEcgh4LMRkWXbtKaIOM5V ------END CERTIFICATE----- - -ePKI Root Certification Authority -================================= ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG -EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg -Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx -MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq -MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs -IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi -lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv -qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX -12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O -WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ -ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao -lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ -vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi -Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi -MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 -1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq -KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV -xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP -NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r -GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE -xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx -gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy -sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD -BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - -certSIGN ROOT CA -================ ------BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD -VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa -Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE -CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I -JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH -rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 -ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD -0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 -AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B -Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB -AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 -SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 -x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt -vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz -TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD ------END CERTIFICATE----- - -GeoTrust Primary Certification Authority - G3 -============================================= ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy -eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz -NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo -YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT -LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j -K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE -c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C -IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu -dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr -2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 -cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE -Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s -t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt ------END CERTIFICATE----- - -thawte Primary Root CA - G2 -=========================== ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC -VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu -IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg -Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV -MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG -b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt -IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS -LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 -8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU -mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN -G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K -rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE----- - -thawte Primary Root CA - G3 -=========================== ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE -BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 -aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w -ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD -VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG -A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At -P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC -+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY -7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW -vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ -KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK -A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC -8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm -er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE----- - -GeoTrust Primary Certification Authority - G2 -============================================= ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 -OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl -b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG -BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc -KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ -EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m -ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 -npaqBA+K ------END CERTIFICATE----- - -VeriSign Universal Root Certification Authority -=============================================== ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u -IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj -1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP -MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 -9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I -AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR -tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G -CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O -a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 -Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx -Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx -P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P -wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 -mJO37M2CYfE45k+XmCpajQ== ------END CERTIFICATE----- - -VeriSign Class 3 Public Primary Certification Authority - G4 -============================================================ ------BEGIN CERTIFICATE----- -MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC -VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 -b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz -ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU -cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo -b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 -IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 -Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz -rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw -HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u -Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD -A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx -AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== ------END CERTIFICATE----- - -NetLock Arany (Class Gold) Főtanúsítvány -======================================== ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G -A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 -dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB -cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx -MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO -ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 -c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu -0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw -/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk -H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw -fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 -neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW -qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta -YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC -bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna -NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu -dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= ------END CERTIFICATE----- - -Staat der Nederlanden Root CA - G2 -================================== ------BEGIN CERTIFICATE----- -MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE -CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g -Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC -TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l -ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ -5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn -vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj -CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil -e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR -OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI -CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 -48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi -trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 -qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB -AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC -ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA -A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz -+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj -f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN -kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk -CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF -URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb -CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h -oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV -IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm -66+KAQ== ------END CERTIFICATE----- - -Hongkong Post Root CA 1 -======================= ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT -DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx -NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n -IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 -ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr -auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh -qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY -V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV -HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i -h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio -l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei -IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps -T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT -c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== ------END CERTIFICATE----- - -SecureSign RootCA11 -=================== ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi -SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS -b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw -KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 -cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL -TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO -wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq -g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP -O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA -bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX -t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh -OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r -bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ -Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 -y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 -lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - -Microsec e-Szigno Root CA 2009 -============================== ------BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER -MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv -c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o -dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE -BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt -U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA -fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG -0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA -pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm -1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC -AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf -QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE -FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o -lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX -I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 -tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 -yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi -LXpUq3DDfSJlgnCW ------END CERTIFICATE----- - -GlobalSign Root CA - R3 -======================= ------BEGIN CERTIFICATE----- -MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv -YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh -bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT -aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln -bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt -iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ -0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 -rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl -OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 -xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 -lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 -EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E -bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 -YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r -kpeDMdmztcpHWD9f ------END CERTIFICATE----- - -Autoridad de Certificacion Firmaprofesional CIF A62634068 -========================================================= ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA -BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 -MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw -QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB -NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD -Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P -B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY -7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH -ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI -plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX -MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX -LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK -bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU -vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud -EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH -DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA -bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx -ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx -51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk -R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP -T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f -Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl -osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR -crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR -saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD -KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi -6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - -Izenpe.com -========== ------BEGIN CERTIFICATE----- -MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG -EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz -MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu -QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ -03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK -ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU -+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC -PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT -OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK -F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK -0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ -0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB -leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID -AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ -SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG -NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx -MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O -BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l -Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga -kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q -hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs -g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 -aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 -nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC -ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo -Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z -WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== ------END CERTIFICATE----- - -Chambers of Commerce Root - 2008 -================================ ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD -MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv -bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu -QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy -Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl -ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF -EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl -cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA -XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj -h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ -ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk -NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g -D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 -lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ -0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 -EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI -G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ -BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh -bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh -bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC -CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH -AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 -wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH -3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU -RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 -M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 -YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF -9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK -zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG -nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ ------END CERTIFICATE----- - -Global Chambersign Root - 2008 -============================== ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD -MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv -bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu -QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx -NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg -Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ -QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf -VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf -XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 -ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB -/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA -TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M -H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe -Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF -HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB -AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT -BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE -BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm -aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm -aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp -1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 -dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG -/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 -ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s -dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg -9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH -foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du -qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr -P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq -c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- - -Go Daddy Root Certificate Authority - G2 -======================================== ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu -MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 -MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G -A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq -9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD -+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd -fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl -NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 -BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac -vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r -5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV -N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 ------END CERTIFICATE----- - -Starfield Root Certificate Authority - G2 -========================================= ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s -b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 -eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw -DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg -VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB -dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv -W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs -bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk -N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf -ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU -JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol -TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx -4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw -F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K -pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ -c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 ------END CERTIFICATE----- - -Starfield Services Root Certificate Authority - G2 -================================================== ------BEGIN CERTIFICATE----- -MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s -b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl -IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV -BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT -dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg -Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 -h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa -hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP -LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB -rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG -SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP -E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy -xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd -iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza -YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 ------END CERTIFICATE----- - -AffirmTrust Commercial -====================== ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw -MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly -bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb -DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV -C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 -BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww -MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV -HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG -hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi -qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv -0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh -sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= ------END CERTIFICATE----- - -AffirmTrust Networking -====================== ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw -MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly -bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE -Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI -dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 -/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb -h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV -HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu -UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 -12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 -WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 -/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= ------END CERTIFICATE----- - -AffirmTrust Premium -=================== ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy -OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy -dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn -BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV -5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs -+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd -GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R -p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI -S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 -6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 -/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo -+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB -/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv -MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg -Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC -6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S -L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK -+4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV -BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg -IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 -g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb -zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== ------END CERTIFICATE----- - -AffirmTrust Premium ECC -======================= ------BEGIN CERTIFICATE----- -MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV -BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx -MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U -cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ -N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW -BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK -BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X -57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM -eQ== ------END CERTIFICATE----- - -Certum Trusted Network CA -========================= ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK -ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy -MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU -ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC -l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J -J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 -fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 -cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB -Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw -DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj -jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 -mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj -Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- - -TWCA Root Certification Authority -================================= ------BEGIN CERTIFICATE----- -MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ -VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG -EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB -IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx -QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC -oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP -4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r -y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG -9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC -mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW -QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY -T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny -Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== ------END CERTIFICATE----- - -Security Communication RootCA2 -============================== ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc -U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh -dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC -SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy -aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ -+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R -3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV -spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K -EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 -QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB -CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj -u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk -3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q -tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 -mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 ------END CERTIFICATE----- - -EC-ACC -====== ------BEGIN CERTIFICATE----- -MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE -BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w -ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD -VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE -CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT -BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 -MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt -SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl -Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh -cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK -w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT -ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 -HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a -E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw -0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD -VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 -Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l -dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ -lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa -Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe -l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 -E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D -5EI= ------END CERTIFICATE----- - -Hellenic Academic and Research Institutions RootCA 2011 -======================================================= ------BEGIN CERTIFICATE----- -MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT -O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y -aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z -IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT -AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z -IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo -IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI -1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa -71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u -8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH -3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ -MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 -MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu -b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt -XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 -TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD -/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N -7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 ------END CERTIFICATE----- - -Actalis Authentication Root CA -============================== ------BEGIN CERTIFICATE----- -MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM -BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE -AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky -MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz -IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 -IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ -wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa -by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 -zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f -YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 -oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l -EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 -hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 -EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 -jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY -iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt -ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI -WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 -JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx -K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ -Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC -4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo -2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz -lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem -OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 -vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== ------END CERTIFICATE----- - -Trustis FPS Root CA -=================== ------BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG -EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 -IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV -BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ -RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk -H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa -cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt -o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA -AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd -BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c -GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC -yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P -8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV -l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl -iB6XzCGcKQENZetX2fNXlrtIzYE= ------END CERTIFICATE----- - -Buypass Class 2 Root CA -======================= ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU -QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X -DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 -eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw -DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 -g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn -9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b -/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU -CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff -awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI -zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn -Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX -Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs -M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF -AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s -A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI -osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S -aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd -DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD -LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 -oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC -wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS -CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN -rJgWVqA= ------END CERTIFICATE----- - -Buypass Class 3 Root CA -======================= ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU -QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X -DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 -eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw -DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH -sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR -5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh -7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ -ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH -2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV -/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ -RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA -Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq -j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF -AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV -cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G -uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG -Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 -ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 -KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz -6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug -UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe -eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi -Cp/HuZc= ------END CERTIFICATE----- - -T-TeleSec GlobalRoot Class 3 -============================ ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM -IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU -cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx -MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz -dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD -ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK -9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU -NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF -iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W -0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr -AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb -fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT -ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h -P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== ------END CERTIFICATE----- - -EE Certification Centre Root CA -=============================== ------BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG -EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy -dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw -MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB -UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy -ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM -TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 -rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw -93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN -P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ -MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF -BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj -xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM -lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u -uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU -3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM -dcGWxZ0= ------END CERTIFICATE----- - -D-TRUST Root Class 3 CA 2 2009 -============================== ------BEGIN CERTIFICATE----- -MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK -DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe -Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE -LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD -ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA -BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv -KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z -p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC -AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ -4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y -eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw -MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G -PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw -OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm -2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 -o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV -dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph -X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= ------END CERTIFICATE----- - -D-TRUST Root Class 3 CA 2 EV 2009 -================================= ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK -DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw -OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK -DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw -OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS -egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh -zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T -7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 -sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 -11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv -cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v -ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El -MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp -b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh -c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ -PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 -nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX -ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA -NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv -w9y4AyHqnxbxLFS1 ------END CERTIFICATE----- - -CA Disig Root R2 -================ ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw -EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp -ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx -EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp -c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC -w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia -xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 -A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S -GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV -g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa -5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE -koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A -Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i -Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u -Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM -tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV -sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je -dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 -1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx -mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 -utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 -sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg -UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV -7+ZtsH8tZ/3zbBt1RqPlShfppNcL ------END CERTIFICATE----- - -ACCVRAIZ1 -========= ------BEGIN CERTIFICATE----- -MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB -SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 -MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH -UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC -DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM -jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 -RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD -aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ -0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG -WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 -8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR -5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J -9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK -Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw -Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu -Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 -VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM -Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA -QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh -AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA -YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj -AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA -IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk -aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 -dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 -MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI -hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E -R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN -YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 -nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ -TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 -sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h -I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg -Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd -3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p -EfbRD0tVNEYqi4Y7 ------END CERTIFICATE----- - -TWCA Global Root CA -=================== ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT -CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD -QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK -EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg -Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C -nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV -r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR -Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV -tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W -KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 -sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p -yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn -kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI -zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC -AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g -cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn -LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M -8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg -/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg -lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP -A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m -i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 -EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 -zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= ------END CERTIFICATE----- - -TeliaSonera Root CA v1 -====================== ------BEGIN CERTIFICATE----- -MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE -CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 -MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW -VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ -6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA -3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k -B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn -Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH -oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 -F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ -oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 -gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc -TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB -AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW -DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm -zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx -0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW -pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV -G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc -c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT -JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 -qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 -Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems -WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= ------END CERTIFICATE----- - -E-Tugra Certification Authority -=============================== ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w -DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls -ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN -ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw -NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx -QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl -cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD -DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd -hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K -CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g -ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ -BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 -E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz -rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq -jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn -rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 -dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB -/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG -MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK -kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO -XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 -VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo -a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc -dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV -KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT -Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 -8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G -C7TbO6Orb1wdtn7os4I07QZcJA== ------END CERTIFICATE----- - -T-TeleSec GlobalRoot Class 2 -============================ ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM -IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU -cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx -MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz -dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD -ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ -SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F -vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 -2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV -WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy -YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 -r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf -vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR -3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== ------END CERTIFICATE----- - -Atos TrustedRoot 2011 -===================== ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU -cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 -MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG -A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV -hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr -54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ -DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 -HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR -z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R -l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ -bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h -k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh -TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 -61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G -3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed ------END CERTIFICATE----- - -QuoVadis Root CA 1 G3 -===================== ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG -A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv -b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN -MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg -RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE -PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm -PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 -Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN -ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l -g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV -7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX -9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f -iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg -t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI -hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC -MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 -GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct -Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP -+V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh -3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa -wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 -O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 -FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV -hMJKzRwuJIczYOXD ------END CERTIFICATE----- - -QuoVadis Root CA 2 G3 -===================== ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG -A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv -b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN -MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg -RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh -ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY -NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t -oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o -MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l -V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo -L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ -sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD -6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh -lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI -hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 -AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K -pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 -x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz -dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X -U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw -mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD -zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN -JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr -O3jtZsSOeWmD3n+M ------END CERTIFICATE----- - -QuoVadis Root CA 3 G3 -===================== ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG -A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv -b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN -MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg -RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 -IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL -Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe -6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 -I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U -VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 -5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi -Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM -dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt -rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI -hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px -KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS -t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ -TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du -DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib -Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD -hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX -0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW -dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 -PpxxVJkES/1Y+Zj0 ------END CERTIFICATE----- - -DigiCert Assured ID Root G2 -=========================== ------BEGIN CERTIFICATE----- -MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw -IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw -MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL -ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH -35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq -bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw -VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP -YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn -lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO -w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv -0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz -d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW -hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M -jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo -IhNzbM8m9Yop5w== ------END CERTIFICATE----- - -DigiCert Assured ID Root G3 -=========================== ------BEGIN CERTIFICATE----- -MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD -VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 -MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ -BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb -RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs -KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF -UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy -YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy -1vUhZscv6pZjamVFkpUBtA== ------END CERTIFICATE----- - -DigiCert Global Root G2 -======================= ------BEGIN CERTIFICATE----- -MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw -HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx -MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 -dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ -kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO -3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV -BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM -UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB -o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu -5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr -F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U -WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH -QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ -iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl -MrY= ------END CERTIFICATE----- - -DigiCert Global Root G3 -======================= ------BEGIN CERTIFICATE----- -MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD -VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw -MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k -aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C -AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O -YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP -BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp -Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y -3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 -VOKa5Vt8sycX ------END CERTIFICATE----- - -DigiCert Trusted Root G4 -======================== ------BEGIN CERTIFICATE----- -MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw -HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 -MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp -pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o -k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa -vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY -QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 -MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm -mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 -f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH -dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 -oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD -ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY -ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr -yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy -7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah -ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN -5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb -/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa -5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK -G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP -82Z+ ------END CERTIFICATE----- - -COMODO RSA Certification Authority -================================== ------BEGIN CERTIFICATE----- -MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE -BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG -A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC -R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE -ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn -dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ -FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+ -5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG -x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX -2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL -OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3 -sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C -GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5 -WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E -FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w -DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt -rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+ -nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg -tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW -sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp -pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA -zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq -ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52 -7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I -LaZRfyHBNVOFBkpdn627G190 ------END CERTIFICATE----- - -USERTrust RSA Certification Authority -===================================== ------BEGIN CERTIFICATE----- -MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE -BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK -ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE -BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK -ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz -0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j -Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn -RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O -+T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq -/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE -Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM -lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8 -yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+ -eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd -BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW -FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ -7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ -Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM -8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi -FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi -yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c -J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw -sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx -Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 ------END CERTIFICATE----- - -USERTrust ECC Certification Authority -===================================== ------BEGIN CERTIFICATE----- -MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC -VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC -VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 -0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez -nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV -HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB -HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu -9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= ------END CERTIFICATE----- - -GlobalSign ECC Root CA - R4 -=========================== ------BEGIN CERTIFICATE----- -MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb -R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD -EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb -R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD -EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl -OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P -AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV -MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF -JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= ------END CERTIFICATE----- - -GlobalSign ECC Root CA - R5 -=========================== ------BEGIN CERTIFICATE----- -MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb -R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD -EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb -R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD -EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 -SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS -h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd -BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx -uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 -yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 ------END CERTIFICATE----- - -Staat der Nederlanden Root CA - G3 -================================== ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE -CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g -Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC -TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l -ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y -olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t -x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy -EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K -Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur -mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 -1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp -07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo -FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE -41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB -AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu -yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD -U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq -KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 -v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA -8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b -8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r -mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq -1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI -JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV -tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= ------END CERTIFICATE----- - -Staat der Nederlanden EV Root CA -================================ ------BEGIN CERTIFICATE----- -MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE -CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g -RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M -MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl -cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk -SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW -O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r -0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 -Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV -XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr -08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV -0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd -74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx -fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa -ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI -eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu -c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq -5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN -b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN -f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi -5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 -WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK -DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy -eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== ------END CERTIFICATE----- - -IdenTrust Commercial Root CA 1 -============================== ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG -EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS -b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES -MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB -IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld -hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ -mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi -1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C -XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl -3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy -NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV -WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg -xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix -uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC -AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI -hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH -6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg -ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt -ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV -YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX -feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro -kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe -2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz -Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R -cGzM7vRX+Bi6hG6H ------END CERTIFICATE----- - -IdenTrust Public Sector Root CA 1 -================================= ------BEGIN CERTIFICATE----- -MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG -EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv -ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV -UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS -b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy -P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 -Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI -rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf -qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS -mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn -ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh -LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v -iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL -4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B -Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw -DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj -t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A -mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt -GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt -m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx -NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 -Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI -ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC -ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ -3Wl9af0AVqW3rLatt8o+Ae+c ------END CERTIFICATE----- - -Entrust Root Certification Authority - G2 -========================================= ------BEGIN CERTIFICATE----- -MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV -BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy -bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug -b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw -HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT -DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx -OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP -/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz -HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU -s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y -TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx -AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 -0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z -iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ -Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi -nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ -vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO -e4pIb4tF9g== ------END CERTIFICATE----- - -Entrust Root Certification Authority - EC1 -========================================== ------BEGIN CERTIFICATE----- -MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx -FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn -YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl -ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw -FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs -LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg -dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy -AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef -9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h -vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 -kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G ------END CERTIFICATE----- - -CFCA EV ROOT -============ ------BEGIN CERTIFICATE----- -MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE -CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB -IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw -MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD -DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV -BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD -7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN -uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW -ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 -xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f -py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K -gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol -hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ -tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf -BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB -/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB -ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q -ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua -4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG -E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX -BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn -aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy -PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX -kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C -ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su ------END CERTIFICATE----- - -OISTE WISeKey Global Root GB CA -=============================== ------BEGIN CERTIFICATE----- -MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG -EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl -ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw -MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD -VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds -b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX -scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP -rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk -9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o -Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg -GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI -hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD -dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 -VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui -HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic -Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= ------END CERTIFICATE----- - -SZAFIR ROOT CA2 -=============== ------BEGIN CERTIFICATE----- -MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG -A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV -BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ -BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD -VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q -qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK -DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE -2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ -ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi -ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P -AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC -AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 -O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 -oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul -4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 -+/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== ------END CERTIFICATE----- - -Certum Trusted Network CA 2 -=========================== ------BEGIN CERTIFICATE----- -MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE -BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 -bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y -ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ -TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB -IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 -7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o -CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b -Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p -uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 -GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ -9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB -Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye -hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM -BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI -hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW -Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA -L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo -clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM -pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb -w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo -J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm -ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX -is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 -zAYspsbiDrW5viSP ------END CERTIFICATE----- - -Hellenic Academic and Research Institutions RootCA 2015 -======================================================= ------BEGIN CERTIFICATE----- -MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT -BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 -aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl -YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx -MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg -QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV -BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw -MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv -bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh -iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ -6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd -FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr -i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F -GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 -fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu -iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc -Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI -hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ -D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM -d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y -d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn -82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb -davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F -Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt -J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa -JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q -p/UsQu0yrbYhnr68 ------END CERTIFICATE----- - -Hellenic Academic and Research Institutions ECC RootCA 2015 -=========================================================== ------BEGIN CERTIFICATE----- -MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 -aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u -cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj -aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw -MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj -IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD -VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 -Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP -dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK -Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O -BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA -GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn -dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR ------END CERTIFICATE----- - -ISRG Root X1 -============ ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE -BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD -EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG -EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT -DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r -Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 -3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K -b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN -Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ -4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf -1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu -hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH -usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r -OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G -A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY -9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV -0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt -hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw -TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx -e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA -JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD -YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n -JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ -m+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- - -AC RAIZ FNMT-RCM -================ ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT -AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw -MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD -TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC -ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf -qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr -btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL -j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou -08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw -WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT -tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ -47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC -ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa -i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o -dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD -nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s -D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ -j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT -Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW -+YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 -Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d -8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm -5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG -rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= ------END CERTIFICATE----- - -Amazon Root CA 1 -================ ------BEGIN CERTIFICATE----- -MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD -VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 -MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv -bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH -FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ -gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t -dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce -VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 -DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM -CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy -8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa -2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 -xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 ------END CERTIFICATE----- - -Amazon Root CA 2 -================ ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD -VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 -MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv -bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC -ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 -kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp -N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 -AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd -fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx -kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS -btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 -Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN -c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ -3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw -DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA -A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY -+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE -YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW -xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ -gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW -aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV -Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 -KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi -JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= ------END CERTIFICATE----- - -Amazon Root CA 3 -================ ------BEGIN CERTIFICATE----- -MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG -EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy -NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ -MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB -f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr -Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 -rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc -eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== ------END CERTIFICATE----- - -Amazon Root CA 4 -================ ------BEGIN CERTIFICATE----- -MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG -EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy -NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ -MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN -/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri -83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA -MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 -AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== ------END CERTIFICATE----- - -LuxTrust Global Root 2 -====================== ------BEGIN CERTIFICATE----- -MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG -A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh -bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW -MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC -AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm -Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2 -xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC -wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm -1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm -FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF -wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/ -a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U -ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ -MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB -/zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5 -Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT -+Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ -FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN -H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW -7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu -ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA -VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR -TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt -/f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc -7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I -iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr ------END CERTIFICATE----- - -TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 -============================================= ------BEGIN CERTIFICATE----- -MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT -D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr -IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g -TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp -ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD -VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt -c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth -bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 -IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 -6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc -wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 -3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 -WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU -ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh -AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc -lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R -e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j -q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= ------END CERTIFICATE----- - -GDCA TrustAUTH R5 ROOT -====================== ------BEGIN CERTIFICATE----- -MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw -BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD -DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow -YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ -IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs -AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p -OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr -pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ -9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ -xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM -R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ -D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 -oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx -9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg -p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 -H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 -6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd -+PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ -HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD -F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ -8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv -/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT -aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== ------END CERTIFICATE----- - -TrustCor RootCert CA-1 -====================== ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP -MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig -U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp -dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx -MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu -YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe -VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy -dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq -jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4 -pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0 -JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h -gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw -/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j -BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5 -mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf -ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C -qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P -3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk= ------END CERTIFICATE----- - -TrustCor RootCert CA-2 -====================== ------BEGIN CERTIFICATE----- -MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w -DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT -eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0 -eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy -MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h -bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U -cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0 -IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb -ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk -RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1 -oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb -XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1 -/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q -jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP -eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg -rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh -8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU -2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h -Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp -kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv -2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3 -S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw -PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv -DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU -RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE -xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX -RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ ------END CERTIFICATE----- - -TrustCor ECA-1 -============== ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP -MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig -U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp -dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw -N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5 -MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y -IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR -MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23 -xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc -p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+ -fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj -YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL -f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF -AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u -/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F -hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs -J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC -jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g== ------END CERTIFICATE----- - -SSL.com Root Certification Authority RSA -======================================== ------BEGIN CERTIFICATE----- -MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAM -BgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24x -MTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYw -MjEyMTczOTM5WhcNNDEwMjEyMTczOTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx -EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NM -LmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/C -Fp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8 -P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/ge -oeOy3ZExqysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkp -k8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrFYD3Z -fBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93EJNyAKoFBbZQ+yODJ -gUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2 -UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi8 -1xtZPCvM8hnIk2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s -bE6x/c+cCbqiM+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV -HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGVcpNxJK1ok1iOMq8bs3AD/CUr -dIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBcHadm47GUBwwyOabqG7B52B2ccETjit3E+ZUf -ijhDPwGFpUenPUayvOUiaPd7nNgsPgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAsl -u1OJD7OAUN5F7kR/q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjq -erQ0cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jra6x+3uxj -MxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90IH37hVZkLId6Tngr75qNJ -vTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/YK9f1JmzJBjSWFupwWRoyeXkLtoh/D1JI -Pb9s2KJELtFOt3JY04kTlf5Eq/jXixtunLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406y -wKBjYZC6VWg3dGq2ktufoYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NI -WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= ------END CERTIFICATE----- - -SSL.com Root Certification Authority ECC -======================================== ------BEGIN CERTIFICATE----- -MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV -BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv -BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy -MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO -BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv -bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA -BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ -8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR -hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT -jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW -e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z -5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl ------END CERTIFICATE----- - -SSL.com EV Root Certification Authority RSA R2 -============================================== ------BEGIN CERTIFICATE----- -MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w -DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u -MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy -MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI -DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD -VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh -hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w -cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO -Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ -B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh -CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim -9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto -RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm -JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 -+qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV -HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp -qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 -++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx -Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G -guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz -OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 -CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq -lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR -rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 -hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX -9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== ------END CERTIFICATE----- - -SSL.com EV Root Certification Authority ECC -=========================================== ------BEGIN CERTIFICATE----- -MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV -BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy -BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw -MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx -EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM -LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB -BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy -3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O -BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe -5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ -N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm -m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== ------END CERTIFICATE----- - -GlobalSign Root CA - R6 -======================= ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX -R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds -b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i -YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs -U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss -grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE -3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF -vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM -PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+ -azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O -WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy -CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP -0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN -b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE -AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV -HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN -nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0 -lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY -BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym -Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr -3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1 -0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T -uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK -oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t -JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= ------END CERTIFICATE----- - -OISTE WISeKey Global Root GC CA -=============================== ------BEGIN CERTIFICATE----- -MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD -SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo -MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa -Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL -ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh -bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr -VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab -NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd -BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E -AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk -AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 ------END CERTIFICATE----- - -GTS Root R1 -=========== ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG -EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv -b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG -A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx -9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r -aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW -r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM -LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly -4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr -06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 -wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om -3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu -JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM -BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1 -d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv -fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm -ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b -gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq -4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr -tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo -pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0 -sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql -CFF1pkgl ------END CERTIFICATE----- - -GTS Root R2 -=========== ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG -EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv -b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG -A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk -k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo -7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI -m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm -dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu -ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz -cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW -Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl -aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy -5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM -BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT -vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ -+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw -c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da -WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r -n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu -Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ -7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs -gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld -o/DUhgkC ------END CERTIFICATE----- - -GTS Root R3 -=========== ------BEGIN CERTIFICATE----- -MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV -UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg -UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE -ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU -Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej -QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP -0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0 -glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa -KaqW04MjyaR7YbPMAuhd ------END CERTIFICATE----- - -GTS Root R4 -=========== ------BEGIN CERTIFICATE----- -MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV -UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg -UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE -ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa -6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj -QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV -2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI -N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x -zPKwTdb+mciUqXWi4w== ------END CERTIFICATE----- - -UCA Global G2 Root -================== ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG -EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x -NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU -cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT -oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV -8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS -h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o -LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/ -R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe -KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa -4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc -OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97 -8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo -5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 -1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A -Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9 -yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX -c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo -jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk -bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x -ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn -RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A== ------END CERTIFICATE----- - -UCA Extended Validation Root -============================ ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG -EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u -IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G -A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs -iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF -Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu -eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR -59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH -0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR -el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv -B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth -WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS -NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS -3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL -BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR -ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM -aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4 -dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb -+7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW -F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi -GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc -GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi -djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr -dhh2n1ax ------END CERTIFICATE----- - -Certigna Root CA -================ ------BEGIN CERTIFICATE----- -MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE -BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ -MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda -MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz -MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC -DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX -stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz -KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8 -JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16 -XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq -4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej -wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ -lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI -jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/ -/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw -HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of -1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy -dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h -LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl -cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt -OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP -TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq -7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3 -4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd -8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS -6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY -tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS -aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde -E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= ------END CERTIFICATE----- - -emSign Root CA - G1 -=================== ------BEGIN CERTIFICATE----- -MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET -MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl -ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx -ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk -aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN -LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1 -cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW -DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ -6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH -hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG -MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2 -vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q -NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q -+Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih -U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx -iN66zB+Afko= ------END CERTIFICATE----- - -emSign ECC Root CA - G3 -======================= ------BEGIN CERTIFICATE----- -MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG -A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg -MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4 -MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11 -ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g -RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc -58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr -MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC -AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D -CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7 -jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj ------END CERTIFICATE----- - -emSign Root CA - C1 -=================== ------BEGIN CERTIFICATE----- -MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx -EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp -Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE -BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD -ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up -ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/ -Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX -OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V -I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms -lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+ -XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD -ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp -/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1 -NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9 -wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ -BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI= ------END CERTIFICATE----- - -emSign ECC Root CA - C3 -======================= ------BEGIN CERTIFICATE----- -MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG -A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF -Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE -BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD -ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd -6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9 -SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA -B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA -MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU -ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== ------END CERTIFICATE----- - -Hongkong Post Root CA 3 -======================= ------BEGIN CERTIFICATE----- -MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQELBQAwbzELMAkG -A1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJSG9uZyBLb25nMRYwFAYDVQQK -Ew1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2 -MDMwMjI5NDZaFw00MjA2MDMwMjI5NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtv -bmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMX -SG9uZ2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz -iNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFOdem1p+/l6TWZ5Mwc50tf -jTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mIVoBc+L0sPOFMV4i707mV78vH9toxdCim -5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOe -sL4jpNrcyCse2m5FHomY2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj -0mRiikKYvLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+TtbNe/ -JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZbx39ri1UbSsUgYT2u -y1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+l2oBlKN8W4UdKjk60FSh0Tlxnf0h -+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YKTE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsG -xVd7GYYKecsAyVKvQv83j+GjHno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwID -AQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e -i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEwDQYJKoZIhvcN -AQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG7BJ8dNVI0lkUmcDrudHr9Egw -W62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCkMpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWld -y8joRTnU+kLBEUx3XZL7av9YROXrgZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov -+BS5gLNdTaqX4fnkGMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDc -eqFS3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJmOzj/2ZQw -9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+l6mc1X5VTMbeRRAc6uk7 -nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6cJfTzPV4e0hz5sy229zdcxsshTrD3mUcY -hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB -60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq -dBb9HxEGmpv0 ------END CERTIFICATE----- - -Entrust Root Certification Authority - G4 -========================================= ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu -bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 -dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT -AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D -umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV -3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds -8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ -e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 -ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X -xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV -7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 -dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW -Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n -MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q -jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht -7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK -YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt -jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ -m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW -RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA -JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G -+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT -kcpG2om3PVODLAgfi49T3f+sHw== ------END CERTIFICATE----- diff --git a/vendor/composer/ca-bundle/src/CaBundle.php b/vendor/composer/ca-bundle/src/CaBundle.php deleted file mode 100644 index 29da6e8..0000000 --- a/vendor/composer/ca-bundle/src/CaBundle.php +++ /dev/null @@ -1,324 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\CaBundle; - -use Psr\Log\LoggerInterface; -use Symfony\Component\Process\PhpProcess; - -/** - * @author Chris Smith - * @author Jordi Boggiano - */ -class CaBundle -{ - private static $caPath; - private static $caFileValidity = array(); - private static $useOpensslParse; - - /** - * Returns the system CA bundle path, or a path to the bundled one - * - * This method was adapted from Sslurp. - * https://github.com/EvanDotPro/Sslurp - * - * (c) Evan Coury - * - * For the full copyright and license information, please see below: - * - * Copyright (c) 2013, Evan Coury - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without 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. - * - * * 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. - * - * 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. - * - * @param LoggerInterface $logger optional logger for information about which CA files were loaded - * @return string path to a CA bundle file or directory - */ - public static function getSystemCaRootBundlePath(LoggerInterface $logger = null) - { - if (self::$caPath !== null) { - return self::$caPath; - } - $caBundlePaths = array(); - - - // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that. - // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. - $caBundlePaths[] = self::getEnvVariable('SSL_CERT_FILE'); - - // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that. - // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. - $caBundlePaths[] = self::getEnvVariable('SSL_CERT_DIR'); - - $caBundlePaths[] = ini_get('openssl.cafile'); - $caBundlePaths[] = ini_get('openssl.capath'); - - $otherLocations = array( - '/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package) - '/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package) - '/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package) - '/usr/local/share/certs/ca-root-nss.crt', // FreeBSD (ca_root_nss_package) - '/usr/ssl/certs/ca-bundle.crt', // Cygwin - '/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package - '/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option) - '/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat? - '/etc/ssl/cert.pem', // OpenBSD - '/usr/local/etc/ssl/cert.pem', // FreeBSD 10.x - '/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package - '/usr/local/etc/openssl@1.1/cert.pem', // OS X homebrew, openssl@1.1 package - ); - - foreach($otherLocations as $location) { - $otherLocations[] = dirname($location); - } - - $caBundlePaths = array_merge($caBundlePaths, $otherLocations); - - foreach ($caBundlePaths as $caBundle) { - if (self::caFileUsable($caBundle, $logger)) { - return self::$caPath = $caBundle; - } - - if (self::caDirUsable($caBundle)) { - return self::$caPath = $caBundle; - } - } - - return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort - } - - /** - * Returns the path to the bundled CA file - * - * In case you don't want to trust the user or the system, you can use this directly - * - * @return string path to a CA bundle file - */ - public static function getBundledCaBundlePath() - { - $caBundleFile = __DIR__.'/../res/cacert.pem'; - - // cURL does not understand 'phar://' paths - // see https://github.com/composer/ca-bundle/issues/10 - if (0 === strpos($caBundleFile, 'phar://')) { - file_put_contents( - $tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-'), - file_get_contents($caBundleFile) - ); - - register_shutdown_function(function() use ($tempCaBundleFile) { - @unlink($tempCaBundleFile); - }); - - $caBundleFile = $tempCaBundleFile; - } - - return $caBundleFile; - } - - /** - * Validates a CA file using opensl_x509_parse only if it is safe to use - * - * @param string $filename - * @param LoggerInterface $logger optional logger for information about which CA files were loaded - * - * @return bool - */ - public static function validateCaFile($filename, LoggerInterface $logger = null) - { - static $warned = false; - - if (isset(self::$caFileValidity[$filename])) { - return self::$caFileValidity[$filename]; - } - - $contents = file_get_contents($filename); - - // assume the CA is valid if php is vulnerable to - // https://www.sektioneins.de/advisories/advisory-012013-php-openssl_x509_parse-memory-corruption-vulnerability.html - if (!static::isOpensslParseSafe()) { - if (!$warned && $logger) { - $logger->warning(sprintf( - 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', - PHP_VERSION - )); - $warned = true; - } - - $isValid = !empty($contents); - } else { - $isValid = (bool) openssl_x509_parse($contents); - } - - if ($logger) { - $logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid')); - } - - return self::$caFileValidity[$filename] = $isValid; - } - - /** - * Test if it is safe to use the PHP function openssl_x509_parse(). - * - * This checks if OpenSSL extensions is vulnerable to remote code execution - * via the exploit documented as CVE-2013-6420. - * - * @return bool - */ - public static function isOpensslParseSafe() - { - if (null !== self::$useOpensslParse) { - return self::$useOpensslParse; - } - - if (PHP_VERSION_ID >= 50600) { - return self::$useOpensslParse = true; - } - - // Vulnerable: - // PHP 5.3.0 - PHP 5.3.27 - // PHP 5.4.0 - PHP 5.4.22 - // PHP 5.5.0 - PHP 5.5.6 - if ( - (PHP_VERSION_ID < 50400 && PHP_VERSION_ID >= 50328) - || (PHP_VERSION_ID < 50500 && PHP_VERSION_ID >= 50423) - || (PHP_VERSION_ID < 50600 && PHP_VERSION_ID >= 50507) - ) { - // This version of PHP has the fix for CVE-2013-6420 applied. - return self::$useOpensslParse = true; - } - - if (defined('PHP_WINDOWS_VERSION_BUILD')) { - // Windows is probably insecure in this case. - return self::$useOpensslParse = false; - } - - $compareDistroVersionPrefix = function ($prefix, $fixedVersion) { - $regex = '{^'.preg_quote($prefix).'([0-9]+)$}'; - - if (preg_match($regex, PHP_VERSION, $m)) { - return ((int) $m[1]) >= $fixedVersion; - } - - return false; - }; - - // Hard coded list of PHP distributions with the fix backported. - if ( - $compareDistroVersionPrefix('5.3.3-7+squeeze', 18) // Debian 6 (Squeeze) - || $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) // Debian 7 (Wheezy) - || $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9) // Ubuntu 12.04 (Precise) - ) { - return self::$useOpensslParse = true; - } - - // Symfony Process component is missing so we assume it is unsafe at this point - if (!class_exists('Symfony\Component\Process\PhpProcess')) { - return self::$useOpensslParse = false; - } - - // This is where things get crazy, because distros backport security - // fixes the chances are on NIX systems the fix has been applied but - // it's not possible to verify that from the PHP version. - // - // To verify exec a new PHP process and run the issue testcase with - // known safe input that replicates the bug. - - // Based on testcase in https://github.com/php/php-src/commit/c1224573c773b6845e83505f717fbf820fc18415 - // changes in https://github.com/php/php-src/commit/76a7fd893b7d6101300cc656058704a73254d593 - $cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'; - $script = <<<'EOT' - -error_reporting(-1); -$info = openssl_x509_parse(base64_decode('%s')); -var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']); - -EOT; - $script = '<'."?php\n".sprintf($script, $cert); - - try { - $process = new PhpProcess($script); - $process->mustRun(); - } catch (\Exception $e) { - // In the case of any exceptions just accept it is not possible to - // determine the safety of openssl_x509_parse and bail out. - return self::$useOpensslParse = false; - } - - $output = preg_split('{\r?\n}', trim($process->getOutput())); - $errorOutput = trim($process->getErrorOutput()); - - if ( - count($output) === 3 - && $output[0] === sprintf('string(%d) "%s"', strlen(PHP_VERSION), PHP_VERSION) - && $output[1] === 'string(27) "stefan.esser@sektioneins.de"' - && $output[2] === 'int(-1)' - && preg_match('{openssl_x509_parse\(\): illegal (?:ASN1 data type for|length in) timestamp in - on line \d+}', $errorOutput) - ) { - // This PHP has the fix backported probably by a distro security team. - return self::$useOpensslParse = true; - } - - return self::$useOpensslParse = false; - } - - /** - * Resets the static caches - */ - public static function reset() - { - self::$caFileValidity = array(); - self::$caPath = null; - self::$useOpensslParse = null; - } - - private static function getEnvVariable($name) - { - if (isset($_SERVER[$name])) { - return (string) $_SERVER[$name]; - } - - if (PHP_SAPI === 'cli' && ($value = getenv($name)) !== false && $value !== null) { - return (string) $value; - } - - return false; - } - - private static function caFileUsable($certFile, LoggerInterface $logger = null) - { - return $certFile && @is_file($certFile) && @is_readable($certFile) && static::validateCaFile($certFile, $logger); - } - - private static function caDirUsable($certDir) - { - return $certDir && @is_dir($certDir) && @is_readable($certDir) && glob($certDir . '/*'); - } -} diff --git a/vendor/composer/composer/.editorconfig b/vendor/composer/composer/.editorconfig deleted file mode 100644 index 033f8a6..0000000 --- a/vendor/composer/composer/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_size = 4 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[*.yml] -indent_size = 2 diff --git a/vendor/composer/composer/.gitattributes b/vendor/composer/composer/.gitattributes deleted file mode 100644 index 51b4311..0000000 --- a/vendor/composer/composer/.gitattributes +++ /dev/null @@ -1,17 +0,0 @@ -# Auto-detect text files, ensure they use LF. -* text=auto eol=lf - -# These files are always considered text and should use LF. -# See core.whitespace @ http://git-scm.com/docs/git-config for whitespace flags. -*.php text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 diff=php -*.json text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 -*.test text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 -*.yml text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=2 - -# Exclude non-essential files from dist -/tests export-ignore -.github export-ignore -.php_cs export-ignore -.travis.yml export-ignore -appveyor.yml export-ignore -phpunit.xml.dist export-ignore diff --git a/vendor/composer/composer/.gitignore b/vendor/composer/composer/.gitignore deleted file mode 100644 index f9d78df..0000000 --- a/vendor/composer/composer/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -/.settings -/.project -/.buildpath -/composer.phar -/vendor -/nbproject -phpunit.xml -.vagrant -Vagrantfile -.idea -.php_cs.cache \ No newline at end of file diff --git a/vendor/composer/composer/CHANGELOG.md b/vendor/composer/composer/CHANGELOG.md deleted file mode 100644 index b788e7f..0000000 --- a/vendor/composer/composer/CHANGELOG.md +++ /dev/null @@ -1,855 +0,0 @@ -### [1.9.3] 2020-02-04 - - * Fixed GitHub deprecation of access_token query parameter, now using Authorization header - -### [1.9.2] 2020-01-14 - - * Fixed minor git driver bugs - * Fixed schema validation for version field to allow dev-* versions too - * Fixed external processes' output being formatted even though it should not - * Fixed issue with path repositories when trying to install feature branches - -### [1.9.1] 2019-11-01 - - * Fixed various credential handling issues with gitlab and github - * Fixed credentials being present in git remotes in Composer cache and vendor directory when not using SSH keys - * Fixed `composer why` not listing replacers as a reason something is present - * Fixed various PHP 7.4 compatibility issues - * Fixed root warnings always present in Docker containers, setting COMPOSER_ALLOW_SUPERUSER is not necessary anymore - * Fixed GitHub access tokens leaking into debug-verbosity output - * Fixed several edge case issues detecting GitHub, Bitbucket and GitLab repository types - * Fixed Composer asking if you want to use a composer.json in a parent directory when ran in non-interactive mode - * Fixed classmap autoloading issue finding classes located within a few non-PHP context blocks (?>... instead of proper colors - * Fixed 1.7.0-RC regression in output missing "Loading from cache" output on package install - -### [1.7.0-RC] 2018-07-24 - - * Changed default repository URL from packagist.org to repo.packagist.org, this might affect people with strict firewall rules - * Changed output from Updating to Downgrading when performing package downgrades, this might affect anything parsing output - * Several minor performance improvements - * Added basic authentication support for mercurial repos - * Added explicit `i` and `u` aliases for the `install` and `update` commands - * Added support for `show` command to output json format with --tree - * Added support for {glob,braces} support in the path repository's path argument - * Added support in `status` command for showing diffs in vendor dir even for packages installed as dist/zip archives - * Added `--remove-vcs` flag to `create-project` command to avoid prompting for keeping VCS files - * Added `--no-secure-http` flag to `create-project` command to bypass https (use at your own risk) - * Added `pre-command-run` event that lets plugins modify arguments - * Added RemoteFilesystem::getRemoteContents extension point - * Fixed setting scripts via `config` command - -### [1.6.5] 2018-05-04 - - * Fixed regression in 1.6.4 causing strange update behaviors with dev packages - * Fixed regression in 1.6.4 color support detection for Windows - * Fixed issues dealing with broken symlinks when switching branches and using path repositories - * Fixed JSON schema for package repositories - * Fixed issues on computers set to Turkish locale - * Fixed classmap parsing of files using short-open-tags when they are disabled in php - -### [1.6.4] 2018-04-13 - - * Security fixes in some edge case scenarios, recommended update for all users - * Fixed regression in version guessing of path repositories - * Fixed removing aliased packages from the repository, which might resolve some odd update bugs - * Fixed updating of package URLs for GitLab - * Fixed run-script --list failing when script handlers were defined - * Fixed init command not respecting the current php version when selecting package versions - * Fixed handling of uppercase package names in why/why-not commands - * Fixed exclude-from-classmap symlink handling - * Fixed filesystem permissions of PEAR binaries - * Improved performance of subversion repos - * Other minor fixes - -### [1.6.3] 2018-01-31 - - * Fixed GitLab downloads failing in some edge cases - * Fixed ctrl-C handling during create-project - * Fixed GitHub VCS repositories not prompting for a token in some conditions - * Fixed SPDX license identifiers being case sensitive - * Fixed and clarified a few dependency resolution error reporting strings - * Fixed SVN commit log fetching in verbose mode when using private repositories - -### [1.6.2] 2018-01-05 - - * Fixed more autoloader regressions - * Fixed support for updating dist refs in gitlab URLs - -### [1.6.1] 2018-01-04 - - * Fixed upgrade regression due to some autoloader cleanups - * Fixed some overly loose version constraints - -### [1.6.0] 2018-01-04 - - * Added support for SPDX license identifiers v3.0, deprecates GPL/LGPL/AGPL identifiers, which should now have a `-only` or `-or-later` suffix added. - * Added support for COMPOSER_MEMORY_LIMIT env var to make Composer set the PHP memory limit explicitly - * Added support for simple strings for the `bin` - * Fixed `check-platform-reqs` bug in version checking - -### [1.6.0-RC] 2017-12-19 - - * Improved performance of installs and updates from git clones when checking out known commits - * Added `check-platform-reqs` command that checks that your PHP and extensions versions match the platform requirements of the installed packages - * Added `--with-all-dependencies` to the `update` and `require` commands which updates all dependencies of the listed packages, including those that are direct root requirements - * Added `scripts-descriptions` key to composer.json to customize the description and document your custom commands - * Added support for the uppercase NO_PROXY env var - * Added support for COMPOSER_DEFAULT_{AUTHOR,LICENSE,EMAIL,VENDOR} env vars to pre-populate init command values - * Added support for local fossil repositories - * Added suggestions for alternative spellings when entering packages in `init` and `require` commands and nothing can be found - * Fixed installed.json data to be sorted alphabetically by package name - * Fixed compatibility with Symfony 4.x components that Composer uses - -### [1.5.6] - 2017-12-18 - - * Fixed root package version guessed when a tag is checked out - * Fixed support for GitLab repos hosted on non-standard ports - * Fixed regression in require command when requiring unstable packages, part 3 - -### [1.5.5] - 2017-12-01 - - * Fixed regression in require command when requiring unstable packages, part 2 - -### [1.5.4] - 2017-12-01 - - * Fixed regression in require command when requiring unstable packages - -### [1.5.3] - 2017-11-30 - - * Fixed require/remove commands reverting the composer.json change when a non-solver-related error occurs - * Fixed GitLabDriver to support installations of GitLab not at the root of the domain - * Fixed create-project not following the optimize-autoloader flag of the root package - * Fixed Authorization header being forwarded across domains after a redirect - * Improved some error messages for clarity - -### [1.5.2] - 2017-09-11 - - * Fixed GitLabDriver looping endlessly in some conditions - * Fixed GitLabDriver support for unauthenticated requests - * Fixed GitLab zip downloads not triggering credentials prompt if unauthenticated - * Fixed path repository support of COMPOSER_ROOT_VERSION, it now applies to all path repos within the same git repository - * Fixed path repository handling of copies to avoid copying VCS files and others - * Fixed sub-directory call to ignore list and create-project commands as well as calls to Composer using --working-dir - * Fixed invalid warning appearing when calling `remove` on an non-stable package - -### [1.5.1] - 2017-08-09 - - * Fixed regression in GitLabDriver with repos containing >100 branches or tags - * Fixed sub-directory call support to respect the COMPOSER env var - -### [1.5.0] - 2017-08-08 - - * Changed the package install order to ensure that plugins are always installed as soon as possible - * Added ability to call composer from within sub-directories of a project - * Added support for GitLab API v4 - * Added support for GitLab sub-groups - * Added some more rules to composer validate - * Added support for reading the `USER` env when guessing the username in `composer init` - * Added warning when uncompressing files with the same name but difference cases on case insensitive filesystems - * Added `htaccess-protect` option / `COMPOSER_HTACCESS_PROTECT` env var to disable the .htaccess creation in home dir (defaults to true) - * Improved `clear-cache` command - * Minor improvements/fixes and many documentation updates - -### [1.4.3] - 2017-08-06 - - * Fixed GitLab URLs - * Fixed root package version detection using latest git versions - * Fixed inconsistencies in date format in composer.lock when installing from source - * Fixed Mercurial support regression - * Fixed exclude-from-classmap not being applied when autoloading files for Composer plugins - * Fixed exclude-from-classmap being ignored when cwd has the wrong case on case insensitive filesystems - * Fixed several other minor issues - -### [1.4.2] - 2017-05-17 - - * Fixed Bitbucket API handler parsing old deleted branches in hg repos - * Fixed regression in gitlab downloads - * Fixed output inconsistencies - * Fixed unicode handling in `init` command for author names - * Fixed useless warning when doing partial updates/removes on packages that are not currently installed - * Fixed xdebug disabling issue when combined with disable_functions and allow_url_fopen CLI overrides - -### [1.4.1] - 2017-03-10 - - * Fixed `apcu-autoloader` config option being ignored in `dump-autoload` command - * Fixed json validation not allowing boolean for trunk-path, branches-path and tags-path in svn repos - * Fixed json validation not allowing repository URLs without scheme - -### [1.4.0] - 2017-03-08 - - * Improved memory usage of dependency solver - * Added `--format json` option to the `outdated` and `show` command to get machine readable package listings - * Added `--ignore-filters` flag to `archive` command to bypass the .gitignore and co - * Added support for `outdated` output without ansi colors - * Added support for Bitbucket API v2 - * Changed the require command to follow minimum-stability / prefer-stable values when picking a version - * Fixed regression when using composer in a Mercurial repository - -### [1.3.3] - 2017-03-08 - - * **Capifony users beware**: This release has output format tweaks that mess up capifony interactive mode, see #6233 - * Improved baseline psr-4 autoloader performance for projects with many nested namespaces configured - * Fixed issues with gitlab API access when the token had insufficient permissions - * Fixed some HHVM strict type issues - * Fixed version guessing of headless git checkouts in some conditions - * Fixed compatibility with subversion 1.8 - * Fixed version guessing not working with svn/hg - * Fixed script/exec errors not being output correctly - * Fixed PEAR repository bug with pear.php.net - -### [1.3.2] - 2017-01-27 - - * Added `COMPOSER_BINARY` env var that is defined within the scope of a Composer run automatically with the path to the phar file - * Fixed create-project ending in a detached HEAD when installing aliased packages - * Fixed composer show not returning non-zero exit code when the package does not exist - * Fixed `@composer` handling in scripts when --working-dir is used together with it - * Fixed private-GitLab handling of repos with dashes in them - -### [1.3.1] - 2017-01-07 - - * Fixed dist downloads from Bitbucket - * Fixed some regressions related to xdebug disabling - * Fixed `--minor-only` flag in `outdated` command - * Fixed handling of config.platform.php which did not replace other php-* package's versions - -### [1.3.0] - 2016-12-24 - - * Fixed handling of annotated git tags vs lightweight tags leading to useless updates sometimes - * Fixed ext-xdebug not being require-able anymore due to automatic xdebug disabling - * Fixed case insensitivity of remove command - -### [1.3.0-RC] - 2016-12-11 - - * Added workaround for xdebug performance impact by restarting PHP without xdebug automatically in case it is enabled - * Added `--minor-only` to the `outdated` command to only show updates to minor versions and ignore new major versions - * Added `--apcu-autoloader` to the `update`/`install` commands and `--apcu` to `dump-autoload` to enable an APCu-caching autoloader, which can be more efficient than --classmap-authoritative if you attempt to autoload many classes that do not exist, or if you can not use authoritative classmaps for some reason - * Added summary of operations to be executed before they run, and made execution output more compact - * Added `php-debug` and `php-zts` virtual platform packages - * Added `gitlab-token` auth config for GitLab private tokens - * Added `--strict` to the `outdated` command to return a non-zero exit code when there are outdated packages - * Added ability to call php scripts using the current php interpreter (instead of finding php in PATH by default) in script handlers via `@php ...` - * Added `COMPOSER_ALLOW_XDEBUG` env var to circumvent the xdebug-disabling behavior - * Added `COMPOSER_MIRROR_PATH_REPOS` env var to force mirroring of path repositories vs symlinking - * Added `COMPOSER_DEV_MODE` env var that is set by Composer to forward the dev mode to script handlers - * Fixed support for git 2.11 - * Fixed output from zip and rar leaking out when an error occurred - * Removed `hash` from composer.lock, only `content-hash` is now used which should reduce conflicts - * Minor fixes and performance improvements - -### [1.2.4] - 2016-12-06 - - * Fixed regression in output handling of scripts from 1.2.3 - * Fixed support for LibreSSL detection as lib-openssl - * Fixed issue with Zend Guard in the autoloader bootstrapping - * Fixed support for loading partial provider repositories - -### [1.2.3] - 2016-12-01 - - * Fixed bug in HgDriver failing to identify BitBucket repositories - * Fixed support for loading partial provider repositories - -### [1.2.2] - 2016-11-03 - - * Fixed selection of packages based on stability to be independent from package repository order - * Fixed POST_DEPENDENCIES_SOLVING not containing some operations in edge cases - * Fixed issue handling GitLab URLs containing dots and other special characters - * Fixed issue on Windows when running composer at the root of a drive - * Minor fixes - -### [1.2.1] - 2016-09-12 - - * Fixed edge case issues with the static autoloader - * Minor fixes - -### [1.2.0] - 2016-07-19 - - * Security: Fixed [httpoxy](https://httpoxy.org/) vulnerability - * Fixed `home` command to avoid rogue output on unix - * Fixed output of git clones to clearly state when clones are from cache - * (from 1.2 RC) Fixed ext-network-ipv6 to be php-ipv6 - -### [1.2.0-RC] - 2016-07-04 - - * Added caching of git repositories if you have git 2.3+ installed. Repositories will now be cached once and then cloned from local cache so subsequent installs should be faster - * Added detection of HEAD changes to the `status` command. If you `git checkout X` in a vendor directory for example it will tell you that it is not at the version that was installed - * Added a virtual `php-ipv6` extension to require PHP compiled with IPv6 support - * Added `--no-suggest` to `install` and `update` commands to skip output of suggestions at the end - * Added `--type` to the `search` command to restrict to a given package type - * Added fossil support as alternative to git/svn/.. for package downloads - * Improved BitBucket OAuth support - * Added support for blocking cache operations using COMPOSER_CACHE_DIR=/dev/null (or NUL on windows) - * Added support for using declare(strict_types=1) in plugins - * Added `--prefer-stable` and `--prefer-lowest` to the `require` command - * Added `--no-scripts` to the `require` and `remove` commands - * Added `_comment` top level key to the schema to endorse using it as a place to store comments (it can be a string or array of strings) - * Added support for justinrainbow/json-schema 2.0 - * Fixed binaries not being re-installed if deleted by users or the bin-dir changes. `update` and `install` will now re-install them - * Many minor UX and docs improvements - -### [1.1.3] - 2016-06-26 - - * Fixed bitbucket oauth instructions - * Fixed version parsing issue - * Fixed handling of bad proxies that modify JSON content on the fly - -### [1.1.2] - 2016-05-31 - - * Fixed degraded mode issue when accessing packagist.org - * Fixed GitHub access_token being added on subsequent requests in case of redirections - * Fixed exclude-from-classmap not working in some circumstances - * Fixed openssl warning preventing the use of config command for disabling tls - -### [1.1.1] - 2016-05-17 - - * Fixed regression in handling of #reference which made it update every time - * Fixed dev platform requirements being required even in --no-dev install from a lock file - * Fixed parsing of extension versions that do not follow valid numbers, we now try to parse x.y.z and ignore the rest - * Fixed exact constraints warnings appearing for 0.x versions - * Fixed regression in the `remove` command - -### [1.1.0] - 2016-05-10 - - * Added fallback to SSH for https bitbucket URLs - * Added BaseCommand::isProxyCommand that can be overridden to mark a command as being a mere proxy, which helps avoid duplicate warnings etc on composer startup - * Fixed archiving generating long paths in zip files on Windows - -### [1.1.0-RC] - 2016-04-29 - - * Added ability for plugins to register their own composer commands - * Optimized the autoloader initialization using static loading on PHP 5.6 and above, this reduces the load time for large classmaps to almost nothing - * Added `--latest` to `show` command to show the latest version available of your dependencies - * Added `--outdated` to `show` command an `composer outdated` alias for it, to show only packages in need of update - * Added `--direct` to `show` and `outdated` commands to show only your direct dependencies in the listing - * Added support for editing all top-level properties (name, minimum-stability, ...) as well as extra values via the `config` command - * Added abandoned state warning to the `show` and `outdated` commands when listing latest packages - * Added support for `~/` and `$HOME/` in the path repository paths - * Added support for wildcards in the `show` command package filter, e.g. `composer show seld/*` - * Added ability to call composer itself from scripts via `@composer ...` - * Added untracked files detection to the `status` command - * Added warning to `validate` command when using exact-version requires - * Added warning once per domain when accessing insecure URLs with secure-http disabled - * Added a dependency on composer/ca-bundle (extracted CA bundle management to a standalone lib) - * Added support for empty directories when archiving to tar - * Added an `init` event for plugins to react to, which occurs right after a Composer instance is fully initialized - * Added many new detections of problems in the `why-not`/`prohibits` command to figure out why something does not get installed in the expected version - * Added a deprecation notice for script event listeners that use legacy script classes - * Fixed abandoned state not showing up if you had a package installed before it was marked abandoned - * Fixed --no-dev updates creating an incomplete lock file, everything is now always resolved on update - * Fixed partial updates in case the vendor dir was not up to date with the lock file - -### [1.0.3] - 2016-04-29 - - * Security: Fixed possible command injection from the env vars into our sudo detection - * Fixed interactive authentication with gitlab - * Fixed class name replacement in plugins - * Fixed classmap generation mistakenly detecting anonymous classes - * Fixed auto-detection of stability flags in complex constraints like `2.0-dev || ^1.5` - * Fixed content-length handling when redirecting to very small responses - -### [1.0.2] - 2016-04-21 - - * Fixed regression in 1.0.1 on systems with mbstring.func_overload enabled - * Fixed regression in 1.0.1 that made dev packages update to the latest reference even if not whitelisted in a partial update - * Fixed init command ignoring the COMPOSER env var for choosing the json file name - * Fixed error reporting bug when the dependency resolution fails - * Fixed handling of `$` sign in composer config command in some cases it could corrupt the json file - -### [1.0.1] - 2016-04-18 - - * Fixed URL updating when a package's URL changes, composer.lock now contains the right URL including correct reference - * Fixed URL updating of the origin git remote as well for packages installed as git clone - * Fixed binary .bat files generated from linux being incompatible with windows cmd - * Fixed handling of paths with trailing slashes in path repository - * Fixed create-project not using platform config when selecting a package - * Fixed self-update not showing the channel it uses to perform the update - * Fixed file downloads not failing loudly when the content does not match the Content-Length header - * Fixed secure-http detecting some malformed URLs as insecure - * Updated CA bundle - -### [1.0.0] - 2016-04-05 - - * Added support for bitbucket-oauth configuration - * Added warning when running composer as super user, set COMPOSER_ALLOW_SUPERUSER=1 to hide the warning if you really must - * Added PluginManager::getGlobalComposer getter to retrieve the global instance (which can be null!) - * Fixed dependency solver error reporting in many cases it now shows you proper errors instead of just saying a package does not exist - * Fixed output of failed downloads appearing as 100% done instead of Failed - * Fixed handling of empty directories when archiving, they are not skipped anymore - * Fixed installation of broken plugins corrupting the vendor state when combined with symlinked path repositories - -### [1.0.0-beta2] - 2016-03-27 - - * Break: The `install` command now turns into an `update` command automatically if you have no composer.lock. This was done only half-way before which caused inconsistencies - * Break: By default the `remove` command now removes dependencies as well, and --update-with-dependencies is deprecated. Use --no-update-with-dependencies to get old behavior - * Added support for update channels in `self-update`. All users will now update to stable builds by default. Run `self-update` with `--snapshot`, `--preview` or `--stable` to switch between update channels. - * Added support for SSL_CERT_DIR env var and openssl.capath ini value - * Added some conflict detection in `why-not` command - * Added suggestion of root package's suggests in `create-project` command - * Fixed `create-project` ignoring --ignore-platform-reqs when choosing a version of the package - * Fixed `search` command in a directory without composer.json - * Fixed path repository handling of symlinks on windows - * Fixed PEAR repo handling to prefer HTTPS mirrors over HTTP ones - * Fixed handling of Path env var on Windows, only PATH was accepted before - * Small error reporting and docs improvements - -### [1.0.0-beta1] - 2016-03-03 - - * Break: By default we now disable any non-secure protocols (http, git, svn). This may lead to issues if you rely on those. See `secure-http` config option. - * Break: `show` / `list` command now only show installed packages by default. An `--all` option is added to show all packages. - * Added VCS repo support for the GitLab API, see also `gitlab-oauth` and `gitlab-domains` config options - * Added `prohibits` / `why-not` command to show what blocks an upgrade to a given package:version pair - * Added --tree / -t to the `show` command to see all your installed packages in a tree view - * Added --interactive / -i to the `update` command, which lets you pick packages to update interactively - * Added `exec` command to run binaries while having bin-dir in the PATH for convenience - * Added --root-reqs to the `update` command to update only your direct, first degree dependencies - * Added `cafile` and `capath` config options to control HTTPS certificate authority - * Added pubkey verification of composer.phar when running self-update - * Added possibility to configure per-package `preferred-install` types for more flexibility between prefer-source and prefer-dist - * Added unpushed-changes detection when updating dependencies and in the `status` command - * Added COMPOSER_AUTH env var that lets you pass a json configuration like the auth.json file - * Added `secure-http` and `disable-tls` config options to control HTTPS/HTTP - * Added warning when Xdebug is enabled as it reduces performance quite a bit, hide it with COMPOSER_DISABLE_XDEBUG_WARN=1 if you must - * Added duplicate key detection when loading composer.json - * Added `sort-packages` config option to force sorting of the requirements when using the `require` command - * Added support for the XDG Base Directory spec on linux - * Added XzDownloader for xz file support - * Fixed SSL support to fully verify peers in all PHP versions, unsecure HTTP is also disabled by default - * Fixed stashing and cleaning up of untracked files when updating packages - * Fixed plugins being enabled after installation even when --no-plugins - * Many small bug fixes and additions - -### [1.0.0-alpha11] - 2015-11-14 - - * Added config.platform to let you specify what your target environment looks like and make sure you do not inadvertently install dependencies that would break it - * Added `exclude-from-classmap` in the autoload config that lets you ignore sub-paths of classmapped directories, or psr-0/4 directories when building optimized autoloaders - * Added `path` repository type to install/symlink packages from local paths - * Added possibility to reference script handlers from within other handlers using @script-name to reduce duplication - * Added `suggests` command to show what packages are suggested, use -v to see more details - * Added `content-hash` inside the composer.lock to restrict the warnings about outdated lock file to some specific changes in the composer.json file - * Added `archive-format` and `archive-dir` config options to specify default values for the archive command - * Added --classmap-authoritative to `install`, `update`, `require`, `remove` and `dump-autoload` commands, forcing the optimized classmap to be authoritative - * Added -A / --with-dependencies to the `validate` command to allow validating all your dependencies recursively - * Added --strict to the `validate` command to treat any warning as an error that then returns a non-zero exit code - * Added a dependency on composer/semver, which is the externalized lib for all the version constraints parsing and handling - * Added support for classmap autoloading to load plugin classes and script handlers - * Added `bin-compat` config option that if set to `full` will create .bat proxy for binaries even if Composer runs in a linux VM - * Added SPDX 2.0 support, and externalized that in a composer/spdx-licenses lib - * Added warnings when the classmap autoloader finds duplicate classes - * Added --file to the `archive` command to choose the filename - * Added Ctrl+C handling in create-project to cancel the operation cleanly - * Fixed version guessing to use ^ always, default to stable versions, and avoid versions that require a higher php version than you have - * Fixed the lock file switching back and forth between old and new URL when a package URL is changed and many people run updates - * Fixed partial updates updating things they shouldn't when the current vendor dir was out of date with the lock file - * Fixed PHAR file creation to be more reproducible and always generate the exact same phar file from a given source - * Fixed issue when checking out git branches or tags that are also the name of a file in the repo - * Many minor fixes and documentation additions and UX improvements - -### [1.0.0-alpha10] - 2015-04-14 - - * Break: The following event classes are deprecated and you should update your script handlers to use the new ones in type hints: - - `Composer\Script\CommandEvent` is deprecated, use `Composer\Script\Event` - - `Composer\Script\PackageEvent` is deprecated, use `Composer\Installer\PackageEvent` - * Break: Output is now split between stdout and stderr. Any irrelevant output to each command is on stderr as per unix best practices. - * Added support for npm-style semver operators (`^` and `-` ranges, ` ` = AND, `||` = OR) - * Added --prefer-lowest to `update` command to allow testing a package with the lowest declared dependencies - * Added support for parsing semver build metadata `+anything` at the end of versions - * Added --sort-packages option to `require` command for sorting dependencies - * Added --no-autoloader to `install` and `update` commands to skip autoload generation - * Added --list to `run-script` command to see available scripts - * Added --absolute to `config` command to get back absolute paths - * Added `classmap-authoritative` config option, if enabled only the classmap info will be used by the composer autoloader - * Added support for branch-alias on numeric branches - * Added support for the `https_proxy`/`HTTPS_PROXY` env vars used only for https URLs - * Added support for using real composer repos as local paths in `create-project` command - * Added --no-dev to `licenses` command - * Added support for PHP 7.0 nightly builds - * Fixed detection of stability when parsing multiple constraints - * Fixed installs from lock file containing updated composer.json requirement - * Fixed the autoloader suffix in vendor/autoload.php changing in every build - * Many minor fixes, documentation additions and UX improvements - -### [1.0.0-alpha9] - 2014-12-07 - - * Added `remove` command to do the reverse of `require` - * Added --ignore-platform-reqs to `install`/`update` commands to install even if you are missing a php extension or have an invalid php version - * Added a warning when abandoned packages are being installed - * Added auto-selection of the version constraint in the `require` command, which can now be used simply as `composer require foo/bar` - * Added ability to define custom composer commands using scripts - * Added `browse` command to open a browser to the given package's repo URL (or homepage with `-H`) - * Added an `autoload-dev` section to declare dev-only autoload rules + a --no-dev flag to dump-autoload - * Added an `auth.json` file, with `store-auths` config option - * Added a `http-basic` config option to store login/pwds to hosts - * Added failover to source/dist and vice-versa in case a download method fails - * Added --path (-P) flag to the show command to see the install path of packages - * Added --update-with-dependencies and --update-no-dev flags to the require command - * Added `optimize-autoloader` config option to force the `-o` flag from the config - * Added `clear-cache` command - * Added a GzipDownloader to download single gzipped files - * Added `ssh` support in the `github-protocols` config option - * Added `pre-dependencies-solving` and `post-dependencies-solving` events - * Added `pre-archive-cmd` and `post-archive-cmd` script events to the `archive` command - * Added a `no-api` flag to GitHub VCS repos to skip the API but still get zip downloads - * Added http-basic auth support for private git repos not on github - * Added support for autoloading `.hh` files when running HHVM - * Added support for PHP 5.6 - * Added support for OTP auth when retrieving a GitHub API key - * Fixed isolation of `files` autoloaded scripts to ensure they can not affect anything - * Improved performance of solving dependencies - * Improved SVN and Perforce support - * A boatload of minor fixes, documentation additions and UX improvements - -### [1.0.0-alpha8] - 2014-01-06 - - * Break: The `install` command now has --dev enabled by default. --no-dev can be used to install without dev requirements - * Added `composer-plugin` package type to allow extensibility, and deprecated `composer-installer` - * Added `psr-4` autoloading support and deprecated `target-dir` since it is a better alternative - * Added --no-plugins flag to replace --no-custom-installers where available - * Added `global` command to operate Composer in a user-global directory - * Added `licenses` command to list the license of all your dependencies - * Added `pre-status-cmd` and `post-status-cmd` script events to the `status` command - * Added `post-root-package-install` and `post-create-project-cmd` script events to the `create-project` command - * Added `pre-autoload-dump` script event - * Added --rollback flag to self-update - * Added --no-install flag to create-project to skip installing the dependencies - * Added a `hhvm` platform package to require Facebook's HHVM implementation of PHP - * Added `github-domains` config option to allow using GitHub Enterprise with Composer's GitHub support - * Added `prepend-autoloader` config option to allow appending Composer's autoloader instead of the default prepend behavior - * Added Perforce support to the VCS repository - * Added a vendor/composer/autoload_files.php file that lists all files being included by the files autoloader - * Added support for the `no_proxy` env var and other proxy support improvements - * Added many robustness tweaks to make sure zip downloads work more consistently and corrupted caches are invalidated - * Added the release date to `composer -V` output - * Added `autoloader-suffix` config option to allow overriding the randomly generated autoloader class suffix - * Fixed BitBucket API usage - * Fixed parsing of inferred stability flags that are more stable than the minimum stability - * Fixed installation order of plugins/custom installers - * Fixed tilde and wildcard version constraints to be more intuitive regarding stabilities - * Fixed handling of target-dir changes when updating packages - * Improved performance of the class loader - * Improved memory usage and performance of solving dependencies - * Tons of minor bug fixes and improvements - -### [1.0.0-alpha7] - 2013-05-04 - - * Break: For forward compatibility, you should change your deployment scripts to run `composer install --no-dev`. The install command will install dev dependencies by default starting in the next release - * Break: The `update` command now has --dev enabled by default. --no-dev can be used to update without dev requirements, but it will create an incomplete lock file and is discouraged - * Break: Removed support for lock files created before 2012-09-15 due to their outdated unusable format - * Added `prefer-stable` flag to pick stable packages over unstable ones when possible - * Added `preferred-install` config option to always enable --prefer-source or --prefer-dist - * Added `diagnose` command to to system/network checks and find common problems - * Added wildcard support in the update whitelist, e.g. to update all packages of a vendor do `composer update vendor/*` - * Added `archive` command to archive the current directory or a given package - * Added `run-script` command to manually trigger scripts - * Added `proprietary` as valid license identifier for non-free code - * Added a `php-64bit` platform package that you can require to force a 64bit php - * Added a `lib-ICU` platform package - * Added a new official package type `project` for project-bootstrapping packages - * Added zip/dist local cache to speed up repetitive installations - * Added `post-autoload-dump` script event - * Added `Event::getDevMode` to let script handlers know if dev requirements are being installed - * Added `discard-changes` config option to control the default behavior when updating "dirty" dependencies - * Added `use-include-path` config option to make the autoloader look for files in the include path too - * Added `cache-ttl`, `cache-files-ttl` and `cache-files-maxsize` config option - * Added `cache-dir`, `cache-files-dir`, `cache-repo-dir` and `cache-vcs-dir` config option - * Added support for using http(s) authentication to non-github repos - * Added support for using multiple autoloaders at once (e.g. PHPUnit + application both using Composer autoloader) - * Added support for .inc files for classmap autoloading (legacy support, do not do this on new projects!) - * Added support for version constraints in show command, e.g. `composer show monolog/monolog 1.4.*` - * Added support for svn repositories containing packages in a deeper path (see package-path option) - * Added an `artifact` repository to scan a directory containing zipped packages - * Added --no-dev flag to `install` and `update` commands - * Added --stability (-s) flag to create-project to lower the required stability - * Added --no-progress to `install` and `update` to hide the progress indicators - * Added --available (-a) flag to the `show` command to display only available packages - * Added --name-only (-N) flag to the `show` command to show only package names (one per line, no formatting) - * Added --optimize-autoloader (-o) flag to optimize the autoloader from the `install` and `update` commands - * Added -vv and -vvv flags to get more verbose output, can be useful to debug some issues - * Added COMPOSER_NO_INTERACTION env var to do the equivalent of --no-interaction (should be set on build boxes, CI, PaaS) - * Added PHP 5.2 compatibility to the autoloader configuration files so they can be used to configure another autoloader - * Fixed handling of platform requirements of the root package when installing from lock - * Fixed handling of require-dev dependencies - * Fixed handling of unstable packages that should be downgraded to stable packages when updating to new version constraints - * Fixed parsing of the `~` operator combined with unstable versions - * Fixed the `require` command corrupting the json if the new requirement was invalid - * Fixed support of aliases used together with `#` constraints - * Improved output of dependency solver problems by grouping versions of a package together - * Improved performance of classmap generation - * Improved mercurial support in various places - * Improved lock file format to minimize unnecessary diffs - * Improved the `config` command to support all options - * Improved the coverage of the `validate` command - * Tons of minor bug fixes and improvements - -### [1.0.0-alpha6] - 2012-10-23 - - * Schema: Added ability to pass additional options to repositories (i.e. ssh keys/client certificates to secure private repos) - * Schema: Added a new `~` operator that should be preferred over `>=`, see http://getcomposer.org/doc/01-basic-usage.md#package-versions - * Schema: Version constraints `` flags in require for restricting packages to a certain stability - * Schema: Removed `recommend` - * Schema: `suggest` is now informational and can use any description for a package, not only a constraint - * Break: vendor/.composer/autoload.php has been moved to vendor/autoload.php, other files are now in vendor/composer/ - * Added caching of repository metadata (faster startup times & failover if packagist is down) - * Added removal of packages that are not needed anymore - * Added include_path support for legacy projects that are full of require_once statements - * Added installation notifications API to allow better statistics on Composer repositories - * Added support for proxies that require authentication - * Added support for private github repositories over https - * Added autoloading support for root packages that use target-dir - * Added awareness of the root package presence and support for it's provide/replace/conflict keys - * Added IOInterface::isDecorated to test for colored output support - * Added validation of licenses based on the [SPDX registry](https://spdx.org/licenses/) - * Improved repository protocol to have large cacheable parts - * Fixed various bugs relating to package aliasing, proxy configuration, binaries - * Various bug fixes and docs improvements - -### [1.0.0-alpha2] - 2012-04-03 - - * Added `create-project` command to install a project from scratch with composer - * Added automated `classmap` autoloading support for non-PSR-0 compliant projects - * Added human readable error reporting when deps can not be solved - * Added support for private GitHub and SVN repositories (use --no-interaction for CI) - * Added "file" downloader type to download plain files - * Added support for authentication with svn repositories - * Added autoload support for PEAR repositories - * Improved clones from GitHub which now automatically select between git/https/http protocols - * Improved `validate` command to give more feedback - * Improved the `search` & `show` commands output - * Removed dependency on filter_var - * Various robustness & error handling improvements, docs fixes and more bug fixes - -### 1.0.0-alpha1 - 2012-03-01 - - * Initial release - -[1.9.3]: https://github.com/composer/composer/compare/1.9.2...1.9.3 -[1.9.2]: https://github.com/composer/composer/compare/1.9.1...1.9.2 -[1.9.1]: https://github.com/composer/composer/compare/1.9.0...1.9.1 -[1.9.0]: https://github.com/composer/composer/compare/1.8.6...1.9.0 -[1.8.6]: https://github.com/composer/composer/compare/1.8.5...1.8.6 -[1.8.5]: https://github.com/composer/composer/compare/1.8.4...1.8.5 -[1.8.4]: https://github.com/composer/composer/compare/1.8.3...1.8.4 -[1.8.3]: https://github.com/composer/composer/compare/1.8.2...1.8.3 -[1.8.2]: https://github.com/composer/composer/compare/1.8.1...1.8.2 -[1.8.1]: https://github.com/composer/composer/compare/1.8.0...1.8.1 -[1.8.0]: https://github.com/composer/composer/compare/1.7.3...1.8.0 -[1.7.3]: https://github.com/composer/composer/compare/1.7.2...1.7.3 -[1.7.2]: https://github.com/composer/composer/compare/1.7.1...1.7.2 -[1.7.1]: https://github.com/composer/composer/compare/1.7.0...1.7.1 -[1.7.0]: https://github.com/composer/composer/compare/1.7.0-RC...1.7.0 -[1.7.0-RC]: https://github.com/composer/composer/compare/1.6.5...1.7.0-RC -[1.6.5]: https://github.com/composer/composer/compare/1.6.4...1.6.5 -[1.6.4]: https://github.com/composer/composer/compare/1.6.3...1.6.4 -[1.6.3]: https://github.com/composer/composer/compare/1.6.2...1.6.3 -[1.6.2]: https://github.com/composer/composer/compare/1.6.1...1.6.2 -[1.6.1]: https://github.com/composer/composer/compare/1.6.0...1.6.1 -[1.6.0]: https://github.com/composer/composer/compare/1.6.0-RC...1.6.0 -[1.6.0-RC]: https://github.com/composer/composer/compare/1.5.6...1.6.0-RC -[1.5.6]: https://github.com/composer/composer/compare/1.5.5...1.5.6 -[1.5.5]: https://github.com/composer/composer/compare/1.5.4...1.5.5 -[1.5.4]: https://github.com/composer/composer/compare/1.5.3...1.5.4 -[1.5.3]: https://github.com/composer/composer/compare/1.5.2...1.5.3 -[1.5.2]: https://github.com/composer/composer/compare/1.5.1...1.5.2 -[1.5.1]: https://github.com/composer/composer/compare/1.5.0...1.5.1 -[1.5.0]: https://github.com/composer/composer/compare/1.4.3...1.5.0 -[1.4.3]: https://github.com/composer/composer/compare/1.4.2...1.4.3 -[1.4.2]: https://github.com/composer/composer/compare/1.4.1...1.4.2 -[1.4.1]: https://github.com/composer/composer/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/composer/composer/compare/1.3.3...1.4.0 -[1.3.3]: https://github.com/composer/composer/compare/1.3.2...1.3.3 -[1.3.2]: https://github.com/composer/composer/compare/1.3.1...1.3.2 -[1.3.1]: https://github.com/composer/composer/compare/1.3.0...1.3.1 -[1.3.0]: https://github.com/composer/composer/compare/1.3.0-RC...1.3.0 -[1.3.0-RC]: https://github.com/composer/composer/compare/1.2.4...1.3.0-RC -[1.2.4]: https://github.com/composer/composer/compare/1.2.3...1.2.4 -[1.2.3]: https://github.com/composer/composer/compare/1.2.2...1.2.3 -[1.2.2]: https://github.com/composer/composer/compare/1.2.1...1.2.2 -[1.2.1]: https://github.com/composer/composer/compare/1.2.0...1.2.1 -[1.2.0]: https://github.com/composer/composer/compare/1.2.0-RC...1.2.0 -[1.2.0-RC]: https://github.com/composer/composer/compare/1.1.3...1.2.0-RC -[1.1.3]: https://github.com/composer/composer/compare/1.1.2...1.1.3 -[1.1.2]: https://github.com/composer/composer/compare/1.1.1...1.1.2 -[1.1.1]: https://github.com/composer/composer/compare/1.1.0...1.1.1 -[1.1.0]: https://github.com/composer/composer/compare/1.0.3...1.1.0 -[1.1.0-RC]: https://github.com/composer/composer/compare/1.0.3...1.1.0-RC -[1.0.3]: https://github.com/composer/composer/compare/1.0.2...1.0.3 -[1.0.2]: https://github.com/composer/composer/compare/1.0.1...1.0.2 -[1.0.1]: https://github.com/composer/composer/compare/1.0.0...1.0.1 -[1.0.0]: https://github.com/composer/composer/compare/1.0.0-beta2...1.0.0 -[1.0.0-beta2]: https://github.com/composer/composer/compare/1.0.0-beta1...1.0.0-beta2 -[1.0.0-beta1]: https://github.com/composer/composer/compare/1.0.0-alpha11...1.0.0-beta1 -[1.0.0-alpha11]: https://github.com/composer/composer/compare/1.0.0-alpha10...1.0.0-alpha11 -[1.0.0-alpha10]: https://github.com/composer/composer/compare/1.0.0-alpha9...1.0.0-alpha10 -[1.0.0-alpha9]: https://github.com/composer/composer/compare/1.0.0-alpha8...1.0.0-alpha9 -[1.0.0-alpha8]: https://github.com/composer/composer/compare/1.0.0-alpha7...1.0.0-alpha8 -[1.0.0-alpha7]: https://github.com/composer/composer/compare/1.0.0-alpha6...1.0.0-alpha7 -[1.0.0-alpha6]: https://github.com/composer/composer/compare/1.0.0-alpha5...1.0.0-alpha6 -[1.0.0-alpha5]: https://github.com/composer/composer/compare/1.0.0-alpha4...1.0.0-alpha5 -[1.0.0-alpha4]: https://github.com/composer/composer/compare/1.0.0-alpha3...1.0.0-alpha4 -[1.0.0-alpha3]: https://github.com/composer/composer/compare/1.0.0-alpha2...1.0.0-alpha3 -[1.0.0-alpha2]: https://github.com/composer/composer/compare/1.0.0-alpha1...1.0.0-alpha2 diff --git a/vendor/composer/composer/LICENSE b/vendor/composer/composer/LICENSE deleted file mode 100644 index 62ecfd8..0000000 --- a/vendor/composer/composer/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/composer/composer/PORTING_INFO b/vendor/composer/composer/PORTING_INFO deleted file mode 100644 index 54d86b2..0000000 --- a/vendor/composer/composer/PORTING_INFO +++ /dev/null @@ -1,39 +0,0 @@ - * add rule - * p = direct literal; always < 0 for installed rpm rules - * d, if < 0 direct literal, if > 0 offset into whatprovides, if == 0 rule is assertion (look at p only) - * - * - * A requires b, b provided by B1,B2,B3 => (-A|B1|B2|B3) - * - * p < 0 : pkg id of A - * d > 0 : Offset in whatprovidesdata (list of providers of b) - * - * A conflicts b, b provided by B1,B2,B3 => (-A|-B1), (-A|-B2), (-A|-B3) - * p < 0 : pkg id of A - * d < 0 : Id of solvable (e.g. B1) - * - * d == 0: unary rule, assertion => (A) or (-A) - * - * Install: p > 0, d = 0 (A) user requested install - * Remove: p < 0, d = 0 (-A) user requested remove (also: uninstallable) - * Requires: p < 0, d > 0 (-A|B1|B2|...) d: - * Updates: p > 0, d > 0 (A|B1|B2|...) d: - * Conflicts: p < 0, d < 0 (-A|-B) either p (conflict issuer) or d (conflict provider) (binary rule) - * also used for obsoletes - * ?: p > 0, d < 0 (A|-B) - * No-op ?: p = 0, d = 0 (null) (used as policy rule placeholder) - * - * resulting watches: - * ------------------ - * Direct assertion (no watch needed)( if d <0 ) --> d = 0, w1 = p, w2 = 0 - * Binary rule: p = first literal, d = 0, w2 = second literal, w1 = p - * every other : w1 = p, w2 = whatprovidesdata[d]; - * Disabled rule: w1 = 0 - * - * always returns a rule for non-rpm rules - - - -p > 0, d = 0, (A), w1 = p, w2 = 0 -p < 0, d = 0, (-A), w1 = p, w2 = 0 -p !=0, d = 0, (p|q), w1 = p, w2 = q diff --git a/vendor/composer/composer/README.md b/vendor/composer/composer/README.md deleted file mode 100644 index c538df8..0000000 --- a/vendor/composer/composer/README.md +++ /dev/null @@ -1,62 +0,0 @@ -Composer - Dependency Management for PHP -======================================== - -Composer helps you declare, manage, and install dependencies of PHP projects. - -See [https://getcomposer.org/](https://getcomposer.org/) for more information and documentation. - -[![Build Status](https://travis-ci.org/composer/composer.svg?branch=master)](https://travis-ci.org/composer/composer) - -Installation / Usage --------------------- - -Download and install Composer by following the [official instructions](https://getcomposer.org/download/). - -For usage, see [the documentation](https://getcomposer.org/doc/). - -Packages --------- - -Find packages on [Packagist](https://packagist.org). - -Community ---------- - -IRC channels are on irc.freenode.org: [#composer](irc://irc.freenode.org/composer) -for users and [#composer-dev](irc://irc.freenode.org/composer-dev) for development. - -For support, Stack Overflow also offers a good collection of -[Composer related questions](https://stackoverflow.com/questions/tagged/composer-php). - -Please note that this project is released with a -[Contributor Code of Conduct](http://contributor-covenant.org/version/1/4/). -By participating in this project and its community you agree to abide by those terms. - -Requirements ------------- - -PHP 5.3.2 or above (at least 5.3.4 recommended to avoid potential bugs) - -Authors -------- - -- Nils Adermann | [GitHub](https://github.com/naderman) | [Twitter](https://twitter.com/naderman) | | [naderman.de](http://naderman.de) -- Jordi Boggiano | [GitHub](https://github.com/Seldaek) | [Twitter](https://twitter.com/seldaek) | | [seld.be](http://seld.be) - -See also the list of [contributors](https://github.com/composer/composer/contributors) who participated in this project. - -Security Reports ----------------- - -Please send any sensitive issue to [security@packagist.org](mailto:security@packagist.org). Thanks! - -License -------- - -Composer is licensed under the MIT License - see the [LICENSE](LICENSE) file for details - -Acknowledgments ---------------- - -- This project's Solver started out as a PHP port of openSUSE's - [Libzypp satsolver](https://en.opensuse.org/openSUSE:Libzypp_satsolver). diff --git a/vendor/composer/composer/bin/compile b/vendor/composer/composer/bin/compile deleted file mode 100755 index a2720a9..0000000 --- a/vendor/composer/composer/bin/compile +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env php -compile(); -} catch (\Exception $e) { - echo 'Failed to compile phar: ['.get_class($e).'] '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().PHP_EOL; - exit(1); -} diff --git a/vendor/composer/composer/bin/composer b/vendor/composer/composer/bin/composer deleted file mode 100755 index 3585787..0000000 --- a/vendor/composer/composer/bin/composer +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env php -check(); -unset($xdebug); - -if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '4.0', '>=')) { - echo 'HHVM 4.0 has dropped support for Composer, please use PHP instead. Aborting.'.PHP_EOL; - exit(1); -} - -if (function_exists('ini_set')) { - @ini_set('display_errors', 1); - - $memoryInBytes = function ($value) { - $unit = strtolower(substr($value, -1, 1)); - $value = (int) $value; - switch($unit) { - case 'g': - $value *= 1024; - // no break (cumulative multiplier) - case 'm': - $value *= 1024; - // no break (cumulative multiplier) - case 'k': - $value *= 1024; - } - - return $value; - }; - - $memoryLimit = trim(ini_get('memory_limit')); - // Increase memory_limit if it is lower than 1.5GB - if ($memoryLimit != -1 && $memoryInBytes($memoryLimit) < 1024 * 1024 * 1536) { - @ini_set('memory_limit', '1536M'); - } - // Set user defined memory limit - if ($memoryLimit = getenv('COMPOSER_MEMORY_LIMIT')) { - @ini_set('memory_limit', $memoryLimit); - } - unset($memoryInBytes, $memoryLimit); -} - -putenv('COMPOSER_BINARY='.realpath($_SERVER['argv'][0])); - -// run the command application -$application = new Application(); -$application->run(); diff --git a/vendor/composer/composer/composer.json b/vendor/composer/composer/composer.json deleted file mode 100644 index 0878f5b..0000000 --- a/vendor/composer/composer/composer.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "name": "composer/composer", - "type": "library", - "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", - "keywords": [ - "package", - "dependency", - "autoload" - ], - "homepage": "https://getcomposer.org/", - "license": "MIT", - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "require": { - "php": "^5.3.2 || ^7.0", - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "psr/log": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" - }, - "conflict": { - "symfony/console": "2.8.38" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "config": { - "platform": { - "php": "5.3.9" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "autoload-dev": { - "psr-4": { - "Composer\\Test\\": "tests/Composer/Test" - } - }, - "bin": [ - "bin/composer" - ], - "scripts": { - "compile": "@php -dphar.readonly=0 bin/compile", - "test": "phpunit" - }, - "scripts-descriptions": { - "compile": "Compile composer.phar", - "test": "Run all tests" - }, - "support": { - "issues": "https://github.com/composer/composer/issues", - "irc": "irc://irc.freenode.org/composer" - } -} diff --git a/vendor/composer/composer/doc/00-intro.md b/vendor/composer/composer/doc/00-intro.md deleted file mode 100644 index ed7a17c..0000000 --- a/vendor/composer/composer/doc/00-intro.md +++ /dev/null @@ -1,156 +0,0 @@ -# Introduction - -Composer is a tool for dependency management in PHP. It allows you to declare -the libraries your project depends on and it will manage (install/update) them -for you. - -## Dependency management - -Composer is **not** a package manager in the same sense as Yum or Apt are. Yes, -it deals with "packages" or libraries, but it manages them on a per-project -basis, installing them in a directory (e.g. `vendor`) inside your project. By -default it does not install anything globally. Thus, it is a dependency -manager. It does however support a "global" project for convenience via the -[global](03-cli.md#global) command. - -This idea is not new and Composer is strongly inspired by node's -[npm](https://www.npmjs.com/) and ruby's [bundler](https://bundler.io/). - -Suppose: - -1. You have a project that depends on a number of libraries. -1. Some of those libraries depend on other libraries. - -Composer: - -1. Enables you to declare the libraries you depend on. -1. Finds out which versions of which packages can and need to be installed, and - installs them (meaning it downloads them into your project). - -See the [Basic usage](01-basic-usage.md) chapter for more details on declaring -dependencies. - -## System Requirements - -Composer requires PHP 5.3.2+ to run. A few sensitive php settings and compile -flags are also required, but when using the installer you will be warned about -any incompatibilities. - -To install packages from sources instead of simple zip archives, you will need -git, svn, fossil or hg depending on how the package is version-controlled. - -Composer is multi-platform and we strive to make it run equally well on Windows, -Linux and macOS. - -## Installation - Linux / Unix / macOS - -### Downloading the Composer Executable - -Composer offers a convenient installer that you can execute directly from the -command line. Feel free to [download this file](https://getcomposer.org/installer) -or review it on [GitHub](https://github.com/composer/getcomposer.org/blob/master/web/installer) -if you wish to know more about the inner workings of the installer. The source -is plain PHP. - -There are in short, two ways to install Composer. Locally as part of your -project, or globally as a system wide executable. - -#### Locally - -To install Composer locally, run the installer in your project directory. See -[the Download page](https://getcomposer.org/download/) for instructions. - -The installer will check a few PHP settings and then download `composer.phar` -to your working directory. This file is the Composer binary. It is a PHAR -(PHP archive), which is an archive format for PHP which can be run on -the command line, amongst other things. - -Now run `php composer.phar` in order to run Composer. - -You can install Composer to a specific directory by using the `--install-dir` -option and additionally (re)name it as well using the `--filename` option. When -running the installer when following -[the Download page instructions](https://getcomposer.org/download/) add the -following parameters: - -```sh -php composer-setup.php --install-dir=bin --filename=composer -``` - -Now run `php bin/composer` in order to run Composer. - -#### Globally - -You can place the Composer PHAR anywhere you wish. If you put it in a directory -that is part of your `PATH`, you can access it globally. On Unix systems you -can even make it executable and invoke it without directly using the `php` -interpreter. - -After running the installer following [the Download page instructions](https://getcomposer.org/download/) -you can run this to move composer.phar to a directory that is in your path: - -```sh -mv composer.phar /usr/local/bin/composer -``` - -If you like to install it only for your user and avoid requiring root permissions, -you can use `~/.local/bin` instead which is available by default on some -Linux distributions. - -> **Note:** If the above fails due to permissions, you may need to run it again -> with sudo. - -> **Note:** On some versions of macOS the `/usr` directory does not exist by -> default. If you receive the error "/usr/local/bin/composer: No such file or -> directory" then you must create the directory manually before proceeding: -> `mkdir -p /usr/local/bin`. - -> **Note:** For information on changing your PATH, please read the -> [Wikipedia article](https://en.wikipedia.org/wiki/PATH_(variable)) and/or use Google. - -Now run `composer` in order to run Composer instead of `php composer.phar`. - -## Installation - Windows - -### Using the Installer - -This is the easiest way to get Composer set up on your machine. - -Download and run -[Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe). It will -install the latest Composer version and set up your PATH so that you can -call `composer` from any directory in your command line. - -> **Note:** Close your current terminal. Test usage with a new terminal: This is -> important since the PATH only gets loaded when the terminal starts. - -### Manual Installation - -Change to a directory on your `PATH` and run the installer following -[the Download page instructions](https://getcomposer.org/download/) -to download `composer.phar`. - -Create a new `composer.bat` file alongside `composer.phar`: - -```sh -C:\bin>echo @php "%~dp0composer.phar" %*>composer.bat -``` - -Add the directory to your PATH environment variable if it isn't already. -For information on changing your PATH variable, please see -[this article](https://www.computerhope.com/issues/ch000549.htm) and/or -use Google. - -Close your current terminal. Test usage with a new terminal: - -```sh -C:\Users\username>composer -V -Composer version 1.0.0 2016-01-10 20:34:53 -``` - -## Using Composer - -Now that you've installed Composer, you are ready to use it! Head on over to the -next chapter for a short and simple demonstration. - -[Basic usage](01-basic-usage.md) → diff --git a/vendor/composer/composer/doc/01-basic-usage.md b/vendor/composer/composer/doc/01-basic-usage.md deleted file mode 100644 index 4981542..0000000 --- a/vendor/composer/composer/doc/01-basic-usage.md +++ /dev/null @@ -1,266 +0,0 @@ -# Basic usage - -## Introduction - -For our basic usage introduction, we will be installing `monolog/monolog`, -a logging library. If you have not yet installed Composer, refer to the -[Intro](00-intro.md) chapter. - -> **Note:** for the sake of simplicity, this introduction will assume you -> have performed a [local](00-intro.md#locally) install of Composer. - -## `composer.json`: Project setup - -To start using Composer in your project, all you need is a `composer.json` -file. This file describes the dependencies of your project and may contain -other metadata as well. - -### The `require` key - -The first (and often only) thing you specify in `composer.json` is the -[`require`](04-schema.md#require) key. You are simply telling Composer which -packages your project depends on. - -```json -{ - "require": { - "monolog/monolog": "1.0.*" - } -} -``` - -As you can see, [`require`](04-schema.md#require) takes an object that maps -**package names** (e.g. `monolog/monolog`) to **version constraints** (e.g. -`1.0.*`). - -Composer uses this information to search for the right set of files in package -"repositories" that you register using the [`repositories`](04-schema.md#repositories) -key, or in Packagist, the default package repository. In the above example, -since no other repository has been registered in the `composer.json` file, it is -assumed that the `monolog/monolog` package is registered on Packagist. (See more -about Packagist [below](#packagist), or read more about repositories -[here](05-repositories.md)). - -### Package names - -The package name consists of a vendor name and the project's name. Often these -will be identical - the vendor name only exists to prevent naming clashes. For -example, it would allow two different people to create a library named `json`. -One might be named `igorw/json` while the other might be `seldaek/json`. - -Read more about publishing packages and package naming [here](02-libraries.md). -(Note that you can also specify "platform packages" as dependencies, allowing -you to require certain versions of server software. See -[platform packages](#platform-packages) below.) - -### Package version constraints - -In our example, we are requesting the Monolog package with the version constraint -[`1.0.*`](https://semver.mwl.be/#?package=monolog%2Fmonolog&version=1.0.*). -This means any version in the `1.0` development branch, or any version that is -greater than or equal to 1.0 and less than 1.1 (`>=1.0 <1.1`). - -Please read [versions](articles/versions.md) for more in-depth information on -versions, how versions relate to each other, and on version constraints. - -> **How does Composer download the right files?** When you specify a dependency in -> `composer.json`, Composer first takes the name of the package that you have requested -> and searches for it in any repositories that you have registered using the -> [`repositories`](04-schema.md#repositories) key. If you have not registered -> any extra repositories, or it does not find a package with that name in the -> repositories you have specified, it falls back to Packagist (more [below](#packagist)). -> -> When Composer finds the right package, either in Packagist or in a repo you have specified, -> it then uses the versioning features of the package's VCS (i.e., branches and tags) -> to attempt to find the best match for the version constraint you have specified. Be sure to read -> about versions and package resolution in the [versions article](articles/versions.md). - -> **Note:** If you are trying to require a package but Composer throws an error -> regarding package stability, the version you have specified may not meet your -> default minimum stability requirements. By default only stable releases are taken -> into consideration when searching for valid package versions in your VCS. -> -> You might run into this if you are trying to require dev, alpha, beta, or RC -> versions of a package. Read more about stability flags and the `minimum-stability` -> key on the [schema page](04-schema.md). - -## Installing dependencies - -To install the defined dependencies for your project, run the -[`install`](03-cli.md#install) command. - -```sh -php composer.phar install -``` - -When you run this command, one of two things may happen: - -### Installing without `composer.lock` - -If you have never run the command before and there is also no `composer.lock` file present, -Composer simply resolves all dependencies listed in your `composer.json` file and downloads -the latest version of their files into the `vendor` directory in your project. (The `vendor` -directory is the conventional location for all third-party code in a project). In our -example from above, you would end up with the Monolog source files in -`vendor/monolog/monolog/`. If Monolog listed any dependencies, those would also be in -folders under `vendor/`. - -> **Tip:** If you are using git for your project, you probably want to add -> `vendor` in your `.gitignore`. You really don't want to add all of that -> third-party code to your versioned repository. - -When Composer has finished installing, it writes all of the packages and the exact versions -of them that it downloaded to the `composer.lock` file, locking the project to those specific -versions. You should commit the `composer.lock` file to your project repo so that all people -working on the project are locked to the same versions of dependencies (more below). - -### Installing with `composer.lock` - -This brings us to the second scenario. If there is already a `composer.lock` file as well as a -`composer.json` file when you run `composer install`, it means either you ran the -`install` command before, or someone else on the project ran the `install` command and -committed the `composer.lock` file to the project (which is good). - -Either way, running `install` when a `composer.lock` file is present resolves and installs -all dependencies that you listed in `composer.json`, but Composer uses the exact versions listed -in `composer.lock` to ensure that the package versions are consistent for everyone -working on your project. As a result you will have all dependencies requested by your -`composer.json` file, but they may not all be at the very latest available versions -(some of the dependencies listed in the `composer.lock` file may have released newer versions since -the file was created). This is by design, it ensures that your project does not break because of -unexpected changes in dependencies. - -### Commit your `composer.lock` file to version control - -Committing this file to VC is important because it will cause anyone who sets -up the project to use the exact same -versions of the dependencies that you are using. Your CI server, production -machines, other developers in your team, everything and everyone runs on the -same dependencies, which mitigates the potential for bugs affecting only some -parts of the deployments. Even if you develop alone, in six months when -reinstalling the project you can feel confident the dependencies installed are -still working even if your dependencies released many new versions since then. -(See note below about using the `update` command.) - -## Updating dependencies to their latest versions - -As mentioned above, the `composer.lock` file prevents you from automatically getting -the latest versions of your dependencies. To update to the latest versions, use the -[`update`](03-cli.md#update) command. This will fetch the latest matching -versions (according to your `composer.json` file) and update the lock file -with the new versions. (This is equivalent to deleting the `composer.lock` file -and running `install` again.) - -```sh -php composer.phar update -``` - -> **Note:** Composer will display a Warning when executing an `install` command -> if the `composer.lock` has not been updated since changes were made to the -> `composer.json` that might affect dependency resolution. - -If you only want to install or update one dependency, you can whitelist them: - -```sh -php composer.phar update monolog/monolog [...] -``` - -> **Note:** For libraries it is not necessary to commit the lock -> file, see also: [Libraries - Lock file](02-libraries.md#lock-file). - -## Packagist - -[Packagist](https://packagist.org/) is the main Composer repository. A Composer -repository is basically a package source: a place where you can get packages -from. Packagist aims to be the central repository that everybody uses. This -means that you can automatically `require` any package that is available there, -without further specifying where Composer should look for the package. - -If you go to the [Packagist website](https://packagist.org/) (packagist.org), -you can browse and search for packages. - -Any open source project using Composer is recommended to publish their packages -on Packagist. A library does not need to be on Packagist to be used by Composer, -but it enables discovery and adoption by other developers more quickly. - -## Platform packages - -Composer has platform packages, which are virtual packages for things that are -installed on the system but are not actually installable by Composer. This -includes PHP itself, PHP extensions and some system libraries. - -* `php` represents the PHP version of the user, allowing you to apply - constraints, e.g. `^7.1`. To require a 64bit version of php, you can - require the `php-64bit` package. - -* `hhvm` represents the version of the HHVM runtime and allows you to apply - a constraint, e.g., `^2.3`. - -* `ext-` allows you to require PHP extensions (includes core - extensions). Versioning can be quite inconsistent here, so it's often - a good idea to set the constraint to `*`. An example of an extension - package name is `ext-gd`. - -* `lib-` allows constraints to be made on versions of libraries used by - PHP. The following are available: `curl`, `iconv`, `icu`, `libxml`, - `openssl`, `pcre`, `uuid`, `xsl`. - -You can use [`show --platform`](03-cli.md#show) to get a list of your locally -available platform packages. - -## Autoloading - -For libraries that specify autoload information, Composer generates a -`vendor/autoload.php` file. You can simply include this file and start -using the classes that those libraries provide without any extra work: - -```php -require __DIR__ . '/vendor/autoload.php'; - -$log = new Monolog\Logger('name'); -$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); -$log->addWarning('Foo'); -``` - -You can even add your own code to the autoloader by adding an -[`autoload`](04-schema.md#autoload) field to `composer.json`. - -```json -{ - "autoload": { - "psr-4": {"Acme\\": "src/"} - } -} -``` - -Composer will register a [PSR-4](http://www.php-fig.org/psr/psr-4/) autoloader -for the `Acme` namespace. - -You define a mapping from namespaces to directories. The `src` directory would -be in your project root, on the same level as `vendor` directory is. An example -filename would be `src/Foo.php` containing an `Acme\Foo` class. - -After adding the [`autoload`](04-schema.md#autoload) field, you have to re-run -[`dump-autoload`](03-cli.md#dump-autoload) to re-generate the -`vendor/autoload.php` file. - -Including that file will also return the autoloader instance, so you can store -the return value of the include call in a variable and add more namespaces. -This can be useful for autoloading classes in a test suite, for example. - -```php -$loader = require __DIR__ . '/vendor/autoload.php'; -$loader->addPsr4('Acme\\Test\\', __DIR__); -``` - -In addition to PSR-4 autoloading, Composer also supports PSR-0, classmap and -files autoloading. See the [`autoload`](04-schema.md#autoload) reference for -more information. - -See also the docs on [optimizing the autoloader](articles/autoloader-optimization.md). - -> **Note:** Composer provides its own autoloader. If you don't want to use that -> one, you can include `vendor/composer/autoload_*.php` files, which return -> associative arrays allowing you to configure your own autoloader. - -← [Intro](00-intro.md) | [Libraries](02-libraries.md) → diff --git a/vendor/composer/composer/doc/02-libraries.md b/vendor/composer/composer/doc/02-libraries.md deleted file mode 100644 index e59f505..0000000 --- a/vendor/composer/composer/doc/02-libraries.md +++ /dev/null @@ -1,153 +0,0 @@ -# Libraries - -This chapter will tell you how to make your library installable through -Composer. - -## Every project is a package - -As soon as you have a `composer.json` in a directory, that directory is a -package. When you add a [`require`](04-schema.md#require) to a project, you are -making a package that depends on other packages. The only difference between -your project and a library is that your project is a package without a name. - -In order to make that package installable you need to give it a name. You do -this by adding the [`name`](04-schema.md#name) property in `composer.json`: - -```json -{ - "name": "acme/hello-world", - "require": { - "monolog/monolog": "1.0.*" - } -} -``` - -In this case the project name is `acme/hello-world`, where `acme` is the vendor -name. Supplying a vendor name is mandatory. - -> **Note:** If you don't know what to use as a vendor name, your GitHub -> username is usually a good bet. While package names are case insensitive, the -> convention is all lowercase and dashes for word separation. - -## Library Versioning - -In the vast majority of cases, you will be maintaining your library using some -sort of version control system like git, svn, hg or fossil. In these cases, -Composer infers versions from your VCS and you **should not** specify a version -in your `composer.json` file. (See the [Versions article](articles/versions.md) -to learn about how Composer uses VCS branches and tags to resolve version -constraints.) - -If you are maintaining packages by hand (i.e., without a VCS), you'll need to -specify the version explicitly by adding a `version` value in your `composer.json` -file: - -```json -{ - "version": "1.0.0" -} -``` - -> **Note:** When you add a hardcoded version to a VCS, the version will conflict -> with tag names. Composer will not be able to determine the version number. - -### VCS Versioning - -Composer uses your VCS's branch and tag features to resolve the version -constraints you specify in your `require` field to specific sets of files. -When determining valid available versions, Composer looks at all of your tags -and branches and translates their names into an internal list of options that -it then matches against the version constraint you provided. - -For more on how Composer treats tags and branches and how it resolves package -version constraints, read the [versions](articles/versions.md) article. - -## Lock file - -For your library you may commit the `composer.lock` file if you want to. This -can help your team to always test against the same dependency versions. -However, this lock file will not have any effect on other projects that depend -on it. It only has an effect on the main project. - -If you do not want to commit the lock file and you are using git, add it to -the `.gitignore`. - -## Publishing to a VCS - -Once you have a VCS repository (version control system, e.g. git) containing a -`composer.json` file, your library is already composer-installable. In this -example we will publish the `acme/hello-world` library on GitHub under -`github.com/username/hello-world`. - -Now, to test installing the `acme/hello-world` package, we create a new -project locally. We will call it `acme/blog`. This blog will depend on -`acme/hello-world`, which in turn depends on `monolog/monolog`. We can -accomplish this by creating a new `blog` directory somewhere, containing a -`composer.json`: - -```json -{ - "name": "acme/blog", - "require": { - "acme/hello-world": "dev-master" - } -} -``` - -The name is not needed in this case, since we don't want to publish the blog -as a library. It is added here to clarify which `composer.json` is being -described. - -Now we need to tell the blog app where to find the `hello-world` dependency. -We do this by adding a package repository specification to the blog's -`composer.json`: - -```json -{ - "name": "acme/blog", - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/username/hello-world" - } - ], - "require": { - "acme/hello-world": "dev-master" - } -} -``` - -For more details on how package repositories work and what other types are -available, see [Repositories](05-repositories.md). - -That's all. You can now install the dependencies by running Composer's -[`install`](03-cli.md#install) command! - -**Recap:** Any git/svn/hg/fossil repository containing a `composer.json` can be -added to your project by specifying the package repository and declaring the -dependency in the [`require`](04-schema.md#require) field. - -## Publishing to packagist - -Alright, so now you can publish packages. But specifying the VCS repository -every time is cumbersome. You don't want to force all your users to do that. - -The other thing that you may have noticed is that we did not specify a package -repository for `monolog/monolog`. How did that work? The answer is Packagist. - -[Packagist](https://packagist.org/) is the main package repository for -Composer, and it is enabled by default. Anything that is published on -Packagist is available automatically through Composer. Since -[Monolog is on Packagist](https://packagist.org/packages/monolog/monolog), we -can depend on it without having to specify any additional repositories. - -If we wanted to share `hello-world` with the world, we would publish it on -Packagist as well. Doing so is really easy. - -You simply visit [Packagist](https://packagist.org) and hit the "Submit" -button. This will prompt you to sign up if you haven't already, and then -allows you to submit the URL to your VCS repository, at which point Packagist -will start crawling it. Once it is done, your package will be available to -anyone! - -← [Basic usage](01-basic-usage.md) | [Command-line interface](03-cli.md) → diff --git a/vendor/composer/composer/doc/03-cli.md b/vendor/composer/composer/doc/03-cli.md deleted file mode 100644 index 8cfd5ca..0000000 --- a/vendor/composer/composer/doc/03-cli.md +++ /dev/null @@ -1,941 +0,0 @@ -# Command-line interface / Commands - -You've already learned how to use the command-line interface to do some -things. This chapter documents all the available commands. - -To get help from the command-line, simply call `composer` or `composer list` -to see the complete list of commands, then `--help` combined with any of those -can give you more information. - -As Composer uses [symfony/console](https://github.com/symfony/console) you can call commands by short name if it's not ambiguous. -```sh -composer dump -``` -calls `composer dump-autoload`. - -## Global Options - -The following options are available with every command: - -* **--verbose (-v):** Increase verbosity of messages. -* **--help (-h):** Display help information. -* **--quiet (-q):** Do not output any message. -* **--no-interaction (-n):** Do not ask any interactive question. -* **--no-plugins:** Disables plugins. -* **--no-cache:** Disables the use of the cache directory. Same as setting the COMPOSER_CACHE_DIR - env var to /dev/null (or NUL on Windows). -* **--working-dir (-d):** If specified, use the given directory as working directory. -* **--profile:** Display timing and memory usage information -* **--ansi:** Force ANSI output. -* **--no-ansi:** Disable ANSI output. -* **--version (-V):** Display this application version. - -## Process Exit Codes - -* **0:** OK -* **1:** Generic/unknown error code -* **2:** Dependency solving error code - -## init - -In the [Libraries](02-libraries.md) chapter we looked at how to create a -`composer.json` by hand. There is also an `init` command available that makes -it a bit easier to do this. - -When you run the command it will interactively ask you to fill in the fields, -while using some smart defaults. - -```sh -php composer.phar init -``` - -### Options - -* **--name:** Name of the package. -* **--description:** Description of the package. -* **--author:** Author name of the package. -* **--type:** Type of package. -* **--homepage:** Homepage of the package. -* **--require:** Package to require with a version constraint. Should be - in format `foo/bar:1.0.0`. -* **--require-dev:** Development requirements, see **--require**. -* **--stability (-s):** Value for the `minimum-stability` field. -* **--license (-l):** License of package. -* **--repository:** Provide one (or more) custom repositories. They will be stored - in the generated composer.json, and used for auto-completion when prompting for - the list of requires. Every repository can be either an HTTP URL pointing - to a `composer` repository or a JSON string which similar to what the - [repositories](04-schema.md#repositories) key accepts. - -## install / i - -The `install` command reads the `composer.json` file from the current -directory, resolves the dependencies, and installs them into `vendor`. - -```sh -php composer.phar install -``` - -If there is a `composer.lock` file in the current directory, it will use the -exact versions from there instead of resolving them. This ensures that -everyone using the library will get the same versions of the dependencies. - -If there is no `composer.lock` file, Composer will create one after dependency -resolution. - -### Options - -* **--prefer-source:** There are two ways of downloading a package: `source` - and `dist`. For stable versions Composer will use the `dist` by default. - The `source` is a version control repository. If `--prefer-source` is - enabled, Composer will install from `source` if there is one. This is - useful if you want to make a bugfix to a project and get a local git - clone of the dependency directly. -* **--prefer-dist:** Reverse of `--prefer-source`, Composer will install - from `dist` if possible. This can speed up installs substantially on build - servers and other use cases where you typically do not run updates of the - vendors. It is also a way to circumvent problems with git if you do not - have a proper setup. -* **--dry-run:** If you want to run through an installation without actually - installing a package, you can use `--dry-run`. This will simulate the - installation and show you what would happen. -* **--dev:** Install packages listed in `require-dev` (this is the default behavior). -* **--no-dev:** Skip installing packages listed in `require-dev`. The autoloader - generation skips the `autoload-dev` rules. -* **--no-autoloader:** Skips autoloader generation. -* **--no-scripts:** Skips execution of scripts defined in `composer.json`. -* **--no-progress:** Removes the progress display that can mess with some - terminals or scripts which don't handle backspace characters. -* **--no-suggest:** Skips suggested packages in the output. -* **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to get a faster - autoloader. This is recommended especially for production, but can take - a bit of time to run so it is currently not done by default. -* **--classmap-authoritative (-a):** Autoload classes from the classmap only. - Implicitly enables `--optimize-autoloader`. -* **--apcu-autoloader:** Use APCu to cache found/not-found classes. -* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` - requirements and force the installation even if the local machine does not - fulfill these. See also the [`platform`](06-config.md#platform) config option. - -## update / u - -In order to get the latest versions of the dependencies and to update the -`composer.lock` file, you should use the `update` command. This command is also -aliased as `upgrade` as it does the same as `upgrade` does if you are thinking -of `apt-get` or similar package managers. - -```sh -php composer.phar update -``` - -This will resolve all dependencies of the project and write the exact versions -into `composer.lock`. - -If you only want to update a few packages and not all, you can list them as such: - -```sh -php composer.phar update vendor/package vendor/package2 -``` - -You can also use wildcards to update a bunch of packages at once: - -```sh -php composer.phar update "vendor/*" -``` - -### Options - -* **--prefer-source:** Install packages from `source` when available. -* **--prefer-dist:** Install packages from `dist` when available. -* **--dry-run:** Simulate the command without actually doing anything. -* **--dev:** Install packages listed in `require-dev` (this is the default behavior). -* **--no-dev:** Skip installing packages listed in `require-dev`. The autoloader generation skips the `autoload-dev` rules. -* **--lock:** Only updates the lock file hash to suppress warning about the - lock file being out of date. -* **--no-autoloader:** Skips autoloader generation. -* **--no-scripts:** Skips execution of scripts defined in `composer.json`. -* **--no-progress:** Removes the progress display that can mess with some - terminals or scripts which don't handle backspace characters. -* **--no-suggest:** Skips suggested packages in the output. -* **--with-dependencies:** Add also dependencies of whitelisted packages to the whitelist, except those that are root requirements. -* **--with-all-dependencies:** Add also all dependencies of whitelisted packages to the whitelist, including those that are root requirements. -* **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to get a faster - autoloader. This is recommended especially for production, but can take - a bit of time to run so it is currently not done by default. -* **--classmap-authoritative (-a):** Autoload classes from the classmap only. - Implicitly enables `--optimize-autoloader`. -* **--apcu-autoloader:** Use APCu to cache found/not-found classes. -* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` - requirements and force the installation even if the local machine does not - fulfill these. See also the [`platform`](06-config.md#platform) config option. -* **--prefer-stable:** Prefer stable versions of dependencies. -* **--prefer-lowest:** Prefer lowest versions of dependencies. Useful for testing minimal - versions of requirements, generally used with `--prefer-stable`. -* **--interactive:** Interactive interface with autocompletion to select the packages to update. -* **--root-reqs:** Restricts the update to your first degree dependencies. - -## require - -The `require` command adds new packages to the `composer.json` file from -the current directory. If no file exists one will be created on the fly. - -```sh -php composer.phar require -``` - -After adding/changing the requirements, the modified requirements will be -installed or updated. - -If you do not want to choose requirements interactively, you can pass them -to the command. - -```sh -php composer.phar require vendor/package:2.* vendor/package2:dev-master -``` - -If you do not specify a package, composer will prompt you to search for a package, and given results, provide a list of matches to require. - -### Options - -* **--dev:** Add packages to `require-dev`. -* **--prefer-source:** Install packages from `source` when available. -* **--prefer-dist:** Install packages from `dist` when available. -* **--no-progress:** Removes the progress display that can mess with some - terminals or scripts which don't handle backspace characters. -* **--no-suggest:** Skips suggested packages in the output. -* **--no-update:** Disables the automatic update of the dependencies. -* **--no-scripts:** Skips execution of scripts defined in `composer.json`. -* **--update-no-dev:** Run the dependency update with the `--no-dev` option. -* **--update-with-dependencies:** Also update dependencies of the newly required packages, except those that are root requirements. -* **--update-with-all-dependencies:** Also update dependencies of the newly required packages, including those that are root requirements. -* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` - requirements and force the installation even if the local machine does not - fulfill these. See also the [`platform`](06-config.md#platform) config option. -* **--prefer-stable:** Prefer stable versions of dependencies. -* **--prefer-lowest:** Prefer lowest versions of dependencies. Useful for testing minimal - versions of requirements, generally used with `--prefer-stable`. -* **--sort-packages:** Keep packages sorted in `composer.json`. -* **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to - get a faster autoloader. This is recommended especially for production, but - can take a bit of time to run so it is currently not done by default. -* **--classmap-authoritative (-a):** Autoload classes from the classmap only. - Implicitly enables `--optimize-autoloader`. -* **--apcu-autoloader:** Use APCu to cache found/not-found classes. - -## remove - -The `remove` command removes packages from the `composer.json` file from -the current directory. - -```sh -php composer.phar remove vendor/package vendor/package2 -``` - -After removing the requirements, the modified requirements will be -uninstalled. - -### Options -* **--dev:** Remove packages from `require-dev`. -* **--no-progress:** Removes the progress display that can mess with some - terminals or scripts which don't handle backspace characters. -* **--no-update:** Disables the automatic update of the dependencies. -* **--no-scripts:** Skips execution of scripts defined in `composer.json`. -* **--update-no-dev:** Run the dependency update with the --no-dev option. -* **--update-with-dependencies:** Also update dependencies of the removed packages. -* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` - requirements and force the installation even if the local machine does not - fulfill these. See also the [`platform`](06-config.md#platform) config option. -* **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to - get a faster autoloader. This is recommended especially for production, but - can take a bit of time to run so it is currently not done by default. -* **--classmap-authoritative (-a):** Autoload classes from the classmap only. - Implicitly enables `--optimize-autoloader`. -* **--apcu-autoloader:** Use APCu to cache found/not-found classes. - -## check-platform-reqs - -The check-platform-reqs command checks that your PHP and extensions versions -match the platform requirements of the installed packages. This can be used -to verify that a production server has all the extensions needed to run a -project after installing it for example. - -Unlike update/install, this command will ignore config.platform settings and -check the real platform packages so you can be certain you have the required -platform dependencies. - -## global - -The global command allows you to run other commands like `install`, `remove`, `require` -or `update` as if you were running them from the [COMPOSER_HOME](#composer-home) -directory. - -This is merely a helper to manage a project stored in a central location that -can hold CLI tools or Composer plugins that you want to have available everywhere. - -This can be used to install CLI utilities globally. Here is an example: - -```sh -php composer.phar global require friendsofphp/php-cs-fixer -``` - -Now the `php-cs-fixer` binary is available globally. Make sure your global -[vendor binaries](articles/vendor-binaries.md) directory is in your `$PATH` -environment variable, you can get its location with the following command : - -```sh -php composer.phar global config bin-dir --absolute -``` - -If you wish to update the binary later on you can run a global update: - -```sh -php composer.phar global update -``` - -## search - -The search command allows you to search through the current project's package -repositories. Usually this will be packagist. You simply pass it the -terms you want to search for. - -```sh -php composer.phar search monolog -``` - -You can also search for more than one term by passing multiple arguments. - -### Options - -* **--only-name (-N):** Search only in name. -* **--type (-t):** Search for a specific package type. - -## show - -To list all of the available packages, you can use the `show` command. - -```sh -php composer.phar show -``` - -To filter the list you can pass a package mask using wildcards. - -```sh -php composer.phar show monolog/* - -monolog/monolog 1.19.0 Sends your logs to files, sockets, inboxes, databases and various web services -``` - -If you want to see the details of a certain package, you can pass the package -name. - -```sh -php composer.phar show monolog/monolog - -name : monolog/monolog -versions : master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1 -type : library -names : monolog/monolog -source : [git] https://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da -dist : [zip] https://github.com/Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da -license : MIT - -autoload -psr-0 -Monolog : src/ - -requires -php >=5.3.0 -``` - -You can even pass the package version, which will tell you the details of that -specific version. - -```sh -php composer.phar show monolog/monolog 1.0.2 -``` - -### Options - -* **--all :** List all packages available in all your repositories. -* **--installed (-i):** List the packages that are installed (this is enabled by default, and deprecated). -* **--platform (-p):** List only platform packages (php & extensions). -* **--available (-a):** List available packages only. -* **--self (-s):** List the root package info. -* **--name-only (-N):** List package names only. -* **--path (-P):** List package paths. -* **--tree (-t):** List your dependencies as a tree. If you pass a package name it will show the dependency tree for that package. -* **--latest (-l):** List all installed packages including their latest version. -* **--outdated (-o):** Implies --latest, but this lists *only* packages that have a newer version available. -* **--minor-only (-m):** Use with --latest. Only shows packages that have minor SemVer-compatible updates. -* **--direct (-D):** Restricts the list of packages to your direct dependencies. -* **--strict:** Return a non-zero exit code when there are outdated packages. -* **--format (-f):** Lets you pick between text (default) or json output format. - -## outdated - -The `outdated` command shows a list of installed packages that have updates available, -including their current and latest versions. This is basically an alias for -`composer show -lo`. - -The color coding is as such: - -- **green (=)**: Dependency is in the latest version and is up to date. -- **yellow (~)**: Dependency has a new version available that includes backwards compatibility breaks according to semver, so upgrade when - you can but it may involve work. -- **red (!)**: Dependency has a new version that is semver-compatible and you should upgrade it. - -### Options - -* **--all (-a):** Show all packages, not just outdated (alias for `composer show -l`). -* **--direct (-D):** Restricts the list of packages to your direct dependencies. -* **--strict:** Returns non-zero exit code if any package is outdated. -* **--minor-only (-m):** Only shows packages that have minor SemVer-compatible updates. -* **--format (-f):** Lets you pick between text (default) or json output format. - -## browse / home - -The `browse` (aliased to `home`) opens a package's repository URL or homepage -in your browser. - -### Options - -* **--homepage (-H):** Open the homepage instead of the repository URL. -* **--show (-s):** Only show the homepage or repository URL. - -## suggests - -Lists all packages suggested by currently installed set of packages. You can -optionally pass one or multiple package names in the format of `vendor/package` -to limit output to suggestions made by those packages only. - -Use the `--by-package` or `--by-suggestion` flags to group the output by -the package offering the suggestions or the suggested packages respectively. - -Use the `--verbose (-v)` flag to display the suggesting package and the suggestion reason. -This implies `--by-package --by-suggestion`, showing both lists. - -### Options - -* **--by-package:** Groups output by suggesting package. -* **--by-suggestion:** Groups output by suggested package. -* **--no-dev:** Excludes suggestions from `require-dev` packages. - -## depends (why) - -The `depends` command tells you which other packages depend on a certain -package. As with installation `require-dev` relationships are only considered -for the root package. - -```sh -php composer.phar depends doctrine/lexer - doctrine/annotations v1.2.7 requires doctrine/lexer (1.*) - doctrine/common v2.6.1 requires doctrine/lexer (1.*) -``` - -You can optionally specify a version constraint after the package to limit the -search. - -Add the `--tree` or `-t` flag to show a recursive tree of why the package is -depended upon, for example: - -```sh -php composer.phar depends psr/log -t -psr/log 1.0.0 Common interface for logging libraries -|- aboutyou/app-sdk 2.6.11 (requires psr/log 1.0.*) -| `- __root__ (requires aboutyou/app-sdk ^2.6) -|- monolog/monolog 1.17.2 (requires psr/log ~1.0) -| `- laravel/framework v5.2.16 (requires monolog/monolog ~1.11) -| `- __root__ (requires laravel/framework ^5.2) -`- symfony/symfony v3.0.2 (requires psr/log ~1.0) - `- __root__ (requires symfony/symfony ^3.0) -``` - -### Options - -* **--recursive (-r):** Recursively resolves up to the root package. -* **--tree (-t):** Prints the results as a nested tree, implies -r. - -## prohibits (why-not) - -The `prohibits` command tells you which packages are blocking a given package -from being installed. Specify a version constraint to verify whether upgrades -can be performed in your project, and if not why not. See the following -example: - -```sh -php composer.phar prohibits symfony/symfony 3.1 - laravel/framework v5.2.16 requires symfony/var-dumper (2.8.*|3.0.*) -``` - -Note that you can also specify platform requirements, for example to check -whether you can upgrade your server to PHP 8.0: - -```sh -php composer.phar prohibits php:8 - doctrine/cache v1.6.0 requires php (~5.5|~7.0) - doctrine/common v2.6.1 requires php (~5.5|~7.0) - doctrine/instantiator 1.0.5 requires php (>=5.3,<8.0-DEV) -``` - -As with `depends` you can request a recursive lookup, which will list all -packages depending on the packages that cause the conflict. - -### Options - -* **--recursive (-r):** Recursively resolves up to the root package. -* **--tree (-t):** Prints the results as a nested tree, implies -r. - -## validate - -You should always run the `validate` command before you commit your -`composer.json` file, and before you tag a release. It will check if your -`composer.json` is valid. - -```sh -php composer.phar validate -``` - -### Options - -* **--no-check-all:** Do not emit a warning if requirements in `composer.json` use unbound or overly strict version constraints. -* **--no-check-lock:** Do not emit an error if `composer.lock` exists and is not up to date. -* **--no-check-publish:** Do not emit an error if `composer.json` is unsuitable for publishing as a package on Packagist but is otherwise valid. -* **--with-dependencies:** Also validate the composer.json of all installed dependencies. -* **--strict:** Return a non-zero exit code for warnings as well as errors. - -## status - -If you often need to modify the code of your dependencies and they are -installed from source, the `status` command allows you to check if you have -local changes in any of them. - -```sh -php composer.phar status -``` - -With the `--verbose` option you get some more information about what was -changed: - -```sh -php composer.phar status -v - -You have changes in the following dependencies: -vendor/seld/jsonlint: - M README.mdown -``` - -## self-update (selfupdate) - -To update Composer itself to the latest version, run the `self-update` -command. It will replace your `composer.phar` with the latest version. - -```sh -php composer.phar self-update -``` - -If you would like to instead update to a specific release simply specify it: - -```sh -php composer.phar self-update 1.0.0-alpha7 -``` - -If you have installed Composer for your entire system (see [global installation](00-intro.md#globally)), -you may have to run the command with `root` privileges - -```sh -sudo -H composer self-update -``` - -### Options - -* **--rollback (-r):** Rollback to the last version you had installed. -* **--clean-backups:** Delete old backups during an update. This makes the - current version of Composer the only backup available after the update. -* **--no-progress:** Do not output download progress. -* **--update-keys:** Prompt user for a key update. -* **--stable:** Force an update to the stable channel. -* **--preview:** Force an update to the preview channel. -* **--snapshot:** Force an update to the snapshot channel. - -## config - -The `config` command allows you to edit composer config settings and repositories -in either the local `composer.json` file or the global `config.json` file. - -Additionally it lets you edit most properties in the local `composer.json`. - -```sh -php composer.phar config --list -``` - -### Usage - -`config [options] [setting-key] [setting-value1] ... [setting-valueN]` - -`setting-key` is a configuration option name and `setting-value1` is a -configuration value. For settings that can take an array of values (like -`github-protocols`), more than one setting-value arguments are allowed. - -You can also edit the values of the following properties: - -`description`, `homepage`, `keywords`, `license`, `minimum-stability`, -`name`, `prefer-stable`, `type` and `version`. - -See the [Config](06-config.md) chapter for valid configuration options. - -### Options - -* **--global (-g):** Operate on the global config file located at - `$COMPOSER_HOME/config.json` by default. Without this option, this command - affects the local composer.json file or a file specified by `--file`. -* **--editor (-e):** Open the local composer.json file using in a text editor as - defined by the `EDITOR` env variable. With the `--global` option, this opens - the global config file. -* **--auth (-a):** Affect auth config file (only used for --editor). -* **--unset:** Remove the configuration element named by `setting-key`. -* **--list (-l):** Show the list of current config variables. With the `--global` - option this lists the global configuration only. -* **--file="..." (-f):** Operate on a specific file instead of composer.json. Note - that this cannot be used in conjunction with the `--global` option. -* **--absolute:** Returns absolute paths when fetching *-dir config values - instead of relative. - -### Modifying Repositories - -In addition to modifying the config section, the `config` command also supports making -changes to the repositories section by using it the following way: - -```sh -php composer.phar config repositories.foo vcs https://github.com/foo/bar -``` - -If your repository requires more configuration options, you can instead pass its JSON representation : - -```sh -php composer.phar config repositories.foo '{"type": "vcs", "url": "http://svn.example.org/my-project/", "trunk-path": "master"}' -``` - -### Modifying Extra Values - -In addition to modifying the config section, the `config` command also supports making -changes to the extra section by using it the following way: - -```sh -php composer.phar config extra.foo.bar value -``` - -The dots indicate array nesting, a max depth of 3 levels is allowed though. The above -would set `"extra": { "foo": { "bar": "value" } }`. - -## create-project - -You can use Composer to create new projects from an existing package. This is -the equivalent of doing a git clone/svn checkout followed by a `composer install` -of the vendors. - -There are several applications for this: - -1. You can deploy application packages. -2. You can check out any package and start developing on patches for example. -3. Projects with multiple developers can use this feature to bootstrap the - initial application for development. - -To create a new project using Composer you can use the `create-project` command. -Pass it a package name, and the directory to create the project in. You can also -provide a version as third argument, otherwise the latest version is used. - -If the directory does not currently exist, it will be created during installation. - -```sh -php composer.phar create-project doctrine/orm path 2.2.* -``` - -It is also possible to run the command without params in a directory with an -existing `composer.json` file to bootstrap a project. - -By default the command checks for the packages on packagist.org. - -### Options - -* **--stability (-s):** Minimum stability of package. Defaults to `stable`. -* **--prefer-source:** Install packages from `source` when available. -* **--prefer-dist:** Install packages from `dist` when available. -* **--repository:** Provide a custom repository to search for the package, - which will be used instead of packagist. Can be either an HTTP URL pointing - to a `composer` repository, a path to a local `packages.json` file, or a - JSON string which similar to what the [repositories](04-schema.md#repositories) - key accepts. -* **--dev:** Install packages listed in `require-dev`. -* **--no-dev:** Disables installation of require-dev packages. -* **--no-scripts:** Disables the execution of the scripts defined in the root - package. -* **--no-progress:** Removes the progress display that can mess with some - terminals or scripts which don't handle backspace characters. -* **--no-secure-http:** Disable the secure-http config option temporarily while - installing the root package. Use at your own risk. Using this flag is a bad - idea. -* **--keep-vcs:** Skip the deletion of the VCS metadata for the created - project. This is mostly useful if you run the command in non-interactive - mode. -* **--remove-vcs:** Force-remove the VCS metadata without prompting. -* **--no-install:** Disables installation of the vendors. -* **--ignore-platform-reqs:** ignore `php`, `hhvm`, `lib-*` and `ext-*` - requirements and force the installation even if the local machine does not - fulfill these. - -## dump-autoload (dumpautoload) - -If you need to update the autoloader because of new classes in a classmap -package for example, you can use `dump-autoload` to do that without having to -go through an install or update. - -Additionally, it can dump an optimized autoloader that converts PSR-0/4 packages -into classmap ones for performance reasons. In large applications with many -classes, the autoloader can take up a substantial portion of every request's -time. Using classmaps for everything is less convenient in development, but -using this option you can still use PSR-0/4 for convenience and classmaps for -performance. - -### Options -* **--no-scripts:** Skips the execution of all scripts defined in `composer.json` file. -* **--optimize (-o):** Convert PSR-0/4 autoloading to classmap to get a faster - autoloader. This is recommended especially for production, but can take - a bit of time to run so it is currently not done by default. -* **--classmap-authoritative (-a):** Autoload classes from the classmap only. - Implicitly enables `--optimize`. -* **--apcu:** Use APCu to cache found/not-found classes. -* **--no-dev:** Disables autoload-dev rules. - -## clear-cache (clearcache) - -Deletes all content from Composer's cache directories. - -## licenses - -Lists the name, version and license of every package installed. Use -`--format=json` to get machine readable output. - -### Options - -* **--format:** Format of the output: text or json (default: "text") -* **--no-dev:** Remove dev dependencies from the output - -## run-script - -### Options - -* **--timeout:** Set the script timeout in seconds, or 0 for no timeout. -* **--dev:** Sets the dev mode. -* **--no-dev:** Disable dev mode. -* **--list (-l):** List user defined scripts. - -To run [scripts](articles/scripts.md) manually you can use this command, -give it the script name and optionally any required arguments. - -## exec - -Executes a vendored binary/script. You can execute any command and this will -ensure that the Composer bin-dir is pushed on your PATH before the command -runs. - -### Options - -* **--list (-l):** List the available composer binaries. - -## diagnose - -If you think you found a bug, or something is behaving strangely, you might -want to run the `diagnose` command to perform automated checks for many common -problems. - -```sh -php composer.phar diagnose -``` - -## archive - -This command is used to generate a zip/tar archive for a given package in a -given version. It can also be used to archive your entire project without -excluded/ignored files. - -```sh -php composer.phar archive vendor/package 2.0.21 --format=zip -``` - -### Options - -* **--format (-f):** Format of the resulting archive: tar or zip (default: - "tar") -* **--dir:** Write the archive to this directory (default: ".") -* **--file:** Write the archive with the given file name. - -## help - -To get more information about a certain command, you can use `help`. - -```sh -php composer.phar help install -``` - -## Command-line completion - -Command-line completion can be enabled by following instructions -[on this page](https://github.com/bamarni/symfony-console-autocomplete). - -## Environment variables - -You can set a number of environment variables that override certain settings. -Whenever possible it is recommended to specify these settings in the `config` -section of `composer.json` instead. It is worth noting that the env vars will -always take precedence over the values specified in `composer.json`. - -### COMPOSER - -By setting the `COMPOSER` env variable it is possible to set the filename of -`composer.json` to something else. - -For example: - -```sh -COMPOSER=composer-other.json php composer.phar install -``` - -The generated lock file will use the same name: `composer-other.lock` in this example. - -### COMPOSER_ALLOW_SUPERUSER - -If set to 1, this env disables the warning about running commands as root/super user. -It also disables automatic clearing of sudo sessions, so you should really only set this -if you use Composer as super user at all times like in docker containers. - -### COMPOSER_AUTH - -The `COMPOSER_AUTH` var allows you to set up authentication as an environment variable. -The contents of the variable should be a JSON formatted object containing http-basic, -github-oauth, bitbucket-oauth, ... objects as needed, and following the -[spec from the config](06-config.md#gitlab-oauth). - -### COMPOSER_BIN_DIR - -By setting this option you can change the `bin` ([Vendor Binaries](articles/vendor-binaries.md)) -directory to something other than `vendor/bin`. - -### COMPOSER_CACHE_DIR - -The `COMPOSER_CACHE_DIR` var allows you to change the Composer cache directory, -which is also configurable via the [`cache-dir`](06-config.md#cache-dir) option. - -By default it points to `$COMPOSER_HOME/cache` on \*nix and macOS, and -`C:\Users\\AppData\Local\Composer` (or `%LOCALAPPDATA%/Composer`) on Windows. - -### COMPOSER_CAFILE - -By setting this environmental value, you can set a path to a certificate bundle -file to be used during SSL/TLS peer verification. - -### COMPOSER_DISCARD_CHANGES - -This env var controls the [`discard-changes`](06-config.md#discard-changes) config option. - -### COMPOSER_HOME - -The `COMPOSER_HOME` var allows you to change the Composer home directory. This -is a hidden, global (per-user on the machine) directory that is shared between -all projects. - -By default it points to `C:\Users\\AppData\Roaming\Composer` on Windows -and `/Users//.composer` on macOS. On \*nix systems that follow the [XDG Base -Directory Specifications](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html), -it points to `$XDG_CONFIG_HOME/composer`. On other \*nix systems, it points to -`/home//.composer`. - -#### COMPOSER_HOME/config.json - -You may put a `config.json` file into the location which `COMPOSER_HOME` points -to. Composer will merge this configuration with your project's `composer.json` -when you run the `install` and `update` commands. - -This file allows you to set [repositories](05-repositories.md) and -[configuration](06-config.md) for the user's projects. - -In case global configuration matches _local_ configuration, the _local_ -configuration in the project's `composer.json` always wins. - -### COMPOSER_HTACCESS_PROTECT - -Defaults to `1`. If set to `0`, Composer will not create `.htaccess` files in the -composer home, cache, and data directories. - -### COMPOSER_MEMORY_LIMIT - -If set, the value is used as php's memory_limit. - -### COMPOSER_MIRROR_PATH_REPOS - -If set to 1, this env changes the default path repository strategy to `mirror` instead -of `symlink`. As it is the default strategy being set it can still be overwritten by -repository options. - -### COMPOSER_NO_INTERACTION - -If set to 1, this env var will make Composer behave as if you passed the -`--no-interaction` flag to every command. This can be set on build boxes/CI. - -### COMPOSER_PROCESS_TIMEOUT - -This env var controls the time Composer waits for commands (such as git -commands) to finish executing. The default value is 300 seconds (5 minutes). - -### COMPOSER_ROOT_VERSION - -By setting this var you can specify the version of the root package, if it can -not be guessed from VCS info and is not present in `composer.json`. - -### COMPOSER_VENDOR_DIR - -By setting this var you can make Composer install the dependencies into a -directory other than `vendor`. - -### http_proxy or HTTP_PROXY - -If you are using Composer from behind an HTTP proxy, you can use the standard -`http_proxy` or `HTTP_PROXY` env vars. Simply set it to the URL of your proxy. -Many operating systems already set this variable for you. - -Using `http_proxy` (lowercased) or even defining both might be preferable since -some tools like git or curl will only use the lower-cased `http_proxy` version. -Alternatively you can also define the git proxy using -`git config --global http.proxy `. - -If you are using Composer in a non-CLI context (i.e. integration into a CMS or -similar use case), and need to support proxies, please provide the `CGI_HTTP_PROXY` -environment variable instead. See [httpoxy.org](https://httpoxy.org/) for further -details. - -### HTTP_PROXY_REQUEST_FULLURI - -If you use a proxy but it does not support the request_fulluri flag, then you -should set this env var to `false` or `0` to prevent Composer from setting the -request_fulluri option. - -### HTTPS_PROXY_REQUEST_FULLURI - -If you use a proxy but it does not support the request_fulluri flag for HTTPS -requests, then you should set this env var to `false` or `0` to prevent Composer -from setting the request_fulluri option. - -### COMPOSER_SELF_UPDATE_TARGET - -If set, makes the self-update command write the new Composer phar file into that path instead of overwriting itself. Useful for updating Composer on read-only filesystem. - -### no_proxy or NO_PROXY - -If you are behind a proxy and would like to disable it for certain domains, you -can use the `no_proxy` or `NO_PROXY` env var. Simply set it to a comma separated list of -domains the proxy should *not* be used for. - -The env var accepts domains, IP addresses, and IP address blocks in CIDR -notation. You can restrict the filter to a particular port (e.g. `:80`). You -can also set it to `*` to ignore the proxy for all HTTP requests. - -← [Libraries](02-libraries.md) | [Schema](04-schema.md) → diff --git a/vendor/composer/composer/doc/04-schema.md b/vendor/composer/composer/doc/04-schema.md deleted file mode 100644 index 7c66813..0000000 --- a/vendor/composer/composer/doc/04-schema.md +++ /dev/null @@ -1,924 +0,0 @@ -# The composer.json Schema - -This chapter will explain all of the fields available in `composer.json`. - -## JSON schema - -We have a [JSON schema](http://json-schema.org) that documents the format and -can also be used to validate your `composer.json`. In fact, it is used by the -`validate` command. You can find it at: https://getcomposer.org/schema.json - -## Root Package - -The root package is the package defined by the `composer.json` at the root of -your project. It is the main `composer.json` that defines your project -requirements. - -Certain fields only apply when in the root package context. One example of -this is the `config` field. Only the root package can define configuration. -The config of dependencies is ignored. This makes the `config` field -`root-only`. - -> **Note:** A package can be the root package or not, depending on the context. -> For example, if your project depends on the `monolog` library, your project -> is the root package. However, if you clone `monolog` from GitHub in order to -> fix a bug in it, then `monolog` is the root package. - -## Properties - -### name - -The name of the package. It consists of vendor name and project name, -separated by `/`. Examples: - -* monolog/monolog -* igorw/event-source - -The name can contain any character, including white spaces, and it's case -insensitive (`foo/bar` and `Foo/Bar` are considered the same package). In order -to simplify its installation, it's recommended to define a short and lowercase -name that doesn't include non-alphanumeric characters or white spaces. - -Required for published packages (libraries). - -### description - -A short description of the package. Usually this is one line long. - -Required for published packages (libraries). - -### version - -The version of the package. In most cases this is not required and should -be omitted (see below). - -This must follow the format of `X.Y.Z` or `vX.Y.Z` with an optional suffix -of `-dev`, `-patch` (`-p`), `-alpha` (`-a`), `-beta` (`-b`) or `-RC`. -The patch, alpha, beta and RC suffixes can also be followed by a number. - -Examples: - -- 1.0.0 -- 1.0.2 -- 1.1.0 -- 0.2.5 -- 1.0.0-dev -- 1.0.0-alpha3 -- 1.0.0-beta2 -- 1.0.0-RC5 -- v2.0.4-p1 - -Optional if the package repository can infer the version from somewhere, such -as the VCS tag name in the VCS repository. In that case it is also recommended -to omit it. - -> **Note:** Packagist uses VCS repositories, so the statement above is very -> much true for Packagist as well. Specifying the version yourself will -> most likely end up creating problems at some point due to human error. - -### type - -The type of the package. It defaults to `library`. - -Package types are used for custom installation logic. If you have a package -that needs some special logic, you can define a custom type. This could be a -`symfony-bundle`, a `wordpress-plugin` or a `typo3-cms-extension`. These types -will all be specific to certain projects, and they will need to provide an -installer capable of installing packages of that type. - -Out of the box, Composer supports four types: - -- **library:** This is the default. It will simply copy the files to `vendor`. -- **project:** This denotes a project rather than a library. For example - application shells like the [Symfony standard edition](https://github.com/symfony/symfony-standard), - CMSs like the [SilverStripe installer](https://github.com/silverstripe/silverstripe-installer) - or full fledged applications distributed as packages. This can for example - be used by IDEs to provide listings of projects to initialize when creating - a new workspace. -- **metapackage:** An empty package that contains requirements and will trigger - their installation, but contains no files and will not write anything to the - filesystem. As such, it does not require a dist or source key to be - installable. -- **composer-plugin:** A package of type `composer-plugin` may provide an - installer for other packages that have a custom type. Read more in the - [dedicated article](articles/custom-installers.md). - -Only use a custom type if you need custom logic during installation. It is -recommended to omit this field and have it default to `library`. - -### keywords - -An array of keywords that the package is related to. These can be used for -searching and filtering. - -Examples: - -- logging -- events -- database -- redis -- templating - -Optional. - -### homepage - -An URL to the website of the project. - -Optional. - -### readme - -A relative path to the readme document. - -Optional. - -### time - -Release date of the version. - -Must be in `YYYY-MM-DD` or `YYYY-MM-DD HH:MM:SS` format. - -Optional. - -### license - -The license of the package. This can be either a string or an array of strings. - -The recommended notation for the most common licenses is (alphabetical): - -- Apache-2.0 -- BSD-2-Clause -- BSD-3-Clause -- BSD-4-Clause -- GPL-2.0-only / GPL-2.0-or-later -- GPL-3.0-only / GPL-3.0-or-later -- LGPL-2.1-only / LGPL-2.1-or-later -- LGPL-3.0-only / LGPL-3.0-or-later -- MIT - -Optional, but it is highly recommended to supply this. More identifiers are -listed at the [SPDX Open Source License Registry](https://spdx.org/licenses/). - -For closed-source software, you may use `"proprietary"` as the license identifier. - -An Example: - -```json -{ - "license": "MIT" -} -``` - -For a package, when there is a choice between licenses ("disjunctive license"), -multiple can be specified as array. - -An Example for disjunctive licenses: - -```json -{ - "license": [ - "LGPL-2.1-only", - "GPL-3.0-or-later" - ] -} -``` - -Alternatively they can be separated with "or" and enclosed in parenthesis; - -```json -{ - "license": "(LGPL-2.1-only or GPL-3.0-or-later)" -} -``` - -Similarly when multiple licenses need to be applied ("conjunctive license"), -they should be separated with "and" and enclosed in parenthesis. - -### authors - -The authors of the package. This is an array of objects. - -Each author object can have following properties: - -* **name:** The author's name. Usually their real name. -* **email:** The author's email address. -* **homepage:** An URL to the author's website. -* **role:** The author's role in the project (e.g. developer or translator) - -An example: - -```json -{ - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de", - "role": "Developer" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be", - "role": "Developer" - } - ] -} -``` - -Optional, but highly recommended. - -### support - -Various information to get support about the project. - -Support information includes the following: - -* **email:** Email address for support. -* **issues:** URL to the issue tracker. -* **forum:** URL to the forum. -* **wiki:** URL to the wiki. -* **irc:** IRC channel for support, as irc://server/channel. -* **source:** URL to browse or download the sources. -* **docs:** URL to the documentation. -* **rss:** URL to the RSS feed. -* **chat:** URL to the chat channel. - -An example: - -```json -{ - "support": { - "email": "support@example.org", - "irc": "irc://irc.freenode.org/composer" - } -} -``` - -Optional. - -### Package links - -All of the following take an object which maps package names to -versions of the package via version constraints. Read more about -versions [here](articles/versions.md). - -Example: - -```json -{ - "require": { - "monolog/monolog": "1.0.*" - } -} -``` - -All links are optional fields. - -`require` and `require-dev` additionally support stability flags ([root-only](04-schema.md#root-package)). -These allow you to further restrict or expand the stability of a package beyond -the scope of the [minimum-stability](#minimum-stability) setting. You can apply -them to a constraint, or apply them to an empty constraint if you want to -allow unstable packages of a dependency for example. - -Example: - -```json -{ - "require": { - "monolog/monolog": "1.0.*@beta", - "acme/foo": "@dev" - } -} -``` - -If one of your dependencies has a dependency on an unstable package you need to -explicitly require it as well, along with its sufficient stability flag. - -Example: - -Assuming `doctrine/doctrine-fixtures-bundle` requires `"doctrine/data-fixtures": "dev-master"` -then inside the root composer.json you need to add the second line below to allow dev -releases for the `doctrine/data-fixtures` package : - -```json -{ - "require": { - "doctrine/doctrine-fixtures-bundle": "dev-master", - "doctrine/data-fixtures": "@dev" - } -} -``` - -`require` and `require-dev` additionally support explicit references (i.e. -commit) for dev versions to make sure they are locked to a given state, even -when you run update. These only work if you explicitly require a dev version -and append the reference with `#`. This is also a -[root-only](04-schema.md#root-package) feature and will be ignored in -dependencies. - -Example: - -```json -{ - "require": { - "monolog/monolog": "dev-master#2eb0c0978d290a1c45346a1955188929cb4e5db7", - "acme/foo": "1.0.x-dev#abc123" - } -} -``` - -> **Note:** This feature has severe technical limitations, as the -> composer.json metadata will still be read from the branch name you specify -> before the hash. You should therefore only use this as a temporary solution -> during development to remediate transient issues, until you can switch to -> tagged releases. The Composer team does not actively support this feature -> and will not accept bug reports related to it. - -It is also possible to inline-alias a package constraint so that it matches -a constraint that it otherwise would not. For more information [see the -aliases article](articles/aliases.md). - -`require` and `require-dev` also support references to specific PHP versions -and PHP extensions your project needs to run successfully. - -Example: - -```json -{ - "require" : { - "php" : "^5.5 || ^7.0", - "ext-mbstring": "*" - } -} -``` - -> **Note:** It is important to list PHP extensions your project requires. -> Not all PHP installations are created equal: some may miss extensions you -> may consider as standard (such as `ext-mysqli` which is not installed by -> default in Fedora/CentOS minimal installation systems). Failure to list -> required PHP extensions may lead to a bad user experience: Composer will -> install your package without any errors but it will then fail at run-time. -> The `composer show --platform` command lists all PHP extensions available on -> your system. You may use it to help you compile the list of extensions you -> use and require. Alternatively you may use third party tools to analyze -> your project for the list of extensions used. - -#### require - -Lists packages required by this package. The package will not be installed -unless those requirements can be met. - -#### require-dev ([root-only](04-schema.md#root-package)) - -Lists packages required for developing this package, or running -tests, etc. The dev requirements of the root package are installed by default. -Both `install` or `update` support the `--no-dev` option that prevents dev -dependencies from being installed. - -#### conflict - -Lists packages that conflict with this version of this package. They -will not be allowed to be installed together with your package. - -Note that when specifying ranges like `<1.0 >=1.1` in a `conflict` link, -this will state a conflict with all versions that are less than 1.0 *and* equal -or newer than 1.1 at the same time, which is probably not what you want. You -probably want to go for `<1.0 || >=1.1` in this case. - -#### replace - -Lists packages that are replaced by this package. This allows you to fork a -package, publish it under a different name with its own version numbers, while -packages requiring the original package continue to work with your fork because -it replaces the original package. - -This is also useful for packages that contain sub-packages, for example the main -symfony/symfony package contains all the Symfony Components which are also -available as individual packages. If you require the main package it will -automatically fulfill any requirement of one of the individual components, -since it replaces them. - -Caution is advised when using replace for the sub-package purpose explained -above. You should then typically only replace using `self.version` as a version -constraint, to make sure the main package only replaces the sub-packages of -that exact version, and not any other version, which would be incorrect. - -#### provide - -List of other packages that are provided by this package. This is mostly -useful for common interfaces. A package could depend on some virtual -`logger` package, any library that implements this logger interface would -simply list it in `provide`. - -#### suggest - -Suggested packages that can enhance or work well with this package. These are -informational and are displayed after the package is installed, to give -your users a hint that they could add more packages, even though they are not -strictly required. - -The format is like package links above, except that the values are free text -and not version constraints. - -Example: - -```json -{ - "suggest": { - "monolog/monolog": "Allows more advanced logging of the application flow", - "ext-xml": "Needed to support XML format in class Foo" - } -} -``` - -### autoload - -Autoload mapping for a PHP autoloader. - -[`PSR-4`](http://www.php-fig.org/psr/psr-4/) and [`PSR-0`](http://www.php-fig.org/psr/psr-0/) -autoloading, `classmap` generation and `files` includes are supported. - -PSR-4 is the recommended way since it offers greater ease of use (no need -to regenerate the autoloader when you add classes). - -#### PSR-4 - -Under the `psr-4` key you define a mapping from namespaces to paths, relative to the -package root. When autoloading a class like `Foo\\Bar\\Baz` a namespace prefix -`Foo\\` pointing to a directory `src/` means that the autoloader will look for a -file named `src/Bar/Baz.php` and include it if present. Note that as opposed to -the older PSR-0 style, the prefix (`Foo\\`) is **not** present in the file path. - -Namespace prefixes must end in `\\` to avoid conflicts between similar prefixes. -For example `Foo` would match classes in the `FooBar` namespace so the trailing -backslashes solve the problem: `Foo\\` and `FooBar\\` are distinct. - -The PSR-4 references are all combined, during install/update, into a single -key => value array which may be found in the generated file -`vendor/composer/autoload_psr4.php`. - -Example: - -```json -{ - "autoload": { - "psr-4": { - "Monolog\\": "src/", - "Vendor\\Namespace\\": "" - } - } -} -``` - -If you need to search for a same prefix in multiple directories, -you can specify them as an array as such: - -```json -{ - "autoload": { - "psr-4": { "Monolog\\": ["src/", "lib/"] } - } -} -``` - -If you want to have a fallback directory where any namespace will be looked for, -you can use an empty prefix like: - -```json -{ - "autoload": { - "psr-4": { "": "src/" } - } -} -``` - -#### PSR-0 - -Under the `psr-0` key you define a mapping from namespaces to paths, relative to the -package root. Note that this also supports the PEAR-style non-namespaced convention. - -Please note namespace declarations should end in `\\` to make sure the autoloader -responds exactly. For example `Foo` would match in `FooBar` so the trailing -backslashes solve the problem: `Foo\\` and `FooBar\\` are distinct. - -The PSR-0 references are all combined, during install/update, into a single key => value -array which may be found in the generated file `vendor/composer/autoload_namespaces.php`. - -Example: - -```json -{ - "autoload": { - "psr-0": { - "Monolog\\": "src/", - "Vendor\\Namespace\\": "src/", - "Vendor_Namespace_": "src/" - } - } -} -``` - -If you need to search for a same prefix in multiple directories, -you can specify them as an array as such: - -```json -{ - "autoload": { - "psr-0": { "Monolog\\": ["src/", "lib/"] } - } -} -``` - -The PSR-0 style is not limited to namespace declarations only but may be -specified right down to the class level. This can be useful for libraries with -only one class in the global namespace. If the php source file is also located -in the root of the package, for example, it may be declared like this: - -```json -{ - "autoload": { - "psr-0": { "UniqueGlobalClass": "" } - } -} -``` - -If you want to have a fallback directory where any namespace can be, you can -use an empty prefix like: - -```json -{ - "autoload": { - "psr-0": { "": "src/" } - } -} -``` - -#### Classmap - -The `classmap` references are all combined, during install/update, into a single -key => value array which may be found in the generated file -`vendor/composer/autoload_classmap.php`. This map is built by scanning for -classes in all `.php` and `.inc` files in the given directories/files. - -You can use the classmap generation support to define autoloading for all libraries -that do not follow PSR-0/4. To configure this you specify all directories or files -to search for classes. - -Example: - -```json -{ - "autoload": { - "classmap": ["src/", "lib/", "Something.php"] - } -} -``` - -#### Files - -If you want to require certain files explicitly on every request then you can use -the `files` autoloading mechanism. This is useful if your package includes PHP functions -that cannot be autoloaded by PHP. - -Example: - -```json -{ - "autoload": { - "files": ["src/MyLibrary/functions.php"] - } -} -``` - -#### Exclude files from classmaps - -If you want to exclude some files or folders from the classmap you can use the `exclude-from-classmap` property. -This might be useful to exclude test classes in your live environment, for example, as those will be skipped -from the classmap even when building an optimized autoloader. - -The classmap generator will ignore all files in the paths configured here. The paths are absolute from the package -root directory (i.e. composer.json location), and support `*` to match anything but a slash, and `**` to -match anything. `**` is implicitly added to the end of the paths. - -Example: - -```json -{ - "autoload": { - "exclude-from-classmap": ["/Tests/", "/test/", "/tests/"] - } -} -``` - -#### Optimizing the autoloader - -The autoloader can have quite a substantial impact on your request time -(50-100ms per request in large frameworks using a lot of classes). See the -[article about optimizing the autoloader](articles/autoloader-optimization.md) -for more details on how to reduce this impact. - -### autoload-dev ([root-only](04-schema.md#root-package)) - -This section allows to define autoload rules for development purposes. - -Classes needed to run the test suite should not be included in the main autoload -rules to avoid polluting the autoloader in production and when other people use -your package as a dependency. - -Therefore, it is a good idea to rely on a dedicated path for your unit tests -and to add it within the autoload-dev section. - -Example: - -```json -{ - "autoload": { - "psr-4": { "MyLibrary\\": "src/" } - }, - "autoload-dev": { - "psr-4": { "MyLibrary\\Tests\\": "tests/" } - } -} -``` - -### include-path - -> **DEPRECATED**: This is only present to support legacy projects, and all new code -> should preferably use autoloading. As such it is a deprecated practice, but the -> feature itself will not likely disappear from Composer. - -A list of paths which should get appended to PHP's `include_path`. - -Example: - -```json -{ - "include-path": ["lib/"] -} -``` - -Optional. - -### target-dir - -> **DEPRECATED**: This is only present to support legacy PSR-0 style autoloading, -> and all new code should preferably use PSR-4 without target-dir and projects -> using PSR-0 with PHP namespaces are encouraged to migrate to PSR-4 instead. - -Defines the installation target. - -In case the package root is below the namespace declaration you cannot -autoload properly. `target-dir` solves this problem. - -An example is Symfony. There are individual packages for the components. The -Yaml component is under `Symfony\Component\Yaml`. The package root is that -`Yaml` directory. To make autoloading possible, we need to make sure that it -is not installed into `vendor/symfony/yaml`, but instead into -`vendor/symfony/yaml/Symfony/Component/Yaml`, so that the autoloader can load -it from `vendor/symfony/yaml`. - -To do that, `autoload` and `target-dir` are defined as follows: - -```json -{ - "autoload": { - "psr-0": { "Symfony\\Component\\Yaml\\": "" } - }, - "target-dir": "Symfony/Component/Yaml" -} -``` - -Optional. - -### minimum-stability ([root-only](04-schema.md#root-package)) - -This defines the default behavior for filtering packages by stability. This -defaults to `stable`, so if you rely on a `dev` package, you should specify -it in your file to avoid surprises. - -All versions of each package are checked for stability, and those that are less -stable than the `minimum-stability` setting will be ignored when resolving -your project dependencies. (Note that you can also specify stability requirements -on a per-package basis using stability flags in the version constraints that you -specify in a `require` block (see [package links](#package-links) for more details). - -Available options (in order of stability) are `dev`, `alpha`, `beta`, `RC`, -and `stable`. - -### prefer-stable ([root-only](04-schema.md#root-package)) - -When this is enabled, Composer will prefer more stable packages over unstable -ones when finding compatible stable packages is possible. If you require a -dev version or only alphas are available for a package, those will still be -selected granted that the minimum-stability allows for it. - -Use `"prefer-stable": true` to enable. - -### repositories ([root-only](04-schema.md#root-package)) - -Custom package repositories to use. - -By default Composer only uses the packagist repository. By specifying -repositories you can get packages from elsewhere. - -Repositories are not resolved recursively. You can only add them to your main -`composer.json`. Repository declarations of dependencies' `composer.json`s are -ignored. - -The following repository types are supported: - -* **composer:** A Composer repository is simply a `packages.json` file served - via the network (HTTP, FTP, SSH), that contains a list of `composer.json` - objects with additional `dist` and/or `source` information. The `packages.json` - file is loaded using a PHP stream. You can set extra options on that stream - using the `options` parameter. -* **vcs:** The version control system repository can fetch packages from git, - svn, fossil and hg repositories. -* **pear:** With this you can import any pear repository into your Composer - project. -* **package:** If you depend on a project that does not have any support for - composer whatsoever you can define the package inline using a `package` - repository. You basically inline the `composer.json` object. - -For more information on any of these, see [Repositories](05-repositories.md). - -Example: - -```json -{ - "repositories": [ - { - "type": "composer", - "url": "http://packages.example.com" - }, - { - "type": "composer", - "url": "https://packages.example.com", - "options": { - "ssl": { - "verify_peer": "true" - } - } - }, - { - "type": "vcs", - "url": "https://github.com/Seldaek/monolog" - }, - { - "type": "pear", - "url": "https://pear2.php.net" - }, - { - "type": "package", - "package": { - "name": "smarty/smarty", - "version": "3.1.7", - "dist": { - "url": "https://www.smarty.net/files/Smarty-3.1.7.zip", - "type": "zip" - }, - "source": { - "url": "https://smarty-php.googlecode.com/svn/", - "type": "svn", - "reference": "tags/Smarty_3_1_7/distribution/" - } - } - } - ] -} -``` - -> **Note:** Order is significant here. When looking for a package, Composer -will look from the first to the last repository, and pick the first match. -By default Packagist is added last which means that custom repositories can -override packages from it. - -Using JSON object notation is also possible. However, JSON key/value pairs -are to be considered unordered so consistent behaviour cannot be guaranteed. - - ```json -{ - "repositories": { - "foo": { - "type": "composer", - "url": "http://packages.foo.com" - } - } -} - ``` - -### config ([root-only](04-schema.md#root-package)) - -A set of configuration options. It is only used for projects. See -[Config](06-config.md) for a description of each individual option. - -### scripts ([root-only](04-schema.md#root-package)) - -Composer allows you to hook into various parts of the installation process -through the use of scripts. - -See [Scripts](articles/scripts.md) for events details and examples. - -### extra - -Arbitrary extra data for consumption by `scripts`. - -This can be virtually anything. To access it from within a script event -handler, you can do: - -```php -$extra = $event->getComposer()->getPackage()->getExtra(); -``` - -Optional. - -### bin - -A set of files that should be treated as binaries and symlinked into the `bin-dir` -(from config). - -See [Vendor Binaries](articles/vendor-binaries.md) for more details. - -Optional. - -### archive - -A set of options for creating package archives. - -The following options are supported: - -* **exclude:** Allows configuring a list of patterns for excluded paths. The - pattern syntax matches .gitignore files. A leading exclamation mark (!) will - result in any matching files to be included even if a previous pattern - excluded them. A leading slash will only match at the beginning of the project - relative path. An asterisk will not expand to a directory separator. - -Example: - -```json -{ - "archive": { - "exclude": ["/foo/bar", "baz", "/*.test", "!/foo/bar/baz"] - } -} -``` - -The example will include `/dir/foo/bar/file`, `/foo/bar/baz`, `/file.php`, -`/foo/my.test` but it will exclude `/foo/bar/any`, `/foo/baz`, and `/my.test`. - -Optional. - -### abandoned - -Indicates whether this package has been abandoned. - -It can be boolean or a package name/URL pointing to a recommended alternative. - -Examples: - -Use `"abandoned": true` to indicates this package is abandoned. -Use `"abandoned": "monolog/monolog"` to indicates this package is abandoned and the -recommended alternative is `monolog/monolog`. - -Defaults to false. - -Optional. - -### non-feature-branches - -A list of regex patterns of branch names that are non-numeric (e.g. "latest" or something), -that will NOT be handled as feature branches. This is an array of strings. - -If you have non-numeric branch names, for example like "latest", "current", "latest-stable" -or something, that do not look like a version number, then Composer handles such branches -as feature branches. This means it searches for parent branches, that look like a version -or ends at special branches (like master) and the root package version number becomes the -version of the parent branch or at least master or something. - -To handle non-numeric named branches as versions instead of searching for a parent branch -with a valid version or special branch name like master, you can set patterns for branch -names, that should be handled as dev version branches. - -This is really helpful when you have dependencies using "self.version", so that not dev-master, -but the same branch is installed (in the example: latest-testing). - -An example: - -If you have a testing branch, that is heavily maintained during a testing phase and is -deployed to your staging environment, normally `composer show -s` will give you `versions : * dev-master`. - -If you configure `latest-.*` as a pattern for non-feature-branches like this: - -```json -{ - "non-feature-branches": ["latest-.*"] -} -``` - -Then `composer show -s` will give you `versions : * dev-latest-testing`. - -Optional. - -← [Command-line interface](03-cli.md) | [Repositories](05-repositories.md) → diff --git a/vendor/composer/composer/doc/05-repositories.md b/vendor/composer/composer/doc/05-repositories.md deleted file mode 100644 index ba5713a..0000000 --- a/vendor/composer/composer/doc/05-repositories.md +++ /dev/null @@ -1,717 +0,0 @@ -# Repositories - -This chapter will explain the concept of packages and repositories, what kinds -of repositories are available, and how they work. - -## Concepts - -Before we look at the different types of repositories that exist, we need to -understand some of the basic concepts that Composer is built on. - -### Package - -Composer is a dependency manager. It installs packages locally. A package is -essentially a directory containing something. In this case it is PHP -code, but in theory it could be anything. And it contains a package -description which has a name and a version. The name and the version are used -to identify the package. - -In fact, internally Composer sees every version as a separate package. While -this distinction does not matter when you are using Composer, it's quite -important when you want to change it. - -In addition to the name and the version, there is useful metadata. The -information most relevant for installation is the source definition, which -describes where to get the package contents. The package data points to the -contents of the package. And there are two options here: dist and source. - -**Dist:** The dist is a packaged version of the package data. Usually a -released version, usually a stable release. - -**Source:** The source is used for development. This will usually originate -from a source code repository, such as git. You can fetch this when you want -to modify the downloaded package. - -Packages can supply either of these, or even both. Depending on certain -factors, such as user-supplied options and stability of the package, one will -be preferred. - -### Repository - -A repository is a package source. It's a list of packages/versions. Composer -will look in all your repositories to find the packages your project requires. - -By default only the Packagist repository is registered in Composer. You can -add more repositories to your project by declaring them in `composer.json`. - -Repositories are only available to the root package and the repositories -defined in your dependencies will not be loaded. Read the -[FAQ entry](faqs/why-can't-composer-load-repositories-recursively.md) if you -want to learn why. - -## Types - -### Composer - -The main repository type is the `composer` repository. It uses a single -`packages.json` file that contains all of the package metadata. - -This is also the repository type that packagist uses. To reference a -`composer` repository, supply the path before the `packages.json` file. -In the case of packagist, that file is located at `/packages.json`, so the URL of -the repository would be `repo.packagist.org`. For `example.org/packages.json` the -repository URL would be `example.org`. - -#### packages - -The only required field is `packages`. The JSON structure is as follows: - -```json -{ - "packages": { - "vendor/package-name": { - "dev-master": { @composer.json }, - "1.0.x-dev": { @composer.json }, - "0.0.1": { @composer.json }, - "1.0.0": { @composer.json } - } - } -} -``` - -The `@composer.json` marker would be the contents of the `composer.json` from -that package version including as a minimum: - -* name -* version -* dist or source - -Here is a minimal package definition: - -```json -{ - "name": "smarty/smarty", - "version": "3.1.7", - "dist": { - "url": "https://www.smarty.net/files/Smarty-3.1.7.zip", - "type": "zip" - } -} -``` - -It may include any of the other fields specified in the [schema](04-schema.md). - -#### notify-batch - -The `notify-batch` field allows you to specify a URL that will be called -every time a user installs a package. The URL can be either an absolute path -(that will use the same domain as the repository) or a fully qualified URL. - -An example value: - -```json -{ - "notify-batch": "/downloads/" -} -``` - -For `example.org/packages.json` containing a `monolog/monolog` package, this -would send a `POST` request to `example.org/downloads/` with following -JSON request body: - -```json -{ - "downloads": [ - {"name": "monolog/monolog", "version": "1.2.1.0"} - ] -} -``` - -The version field will contain the normalized representation of the version -number. - -This field is optional. - -#### provider-includes and providers-url - -The `provider-includes` field allows you to list a set of files that list -package names provided by this repository. The hash should be a sha256 of -the files in this case. - -The `providers-url` describes how provider files are found on the server. It -is an absolute path from the repository root. It must contain the placeholders -`%package%` and `%hash%`. - -An example: - -```json -{ - "provider-includes": { - "providers-a.json": { - "sha256": "f5b4bc0b354108ef08614e569c1ed01a2782e67641744864a74e788982886f4c" - }, - "providers-b.json": { - "sha256": "b38372163fac0573053536f5b8ef11b86f804ea8b016d239e706191203f6efac" - } - }, - "providers-url": "/p/%package%$%hash%.json" -} -``` - -Those files contain lists of package names and hashes to verify the file -integrity, for example: - -```json -{ - "providers": { - "acme/foo": { - "sha256": "38968de1305c2e17f4de33aea164515bc787c42c7e2d6e25948539a14268bb82" - }, - "acme/bar": { - "sha256": "4dd24c930bd6e1103251306d6336ac813b563a220d9ca14f4743c032fb047233" - } - } -} -``` - -The file above declares that acme/foo and acme/bar can be found in this -repository, by loading the file referenced by `providers-url`, replacing -`%package%` by the vendor namespaced package name and `%hash%` by the -sha256 field. Those files themselves contain package definitions as -described [above](#packages). - -These fields are optional. You probably don't need them for your own custom -repository. - -#### stream options - -The `packages.json` file is loaded using a PHP stream. You can set extra -options on that stream using the `options` parameter. You can set any valid -PHP stream context option. See [Context options and -parameters](https://php.net/manual/en/context.php) for more information. - -### VCS - -VCS stands for version control system. This includes versioning systems like -git, svn, fossil or hg. Composer has a repository type for installing packages -from these systems. - -#### Loading a package from a VCS repository - -There are a few use cases for this. The most common one is maintaining your -own fork of a third party library. If you are using a certain library for your -project and you decide to change something in the library, you will want your -project to use the patched version. If the library is on GitHub (this is the -case most of the time), you can simply fork it there and push your changes to -your fork. After that you update the project's `composer.json`. All you have -to do is add your fork as a repository and update the version constraint to -point to your custom branch. In `composer.json`, you should prefix your custom -branch name with `"dev-"`. For version constraint naming conventions see -[Libraries](02-libraries.md) for more information. - -Example assuming you patched monolog to fix a bug in the `bugfix` branch: - -```json -{ - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/igorw/monolog" - } - ], - "require": { - "monolog/monolog": "dev-bugfix" - } -} -``` - -When you run `php composer.phar update`, you should get your modified version -of `monolog/monolog` instead of the one from packagist. - -Note that you should not rename the package unless you really intend to fork -it in the long term, and completely move away from the original package. -Composer will correctly pick your package over the original one since the -custom repository has priority over packagist. If you want to rename the -package, you should do so in the default (often master) branch and not in a -feature branch, since the package name is taken from the default branch. - -Also note that the override will not work if you change the `name` property -in your forked repository's `composer.json` file as this needs to match the -original for the override to work. - -If other dependencies rely on the package you forked, it is possible to -inline-alias it so that it matches a constraint that it otherwise would not. -For more information [see the aliases article](articles/aliases.md). - -#### Using private repositories - -Exactly the same solution allows you to work with your private repositories at -GitHub and BitBucket: - -```json -{ - "require": { - "vendor/my-private-repo": "dev-master" - }, - "repositories": [ - { - "type": "vcs", - "url": "git@bitbucket.org:vendor/my-private-repo.git" - } - ] -} -``` - -The only requirement is the installation of SSH keys for a git client. - -#### Git alternatives - -Git is not the only version control system supported by the VCS repository. -The following are supported: - -* **Git:** [git-scm.com](https://git-scm.com) -* **Subversion:** [subversion.apache.org](https://subversion.apache.org) -* **Mercurial:** [mercurial-scm.org](https://www.mercurial-scm.org) -* **Fossil**: [fossil-scm.org](https://www.fossil-scm.org/) - -To get packages from these systems you need to have their respective clients -installed. That can be inconvenient. And for this reason there is special -support for GitHub and BitBucket that use the APIs provided by these sites, to -fetch the packages without having to install the version control system. The -VCS repository provides `dist`s for them that fetch the packages as zips. - -* **GitHub:** [github.com](https://github.com) (Git) -* **BitBucket:** [bitbucket.org](https://bitbucket.org) (Git and Mercurial) - -The VCS driver to be used is detected automatically based on the URL. However, -should you need to specify one for whatever reason, you can use `git-bitbucket`, -`hg-bitbucket`, `github`, `gitlab`, `perforce`, `fossil`, `git`, `svn` or `hg` -as the repository type instead of `vcs`. - -If you set the `no-api` key to `true` on a github repository it will clone the -repository as it would with any other git repository instead of using the -GitHub API. But unlike using the `git` driver directly, Composer will still -attempt to use github's zip files. - -Please note: -* **To let Composer choose which driver to use** the repository type needs to be defined as "vcs" -* **If you already used a private repository**, this means Composer should have cloned it in cache. If you want to install the same package with drivers, remember to launch the command `composer clearcache` followed by the command `composer update` to update composer cache and install the package from dist. - -#### BitBucket Driver Configuration - -The BitBucket driver uses OAuth to access your private repositories via the BitBucket REST APIs and you will need to create an OAuth consumer to use the driver, please refer to [Atlassian's Documentation](https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html). You will need to fill the callback url with something to satisfy BitBucket, but the address does not need to go anywhere and is not used by Composer. - -After creating an OAuth consumer in the BitBucket control panel, you need to setup your auth.json file with -the credentials like this (more info [here](https://getcomposer.org/doc/06-config.md#bitbucket-oauth)): -```json -{ - "bitbucket-oauth": { - "bitbucket.org": { - "consumer-key": "myKey", - "consumer-secret": "mySecret" - } - } -} -``` -**Note that the repository endpoint needs to be https rather than git.** - -Alternatively if you prefer not to have your OAuth credentials on your filesystem you may export the ```bitbucket-oauth``` block above to the [COMPOSER_AUTH](https://getcomposer.org/doc/03-cli.md#composer-auth) environment variable instead. - -#### Subversion Options - -Since Subversion has no native concept of branches and tags, Composer assumes -by default that code is located in `$url/trunk`, `$url/branches` and -`$url/tags`. If your repository has a different layout you can change those -values. For example if you used capitalized names you could configure the -repository like this: - -```json -{ - "repositories": [ - { - "type": "vcs", - "url": "http://svn.example.org/projectA/", - "trunk-path": "Trunk", - "branches-path": "Branches", - "tags-path": "Tags" - } - ] -} -``` - -If you have no branches or tags directory you can disable them entirely by -setting the `branches-path` or `tags-path` to `false`. - -If the package is in a sub-directory, e.g. `/trunk/foo/bar/composer.json` and -`/tags/1.0/foo/bar/composer.json`, then you can make Composer access it by -setting the `"package-path"` option to the sub-directory, in this example it -would be `"package-path": "foo/bar/"`. - -If you have a private Subversion repository you can save credentials in the -http-basic section of your config (See [Schema](04-schema.md)): - -```json -{ - "http-basic": { - "svn.example.org": { - "username": "username", - "password": "password" - } - } -} -``` - -If your Subversion client is configured to store credentials by default these -credentials will be saved for the current user and existing saved credentials -for this server will be overwritten. To change this behavior by setting the -`"svn-cache-credentials"` option in your repository configuration: - -```json -{ - "repositories": [ - { - "type": "vcs", - "url": "http://svn.example.org/projectA/", - "svn-cache-credentials": false - } - ] -} -``` - -### PEAR - -It is possible to install packages from any PEAR channel by using the `pear` -repository. Composer will prefix all package names with `pear-{channelName}/` -to avoid conflicts. All packages are also aliased with prefix -`pear-{channelAlias}/`. - -Example using `pear2.php.net`: - -```json -{ - "repositories": [ - { - "type": "pear", - "url": "https://pear2.php.net" - } - ], - "require": { - "pear-pear2.php.net/PEAR2_Text_Markdown": "*", - "pear-pear2/PEAR2_HTTP_Request": "*" - } -} -``` - -In this case the short name of the channel is `pear2`, so the -`PEAR2_HTTP_Request` package name becomes `pear-pear2/PEAR2_HTTP_Request`. - -> **Note:** The `pear` repository requires doing quite a few requests per -> package, so this may considerably slow down the installation process. - -#### Custom vendor alias - -It is possible to alias PEAR channel packages with a custom vendor name. - -Example: - -Suppose you have a private PEAR repository and wish to use Composer to -incorporate dependencies from a VCS. Your PEAR repository contains the -following packages: - - * `BasePackage` - * `IntermediatePackage`, which depends on `BasePackage` - * `TopLevelPackage1` and `TopLevelPackage2` which both depend - on `IntermediatePackage` - -Without a vendor alias, Composer will use the PEAR channel name as the -vendor portion of the package name: - - * `pear-pear.foobar.repo/BasePackage` - * `pear-pear.foobar.repo/IntermediatePackage` - * `pear-pear.foobar.repo/TopLevelPackage1` - * `pear-pear.foobar.repo/TopLevelPackage2` - -Suppose at a later time you wish to migrate your PEAR packages to a -Composer repository and naming scheme, and adopt the vendor name of `foobar`. -Projects using your PEAR packages would not see the updated packages, since -they have a different vendor name (`foobar/IntermediatePackage` vs -`pear-pear.foobar.repo/IntermediatePackage`). - -By specifying `vendor-alias` for the PEAR repository from the start, you can -avoid this scenario and future-proof your package names. - -To illustrate, the following example would get the `BasePackage`, -`TopLevelPackage1`, and `TopLevelPackage2` packages from your PEAR repository -and `IntermediatePackage` from a Github repository: - -```json -{ - "repositories": [ - { - "type": "git", - "url": "https://github.com/foobar/intermediate.git" - }, - { - "type": "pear", - "url": "http://pear.foobar.repo", - "vendor-alias": "foobar" - } - ], - "require": { - "foobar/TopLevelPackage1": "*", - "foobar/TopLevelPackage2": "*" - } -} -``` - -### Package - -If you want to use a project that does not support Composer through any of the -means above, you still can define the package yourself by using a `package` -repository. - -Basically, you define the same information that is included in the `composer` -repository's `packages.json`, but only for a single package. Again, the -minimum required fields are `name`, `version`, and either of `dist` or -`source`. - -Here is an example for the smarty template engine: - -```json -{ - "repositories": [ - { - "type": "package", - "package": { - "name": "smarty/smarty", - "version": "3.1.7", - "dist": { - "url": "https://www.smarty.net/files/Smarty-3.1.7.zip", - "type": "zip" - }, - "source": { - "url": "http://smarty-php.googlecode.com/svn/", - "type": "svn", - "reference": "tags/Smarty_3_1_7/distribution/" - }, - "autoload": { - "classmap": ["libs/"] - } - } - } - ], - "require": { - "smarty/smarty": "3.1.*" - } -} -``` - -Typically you would leave the source part off, as you don't really need it. - -> **Note**: This repository type has a few limitations and should be avoided -> whenever possible: -> -> - Composer will not update the package unless you change the `version` field. -> - Composer will not update the commit references, so if you use `master` as -> reference you will have to delete the package to force an update, and will -> have to deal with an unstable lock file. - -The `"package"` key in a `package` repository may be set to an array to define multiple versions of a package: - -```json -{ - "repositories": [ - { - "type": "package", - "package": [ - { - "name": "foo/bar", - "version": "1.0.0", - ... - }, - { - "name": "foo/bar", - "version": "2.0.0", - ... - } - ] - } - ] -} -``` - -## Hosting your own - -While you will probably want to put your packages on packagist most of the -time, there are some use cases for hosting your own repository. - -* **Private company packages:** If you are part of a company that uses Composer - for their packages internally, you might want to keep those packages private. - -* **Separate ecosystem:** If you have a project which has its own ecosystem, - and the packages aren't really reusable by the greater PHP community, you - might want to keep them separate to packagist. An example of this would be - wordpress plugins. - -For hosting your own packages, a native `composer` type of repository is -recommended, which provides the best performance. - -There are a few tools that can help you create a `composer` repository. - -### Private Packagist - -[Private Packagist](https://packagist.com/) is a hosted or self-hosted -application providing private package hosting as well as mirroring of -GitHub, Packagist.org and other package repositories. - -Check out [Packagist.com](https://packagist.com/) for more information. - -### Satis - -Satis is a static `composer` repository generator. It is a bit like an ultra- -lightweight, static file-based version of packagist. - -You give it a `composer.json` containing repositories, typically VCS and -package repository definitions. It will fetch all the packages that are -`require`d and dump a `packages.json` that is your `composer` repository. - -Check [the satis GitHub repository](https://github.com/composer/satis) and -the [Satis article](articles/handling-private-packages-with-satis.md) for more -information. - -### Artifact - -There are some cases, when there is no ability to have one of the previously -mentioned repository types online, even the VCS one. Typical example could be -cross-organisation library exchange through built artifacts. Of course, most -of the times they are private. To simplify maintenance, one can simply use a -repository of type `artifact` with a folder containing ZIP archives of those -private packages: - -```json -{ - "repositories": [ - { - "type": "artifact", - "url": "path/to/directory/with/zips/" - } - ], - "require": { - "private-vendor-one/core": "15.6.2", - "private-vendor-two/connectivity": "*", - "acme-corp/parser": "10.3.5" - } -} -``` - -Each zip artifact is a ZIP archive with `composer.json` in root folder: - -```sh -unzip -l acme-corp-parser-10.3.5.zip - -composer.json -... -``` - -If there are two archives with different versions of a package, they are both -imported. When an archive with a newer version is added in the artifact folder -and you run `update`, that version will be imported as well and Composer will -update to the latest version. - -### Path - -In addition to the artifact repository, you can use the path one, which allows -you to depend on a local directory, either absolute or relative. This can be -especially useful when dealing with monolithic repositories. - -For instance, if you have the following directory structure in your repository: -``` -- apps -\_ my-app - \_ composer.json -- packages -\_ my-package - \_ composer.json -``` - -Then, to add the package `my/package` as a dependency, in your -`apps/my-app/composer.json` file, you can use the following configuration: - -```json -{ - "repositories": [ - { - "type": "path", - "url": "../../packages/my-package" - } - ], - "require": { - "my/package": "*" - } -} -``` - -If the package is a local VCS repository, the version may be inferred by -the branch or tag that is currently checked out. Otherwise, the version should -be explicitly defined in the package's `composer.json` file. If the version -cannot be resolved by these means, it is assumed to be `dev-master`. - -The local package will be symlinked if possible, in which case the output in -the console will read `Symlinking from ../../packages/my-package`. If symlinking -is _not_ possible the package will be copied. In that case, the console will -output `Mirrored from ../../packages/my-package`. - -Instead of default fallback strategy you can force to use symlink with -`"symlink": true` or mirroring with `"symlink": false` option. Forcing -mirroring can be useful when deploying or generating package from a -monolithic repository. - -> **Note:** On Windows, directory symlinks are implemented using NTFS junctions -> because they can be created by non-admin users. Mirroring will always be used -> on versions below Windows 7 or if `proc_open` has been disabled. - -```json -{ - "repositories": [ - { - "type": "path", - "url": "../../packages/my-package", - "options": { - "symlink": false - } - } - ] -} -``` - -Leading tildes are expanded to the current user's home folder, and environment -variables are parsed in both Windows and Linux/Mac notations. For example -`~/git/mypackage` will automatically load the mypackage clone from -`/home//git/mypackage`, equivalent to `$HOME/git/mypackage` or -`%USERPROFILE%/git/mypackage`. - -> **Note:** Repository paths can also contain wildcards like ``*`` and ``?``. -> For details, see the [PHP glob function](http://php.net/glob). - -## Disabling Packagist.org - -You can disable the default Packagist.org repository by adding this to your -`composer.json`: - -```json -{ - "repositories": [ - { - "packagist.org": false - } - ] -} -``` - -You can disable Packagist.org globally by using the global config flag: - -```bash -composer config -g repo.packagist false -``` - -← [Schema](04-schema.md) | [Config](06-config.md) → diff --git a/vendor/composer/composer/doc/06-config.md b/vendor/composer/composer/doc/06-config.md deleted file mode 100644 index f3afc4e..0000000 --- a/vendor/composer/composer/doc/06-config.md +++ /dev/null @@ -1,299 +0,0 @@ -# Config - -This chapter will describe the `config` section of the `composer.json` -[schema](04-schema.md). - -## process-timeout - -Defaults to `300`. The duration processes like git clones can run before -Composer assumes they died out. You may need to make this higher if you have a -slow connection or huge vendors. - -To disable the process timeout on a custom command under `scripts`, a static -helper is available: - -```json -{ - "scripts": { - "test": [ - "Composer\\Config::disableProcessTimeout", - "phpunit" - ] - } -} -``` - -## use-include-path - -Defaults to `false`. If `true`, the Composer autoloader will also look for classes -in the PHP include path. - -## preferred-install - -Defaults to `auto` and can be any of `source`, `dist` or `auto`. This option -allows you to set the install method Composer will prefer to use. Can -optionally be a hash of patterns for more granular install preferences. - -```json -{ - "config": { - "preferred-install": { - "my-organization/stable-package": "dist", - "my-organization/*": "source", - "partner-organization/*": "auto", - "*": "dist" - } - } -} -``` - -> **Note:** Order matters. More specific patterns should be earlier than -> more relaxed patterns. When mixing the string notation with the hash -> configuration in global and package configurations the string notation -> is translated to a `*` package pattern. - -## store-auths - -What to do after prompting for authentication, one of: `true` (always store), -`false` (do not store) and `"prompt"` (ask every time), defaults to `"prompt"`. - -## github-protocols - -Defaults to `["https", "ssh", "git"]`. A list of protocols to use when cloning -from github.com, in priority order. By default `git` is present but only if [secure-http](#secure-http) -is disabled, as the git protocol is not encrypted. If you want your origin remote -push URLs to be using https and not ssh (`git@github.com:...`), then set the protocol -list to be only `["https"]` and Composer will stop overwriting the push URL to an ssh -URL. - -## github-oauth - -A list of domain names and oauth keys. For example using `{"github.com": -"oauthtoken"}` as the value of this option will use `oauthtoken` to access -private repositories on github and to circumvent the low IP-based rate limiting -of their API. [Read -more](articles/troubleshooting.md#api-rate-limit-and-oauth-tokens) on how to get -an OAuth token for GitHub. - -## gitlab-oauth - -A list of domain names and oauth keys. For example using `{"gitlab.com": -"oauthtoken"}` as the value of this option will use `oauthtoken` to access -private repositories on gitlab. Please note: If the package is not hosted at -gitlab.com the domain names must be also specified with the -[`gitlab-domains`](06-config.md#gitlab-domains) option. - -## gitlab-token - -A list of domain names and private tokens. For example using `{"gitlab.com": -"privatetoken"}` as the value of this option will use `privatetoken` to access -private repositories on gitlab. Please note: If the package is not hosted at -gitlab.com the domain names must be also specified with the -[`gitlab-domains`](06-config.md#gitlab-domains) option. - -## disable-tls - -Defaults to `false`. If set to true all HTTPS URLs will be tried with HTTP -instead and no network level encryption is performed. Enabling this is a -security risk and is NOT recommended. The better way is to enable the -php_openssl extension in php.ini. - -## secure-http - -Defaults to `true`. If set to true only HTTPS URLs are allowed to be -downloaded via Composer. If you really absolutely need HTTP access to something -then you can disable it, but using [Let's Encrypt](https://letsencrypt.org/) to -get a free SSL certificate is generally a better alternative. - -## bitbucket-oauth - -A list of domain names and consumers. For example using `{"bitbucket.org": -{"consumer-key": "myKey", "consumer-secret": "mySecret"}}`. [Read](https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html) -how to set up a consumer on Bitbucket. - -## cafile - -Location of Certificate Authority file on local filesystem. In PHP 5.6+ you -should rather set this via openssl.cafile in php.ini, although PHP 5.6+ should -be able to detect your system CA file automatically. - -## capath - -If cafile is not specified or if the certificate is not found there, the -directory pointed to by capath is searched for a suitable certificate. -capath must be a correctly hashed certificate directory. - -## http-basic - -A list of domain names and username/passwords to authenticate against them. For -example using `{"example.org": {"username": "alice", "password": "foo"}}` as the -value of this option will let Composer authenticate against example.org. - -> **Note:** Authentication-related config options like `http-basic` and -> `github-oauth` can also be specified inside a `auth.json` file that goes -> besides your `composer.json`. That way you can gitignore it and every -> developer can place their own credentials in there. - -## platform - -Lets you fake platform packages (PHP and extensions) so that you can emulate a -production env or define your target platform in the config. Example: `{"php": -"7.0.3", "ext-something": "4.0.3"}`. - -## vendor-dir - -Defaults to `vendor`. You can install dependencies into a different directory if -you want to. `$HOME` and `~` will be replaced by your home directory's path in -vendor-dir and all `*-dir` options below. - -## bin-dir - -Defaults to `vendor/bin`. If a project includes binaries, they will be symlinked -into this directory. - -## data-dir - -Defaults to `C:\Users\\AppData\Roaming\Composer` on Windows, -`$XDG_DATA_HOME/composer` on unix systems that follow the XDG Base Directory -Specifications, and `$home` on other unix systems. Right now it is only -used for storing past composer.phar files to be able to rollback to older -versions. See also [COMPOSER_HOME](03-cli.md#composer-home). - -## cache-dir - -Defaults to `C:\Users\\AppData\Local\Composer` on Windows, -`$XDG_CACHE_HOME/composer` on unix systems that follow the XDG Base Directory -Specifications, and `$home/cache` on other unix systems. Stores all the caches -used by Composer. See also [COMPOSER_HOME](03-cli.md#composer-home). - -## cache-files-dir - -Defaults to `$cache-dir/files`. Stores the zip archives of packages. - -## cache-repo-dir - -Defaults to `$cache-dir/repo`. Stores repository metadata for the `composer` -type and the VCS repos of type `svn`, `fossil`, `github` and `bitbucket`. - -## cache-vcs-dir - -Defaults to `$cache-dir/vcs`. Stores VCS clones for loading VCS repository -metadata for the `git`/`hg` types and to speed up installs. - -## cache-files-ttl - -Defaults to `15552000` (6 months). Composer caches all dist (zip, tar, ..) -packages that it downloads. Those are purged after six months of being unused by -default. This option allows you to tweak this duration (in seconds) or disable -it completely by setting it to 0. - -## cache-files-maxsize - -Defaults to `300MiB`. Composer caches all dist (zip, tar, ..) packages that it -downloads. When the garbage collection is periodically ran, this is the maximum -size the cache will be able to use. Older (less used) files will be removed -first until the cache fits. - -## bin-compat - -Defaults to `auto`. Determines the compatibility of the binaries to be installed. -If it is `auto` then Composer only installs .bat proxy files when on Windows. If -set to `full` then both .bat files for Windows and scripts for Unix-based -operating systems will be installed for each binary. This is mainly useful if you -run Composer inside a linux VM but still want the .bat proxies available for use -in the Windows host OS. - -## prepend-autoloader - -Defaults to `true`. If `false`, the Composer autoloader will not be prepended to -existing autoloaders. This is sometimes required to fix interoperability issues -with other autoloaders. - -## autoloader-suffix - -Defaults to `null`. String to be used as a suffix for the generated Composer -autoloader. When null a random one will be generated. - -## optimize-autoloader - -Defaults to `false`. If `true`, always optimize when dumping the autoloader. - -## sort-packages - -Defaults to `false`. If `true`, the `require` command keeps packages sorted -by name in `composer.json` when adding a new package. - -## classmap-authoritative - -Defaults to `false`. If `true`, the Composer autoloader will only load classes -from the classmap. Implies `optimize-autoloader`. - -## apcu-autoloader - -Defaults to `false`. If `true`, the Composer autoloader will check for APCu and -use it to cache found/not-found classes when the extension is enabled. - -## github-domains - -Defaults to `["github.com"]`. A list of domains to use in github mode. This is -used for GitHub Enterprise setups. - -## github-expose-hostname - -Defaults to `true`. If `false`, the OAuth tokens created to access the -github API will have a date instead of the machine hostname. - -## gitlab-domains - -Defaults to `["gitlab.com"]`. A list of domains of GitLab servers. -This is used if you use the `gitlab` repository type. - -## use-github-api - -Defaults to `true`. Similar to the `no-api` key on a specific repository, -setting `use-github-api` to `false` will define the global behavior for all -GitHub repositories to clone the repository as it would with any other git -repository instead of using the GitHub API. But unlike using the `git` -driver directly, Composer will still attempt to use GitHub's zip files. - -## notify-on-install - -Defaults to `true`. Composer allows repositories to define a notification URL, -so that they get notified whenever a package from that repository is installed. -This option allows you to disable that behaviour. - -## discard-changes - -Defaults to `false` and can be any of `true`, `false` or `"stash"`. This option -allows you to set the default style of handling dirty updates when in -non-interactive mode. `true` will always discard changes in vendors, while -`"stash"` will try to stash and reapply. Use this for CI servers or deploy -scripts if you tend to have modified vendors. - -## archive-format - -Defaults to `tar`. Composer allows you to add a default archive format when the -workflow needs to create a dedicated archiving format. - -## archive-dir - -Defaults to `.`. Composer allows you to add a default archive directory when the -workflow needs to create a dedicated archiving format. Or for easier development -between modules. - -Example: - -```json -{ - "config": { - "archive-dir": "/home/user/.composer/repo" - } -} -``` - -## htaccess-protect - -Defaults to `true`. If set to `false`, Composer will not create `.htaccess` files -in the composer home, cache, and data directories. - -← [Repositories](05-repositories.md) | [Community](07-community.md) → diff --git a/vendor/composer/composer/doc/07-community.md b/vendor/composer/composer/doc/07-community.md deleted file mode 100644 index 4296f90..0000000 --- a/vendor/composer/composer/doc/07-community.md +++ /dev/null @@ -1,35 +0,0 @@ -# Community - -There are many people using Composer already, and quite a few of them are -contributing. - -## Contributing - -If you would like to contribute to Composer, please read the -[README](https://github.com/composer/composer) and -[CONTRIBUTING](https://github.com/composer/composer/blob/master/.github/CONTRIBUTING.md) -documents. - -The most important guidelines are described as follows: - -> All code contributions - including those of people having commit access - must -> go through a pull request and approved by a core developer before being -> merged. This is to ensure proper review of all the code. -> -> Fork the project, create a feature branch, and send us a pull request. -> -> To ensure a consistent code base, you should make sure the code follows -> the [PSR-2 Coding Standards](http://www.php-fig.org/psr/psr-2/). - -## IRC / mailing list - -Mailing lists for [user support](https://groups.google.com/group/composer-users) and -[development](https://groups.google.com/group/composer-dev). - -IRC channels are on irc.freenode.org: [#composer](irc://irc.freenode.org/composer) -for users and [#composer-dev](irc://irc.freenode.org/composer-dev) for development. - -Stack Overflow has a growing collection of -[Composer related questions](https://stackoverflow.com/questions/tagged/composer-php). - -← [Config](06-config.md) diff --git a/vendor/composer/composer/doc/articles/aliases.md b/vendor/composer/composer/doc/articles/aliases.md deleted file mode 100644 index d36eb11..0000000 --- a/vendor/composer/composer/doc/articles/aliases.md +++ /dev/null @@ -1,111 +0,0 @@ - - -# Aliases - -## Why aliases? - -When you are using a VCS repository, you will only get comparable versions for -branches that look like versions, such as `2.0` or `2.0.x`. For your `master` branch, you -will get a `dev-master` version. For your `bugfix` branch, you will get a -`dev-bugfix` version. - -If your `master` branch is used to tag releases of the `1.0` development line, -i.e. `1.0.1`, `1.0.2`, `1.0.3`, etc., any package depending on it will -probably require version `1.0.*`. - -If anyone wants to require the latest `dev-master`, they have a problem: Other -packages may require `1.0.*`, so requiring that dev version will lead to -conflicts, since `dev-master` does not match the `1.0.*` constraint. - -Enter aliases. - -## Branch alias - -The `dev-master` branch is one in your main VCS repo. It is rather common that -someone will want the latest master dev version. Thus, Composer allows you to -alias your `dev-master` branch to a `1.0.x-dev` version. It is done by -specifying a `branch-alias` field under `extra` in `composer.json`: - -```json -{ - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} -``` - -If you alias a non-comparable version (such as dev-develop) `dev-` must prefix the -branch name. You may also alias a comparable version (i.e. start with numbers, -and end with `.x-dev`), but only as a more specific version. -For example, 1.x-dev could be aliased as 1.2.x-dev. - -The alias must be a comparable dev version, and the `branch-alias` must be present on -the branch that it references. For `dev-master`, you need to commit it on the -`master` branch. - -As a result, anyone can now require `1.0.*` and it will happily install -`dev-master`. - -In order to use branch aliasing, you must own the repository of the package -being aliased. If you want to alias a third party package without maintaining -a fork of it, use inline aliases as described below. - -## Require inline alias - -Branch aliases are great for aliasing main development lines. But in order to -use them you need to have control over the source repository, and you need to -commit changes to version control. - -This is not really fun when you want to try a bugfix of some library that -is a dependency of your local project. - -For this reason, you can alias packages in your `require` and `require-dev` -fields. Let's say you found a bug in the `monolog/monolog` package. You cloned -[Monolog](https://github.com/Seldaek/monolog) on GitHub and fixed the issue in -a branch named `bugfix`. Now you want to install that version of monolog in your -local project. - -You are using `symfony/monolog-bundle` which requires `monolog/monolog` version -`1.*`. So you need your `dev-bugfix` to match that constraint. - -Add this to your project's root `composer.json`: - -```json -{ - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/you/monolog" - } - ], - "require": { - "symfony/monolog-bundle": "2.0", - "monolog/monolog": "dev-bugfix as 1.0.x-dev" - } -} -``` - -Or let composer add it for you with: - -``` -php composer.phar require monolog/monolog:"dev-bugfix as 1.0.x-dev" -``` - -That will fetch the `dev-bugfix` version of `monolog/monolog` from your GitHub -and alias it to `1.0.x-dev`. - -> **Note:** Inline aliasing is a root-only feature. If a package with inline -> aliases is required, the alias (right of the `as`) is used as the version -> constraint. The part left of the `as` is discarded. As a consequence, if -> A requires B and B requires `monolog/monolog` version `dev-bugfix as 1.0.x-dev`, -> installing A will make B require `1.0.x-dev`, which may exist as a branch -> alias or an actual `1.0` branch. If it does not, it must be -> inline-aliased again in A's `composer.json`. - -> **Note:** Inline aliasing should be avoided, especially for published -> packages/libraries. If you found a bug, try and get your fix merged upstream. -> This helps to avoid issues for users of your package. diff --git a/vendor/composer/composer/doc/articles/autoloader-optimization.md b/vendor/composer/composer/doc/articles/autoloader-optimization.md deleted file mode 100644 index 41bd4a6..0000000 --- a/vendor/composer/composer/doc/articles/autoloader-optimization.md +++ /dev/null @@ -1,111 +0,0 @@ - - -# Autoloader Optimization - -By default, the Composer autoloader runs relatively fast. However, due to the way -PSR-4 and PSR-0 autoloading rules are set up, it needs to check the filesystem -before resolving a classname conclusively. This slows things down quite a bit, -but it is convenient in development environments because when you add a new class -it can immediately be discovered/used without having to rebuild the autoloader -configuration. - -The problem however is in production you generally want things to happen as fast -as possible, as you can simply rebuild the configuration every time you deploy and -new classes do not appear at random between deploys. - -For this reason, Composer offers a few strategies to optimize the autoloader. - -> **Note:** You **should not** enable any of these optimizations in **development** as -> they all will cause various problems when adding/removing classes. The performance -> gains are not worth the trouble in a development setting. - -## Optimization Level 1: Class map generation - -### How to run it? - -There are a few options to enable this: - -- Set `"optimize-autoloader": true` inside the config key of composer.json -- Call `install` or `update` with `-o` / `--optimize-autoloader` -- Call `dump-autoload` with `-o` / `--optimize` - -### What does it do? - -Class map generation essentially converts PSR-4/PSR-0 rules into classmap rules. -This makes everything quite a bit faster as for known classes the class map -returns instantly the path, and Composer can guarantee the class is in there so -there is no filesystem check needed. - -On PHP 5.6+, the class map is also cached in opcache which improves the initialization -time greatly. If you make sure opcache is enabled, then the class map should load -almost instantly and then class loading is fast. - -### Trade-offs - -There are no real trade-offs with this method. It should always be enabled in -production. - -The only issue is it does not keep track of autoload misses (i.e. when -it can not find a given class), so those fallback to PSR-4 rules and can still -result in slow filesystem checks. To solve this issue two Level 2 optimization -options exist, and you can decide to enable either if you have a lot of -class_exists checks that are done for classes that do not exist in your project. - -## Optimization Level 2/A: Authoritative class maps - -### How to run it? - -There are a few options to enable this: - -- Set `"classmap-authoritative": true` inside the config key of composer.json -- Call `install` or `update` with `-a` / `--classmap-authoritative` -- Call `dump-autoload` with `-a` / `--classmap-authoritative` - -### What does it do? - -Enabling this automatically enables Level 1 class map optimizations. - -This option is very simple, it says that if something is not found in the classmap, -then it does not exist and the autoloader should not attempt to look on the -filesystem according to PSR-4 rules. - -### Trade-offs - -This option makes the autoloader always return very quickly. On the flipside it -also means that in case a class is generated at runtime for some reason, it will -not be allowed to be autoloaded. If your project or any of your dependencies does that -then you might experience "class not found" issues in production. Enable this with care. - -> Note: This can not be combined with Level 2/B optimizations. You have to choose one as -> they address the same issue in different ways. - -## Optimization Level 2/B: APCu cache - -### How to run it? - -There are a few options to enable this: - -- Set `"apcu-autoloader": true` inside the config key of composer.json -- Call `install` or `update` with `--apcu-autoloader` -- Call `dump-autoload` with `--apcu` - -### What does it do? - -This option adds an APCu cache as a fallback for the class map. It will not -automatically generate the class map though, so you should still enable Level 1 -optimizations manually if you so desire. - -Whether a class is found or not, that fact is always cached in APCu so it can be -returned quickly on the next request. - -### Trade-offs - -This option requires APCu which may or may not be available to you. It also -uses APCu memory for autoloading purposes, but it is safe to use and can not -result in classes not being found like the authoritative class map -optimization above. - -> Note: This can not be combined with Level 2/A optimizations. You have to choose one as -> they address the same issue in different ways. diff --git a/vendor/composer/composer/doc/articles/custom-installers.md b/vendor/composer/composer/doc/articles/custom-installers.md deleted file mode 100644 index 791c049..0000000 --- a/vendor/composer/composer/doc/articles/custom-installers.md +++ /dev/null @@ -1,204 +0,0 @@ - - -# Setting up and using custom installers - -## Synopsis - -At times it may be necessary for a package to require additional actions during -installation, such as installing packages outside of the default `vendor` -library. - -In these cases you could consider creating a Custom Installer to handle your -specific logic. - -## Calling a Custom Installer - -Suppose that your project already has a Custom Installer for specific modules -then invoking that installer is a matter of defining the correct [type][1] in -your package file. - -> _See the next chapter for an instruction how to create Custom Installers._ - -Every Custom Installer defines which [type][1] string it will recognize. Once -recognized it will completely override the default installer and only apply its -own logic. - -An example use-case would be: - -> phpDocumentor features Templates that need to be installed outside of the -> default /vendor folder structure. As such they have chosen to adopt the -> `phpdocumentor-template` [type][1] and create a plugin providing the Custom -> Installer to send these templates to the correct folder. - -An example composer.json of such a template package would be: - -```json -{ - "name": "phpdocumentor/template-responsive", - "type": "phpdocumentor-template", - "require": { - "phpdocumentor/template-installer-plugin": "*" - } -} -``` - -> **IMPORTANT**: to make sure that the template installer is present at the -> time the template package is installed, template packages should require -> the plugin package. - -## Creating an Installer - -A Custom Installer is defined as a class that implements the -[`Composer\Installer\InstallerInterface`][4] and is usually distributed in a -Composer Plugin. - -A basic Installer Plugin would thus compose of three files: - -1. the package file: composer.json -2. The Plugin class, e.g.: `My\Project\Composer\Plugin.php`, containing a class that implements `Composer\Plugin\PluginInterface`. -3. The Installer class, e.g.: `My\Project\Composer\Installer.php`, containing a class that implements `Composer\Installer\InstallerInterface`. - -### composer.json - -The package file is the same as any other package file but with the following -requirements: - -1. the [type][1] attribute must be `composer-plugin`. -2. the [extra][2] attribute must contain an element `class` defining the - class name of the plugin (including namespace). If a package contains - multiple plugins this can be array of class names. - -Example: - -```json -{ - "name": "phpdocumentor/template-installer-plugin", - "type": "composer-plugin", - "license": "MIT", - "autoload": { - "psr-0": {"phpDocumentor\\Composer": "src/"} - }, - "extra": { - "class": "phpDocumentor\\Composer\\TemplateInstallerPlugin" - }, - "require": { - "composer-plugin-api": "^1.0" - }, - "require-dev": { - "composer/composer": "^1.3" - } -} -``` - -The example above has Composer itself in its require-dev, which allows you to use -the Composer classes in your test suite for example. - -### The Plugin class - -The class defining the Composer plugin must implement the -[`Composer\Plugin\PluginInterface`][3]. It can then register the Custom -Installer in its `activate()` method. - -The class may be placed in any location and have any name, as long as it is -autoloadable and matches the `extra.class` element in the package definition. - -Example: - -```php -getInstallationManager()->addInstaller($installer); - } -} -``` - -### The Custom Installer class - -The class that executes the custom installation should implement the -[`Composer\Installer\InstallerInterface`][4] (or extend another installer that -implements that interface). It defines the [type][1] string as it will be -recognized by packages that will use this installer in the `supports()` method. - -> **NOTE**: _choose your [type][1] name carefully, it is recommended to follow -> the format: `vendor-type`_. For example: `phpdocumentor-template`. - -The InstallerInterface class defines the following methods (please see the -source for the exact signature): - -* **supports()**, here you test whether the passed [type][1] matches the name - that you declared for this installer (see the example). -* **isInstalled()**, determines whether a supported package is installed or not. -* **install()**, here you can determine the actions that need to be executed - upon installation. -* **update()**, here you define the behavior that is required when Composer is - invoked with the update argument. -* **uninstall()**, here you can determine the actions that need to be executed - when the package needs to be removed. -* **getInstallPath()**, this method should return the location where the - package is to be installed, _relative from the location of composer.json._ - -Example: - -```php -getPrettyName(), 0, 23); - if ('phpdocumentor/template-' !== $prefix) { - throw new \InvalidArgumentException( - 'Unable to install template, phpdocumentor templates ' - .'should always start their package name with ' - .'"phpdocumentor/template-"' - ); - } - - return 'data/templates/'.substr($package->getPrettyName(), 23); - } - - /** - * {@inheritDoc} - */ - public function supports($packageType) - { - return 'phpdocumentor-template' === $packageType; - } -} -``` - -The example demonstrates that it is quite simple to extend the -[`Composer\Installer\LibraryInstaller`][5] class to strip a prefix -(`phpdocumentor/template-`) and use the remaining part to assemble a completely -different installation path. - -> _Instead of being installed in `/vendor` any package installed using this -> Installer will be put in the `/data/templates/` folder._ - -[1]: ../04-schema.md#type -[2]: ../04-schema.md#extra -[3]: https://github.com/composer/composer/blob/master/src/Composer/Plugin/PluginInterface.php -[4]: https://github.com/composer/composer/blob/master/src/Composer/Installer/InstallerInterface.php -[5]: https://github.com/composer/composer/blob/master/src/Composer/Installer/LibraryInstaller.php diff --git a/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md b/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md deleted file mode 100644 index 3ef604f..0000000 --- a/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md +++ /dev/null @@ -1,356 +0,0 @@ - - -# Handling private packages - -# Private Packagist - -[Private Packagist](https://packagist.com) is a commercial package hosting product -offering professional support and web based management of private and public packages, -and granular access permissions. Private Packagist provides mirroring for packages' zip -files which makes installs faster and independent from third party systems - e.g. -you can deploy even if GitHub is down because your zip files are mirrored. - -Private Packagist is available as a hosted SaaS solution or as an on-premise self-hosted -package, providing an easy interactive set up experience. - -Some of Private Packagist's revenue is used to pay for Composer and Packagist.org -development and hosting so using it is a good way to support the maintenance of -these open source projects financially. You can find more information about how to -set up your own package archive on [Packagist.com](https://packagist.com). - -# Satis - -Satis on the other hand is open source but only a static `composer` repository -generator. It is a bit like an ultra-lightweight, static file-based version of -packagist and can be used to host the metadata of your company's private -packages, or your own. You can get it from -[GitHub](https://github.com/composer/satis) or install via CLI: - - php composer.phar create-project composer/satis --stability=dev --keep-vcs - -## Setup - -For example let's assume you have a few packages you want to reuse across your -company but don't really want to open-source. You would first define a Satis -configuration: a json file with an arbitrary name that lists your curated -[repositories](../05-repositories.md). - -Here is an example configuration, you see that it holds a few VCS repositories, -but those could be any types of [repositories](../05-repositories.md). Then it -uses `"require-all": true` which selects all versions of all packages in the -repositories you defined. - -The default file Satis looks for is `satis.json` in the root of the repository. - -```json -{ - "name": "My Repository", - "homepage": "http://packages.example.org", - "repositories": [ - { "type": "vcs", "url": "https://github.com/mycompany/privaterepo" }, - { "type": "vcs", "url": "http://svn.example.org/private/repo" }, - { "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" } - ], - "require-all": true -} -``` - -If you want to cherry pick which packages you want, you can list all the -packages you want to have in your satis repository inside the classic composer -`require` key, using a `"*"` constraint to make sure all versions are selected, -or another constraint if you want really specific versions. - -```json -{ - "repositories": [ - { "type": "vcs", "url": "https://github.com/mycompany/privaterepo" }, - { "type": "vcs", "url": "http://svn.example.org/private/repo" }, - { "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" } - ], - "require": { - "company/package": "*", - "company/package2": "*", - "company/package3": "2.0.0" - } -} -``` - -Once you've done this, you run: - - php bin/satis build - -When you ironed out that process, what you would typically do is run this -command as a cron job on a server. It would then update all your package info -much like Packagist does. - -Note that if your private packages are hosted on GitHub, your server should -have an ssh key that gives it access to those packages, and then you should add -the `--no-interaction` (or `-n`) flag to the command to make sure it falls back -to ssh key authentication instead of prompting for a password. This is also a -good trick for continuous integration servers. - -Set up a virtual-host that points to that `web/` directory, let's say it is -`packages.example.org`. Alternatively, with PHP >= 5.4.0, you can use the -built-in CLI server `php -S localhost:port -t satis-output-dir/` for a -temporary solution. - -### Partial Updates - -You can tell Satis to selectively update only particular packages or process -only a repository with a given URL. This cuts down the time it takes to rebuild -the `package.json` file and is helpful if you use (custom) webhooks to trigger -rebuilds whenever code is pushed into one of your repositories. - -To rebuild only particular packages, pass the package names on the command line -like so: - - php bin/satis build satis.json web/ this/package that/other-package - -Note that this will still need to pull and scan all of your VCS repositories -because any VCS repository might contain (on any branch) one of the selected -packages. - -If you want to scan only the selected package and not all VCS repositories you need -to declare a *name* for all your package (this only work on VCS repositories type) : - -```json -{ - "repositories": [ - { "name": "company/privaterepo", "type": "vcs", "url": "https://github.com/mycompany/privaterepo" }, - { "name": "private/repo", "type": "vcs", "url": "http://svn.example.org/private/repo" }, - { "name": "mycompany/privaterepo2", "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" } - ] -} -``` - -If you want to scan only a single repository and update all packages found in -it, pass the VCS repository URL as an optional argument: - - php bin/satis build --repository-url https://only.my/repo.git satis.json web/ - -## Usage - -In your projects all you need to add now is your own composer repository using -the `packages.example.org` as URL, then you can require your private packages -and everything should work smoothly. You don't need to copy all your -repositories in every project anymore. Only that one unique repository that -will update itself. - -```json -{ - "repositories": [ { "type": "composer", "url": "http://packages.example.org/" } ], - "require": { - "company/package": "1.2.0", - "company/package2": "1.5.2", - "company/package3": "dev-master" - } -} -``` - -### Security - -To secure your private repository you can host it over SSH or SSL using a client -certificate. In your project you can use the `options` parameter to specify the -connection options for the server. - -Example using a custom repository using SSH (requires the SSH2 PECL extension): - -```json -{ - "repositories": [{ - "type": "composer", - "url": "ssh2.sftp://example.org", - "options": { - "ssh2": { - "username": "composer", - "pubkey_file": "/home/composer/.ssh/id_rsa.pub", - "privkey_file": "/home/composer/.ssh/id_rsa" - } - } - }] -} -``` - -> **Tip:** See [ssh2 context options] for more information. - -Example using SSL/TLS (HTTPS) using a client certificate: - -```json -{ - "repositories": [{ - "type": "composer", - "url": "https://example.org", - "options": { - "ssl": { - "local_cert": "/home/composer/.ssl/composer.pem" - } - } - }] -} -``` - -> **Tip:** See [ssl context options] for more information. - -Example using a custom HTTP Header field for token authentication: - -```json -{ - "repositories": [{ - "type": "composer", - "url": "https://example.org", - "options": { - "http": { - "header": [ - "API-TOKEN: YOUR-API-TOKEN" - ] - } - } - }] -} -``` - -### Authentication - -When your private repositories are password protected, you can store the -authentication details permanently. The first time Composer needs to -authenticate against some domain it will prompt you for a username/password and -then you will be asked whether you want to store it. - -The storage can be done either globally in the `COMPOSER_HOME/auth.json` file -(`COMPOSER_HOME` defaults to `~/.composer` or `%APPDATA%/Composer` on Windows) -or also in the project directory directly sitting besides your composer.json. - -You can also configure these by hand using the config command if you need to -configure a production machine to be able to run non-interactive installs. For -example to enter credentials for example.org one could type: - - composer config http-basic.example.org username password - -That will store it in the current directory's auth.json, but if you want it -available globally you can use the `--global` (`-g`) flag. - -### Downloads - -When GitHub, GitLab or BitBucket repositories are mirrored on your local satis, the -build process will include the location of the downloads these platforms make -available. This means that the repository and your setup depend on the -availability of these services. - -At the same time, this implies that all code which is hosted somewhere else (on -another service or for example in Subversion) will not have downloads available -and thus installations usually take a lot longer. - -To enable your satis installation to create downloads for all (Git, Mercurial -and Subversion) your packages, add the following to your `satis.json`: - -``` json -{ - "archive": { - "directory": "dist", - "format": "tar", - "prefix-url": "https://amazing.cdn.example.org", - "skip-dev": true - } -} -``` - -#### Options explained - - * `directory`: required, the location of the dist files (inside the - `output-dir`) - * `format`: optional, `zip` (default) or `tar` - * `prefix-url`: optional, location of the downloads, homepage (from - `satis.json`) followed by `directory` by default - * `skip-dev`: optional, `false` by default, when enabled (`true`) satis will - not create downloads for branches - * `absolute-directory`: optional, a _local_ directory where the dist files are - dumped instead of `output-dir`/`directory` - * `whitelist`: optional, if set as a list of package names, satis will only - dump the dist files of these packages - * `blacklist`: optional, if set as a list of package names, satis will not - dump the dist files of these packages - * `checksum`: optional, `true` by default, when disabled (`false`) satis will - not provide the sha1 checksum for the dist files - -Once enabled, all downloads (include those from GitHub and BitBucket) will be -replaced with a _local_ version. - -#### prefix-url - -Prefixing the URL with another host is especially helpful if the downloads end -up in a private Amazon S3 bucket or on a CDN host. A CDN would drastically -improve download times and therefore package installation. - -Example: A `prefix-url` of `https://my-bucket.s3.amazonaws.com` (and -`directory` set to `dist`) creates download URLs which look like the following: -`https://my-bucket.s3.amazonaws.com/dist/vendor-package-version-ref.zip`. - -### Web outputs - - * `output-html`: optional, `true` by default, when disabled (`false`) satis - will not generate the `output-dir`/index.html page. - * `twig-template`: optional, a path to a personalized [Twig] template for - the `output-dir`/index.html page. - -### Abandoned packages - -To enable your satis installation to indicate that some packages are abandoned, -add the following to your `satis.json`: - -```json -{ - "abandoned": { - "company/package": true, - "company/package2": "company/newpackage" - } -} -``` - -The `true` value indicates that the package is truly abandoned while the -`"company/newpackage"` value specifies that the package is replaced by the -`company/newpackage` package. - -Note that all packages set as abandoned in their own `composer.json` file will -be marked abandoned as well. - -### Resolving dependencies - -It is possible to make satis automatically resolve and add all dependencies for -your projects. This can be used with the Downloads functionality to have a -complete local mirror of packages. Add the following to your `satis.json`: - -```json -{ - "require-dependencies": true, - "require-dev-dependencies": true -} -``` - -When searching for packages, satis will attempt to resolve all the required -packages from the listed repositories. Therefore, if you are requiring a -package from Packagist, you will need to define it in your `satis.json`. - -Dev dependencies are packaged only if the `require-dev-dependencies` parameter -is set to true. - -### Other options - - * `providers`: optional, `false` by default, when enabled (`true`) each - package will be dumped into a separate include file which will be only - loaded by composer when the package is really required. Speeds up composer - handling for repositories with huge number of packages like f.i. packagist. - * `output-dir`: optional, defines where to output the repository files if not - provided as an argument when calling the `build` command. - * `config`: optional, lets you define all config options from composer, except - `archive-format` and `archive-dir` as the configuration is done through - [archive](#downloads) instead. See docs on [config schema] for more details. - * `notify-batch`: optional, specify a URL that will be called every time a - user installs a package. See [notify-batch]. - -[ssh2 context options]: https://secure.php.net/manual/en/wrappers.ssh2.php#refsect1-wrappers.ssh2-options -[ssl context options]: https://secure.php.net/manual/en/context.ssl.php -[Twig]: https://twig.sensiolabs.org/ -[config schema]: https://getcomposer.org/doc/04-schema.md#config -[notify-batch]: https://getcomposer.org/doc/05-repositories.md#notify-batch diff --git a/vendor/composer/composer/doc/articles/http-basic-authentication.md b/vendor/composer/composer/doc/articles/http-basic-authentication.md deleted file mode 100644 index 7284e1c..0000000 --- a/vendor/composer/composer/doc/articles/http-basic-authentication.md +++ /dev/null @@ -1,59 +0,0 @@ - - -# HTTP basic authentication - -Your [Satis or Toran Proxy](handling-private-packages-with-satis.md) server -could be secured with http basic authentication. In order to allow your project -to have access to these packages you will have to tell composer how to -authenticate with your credentials. - -The simplest way to provide your credentials is providing your set -of credentials inline with the repository specification such as: - -```json -{ - "repositories": [ - { - "type": "composer", - "url": "https://extremely:secret@repo.example.org" - } - ] -} -``` - -This will basically teach composer how to authenticate automatically -when reading packages from the provided composer repository. - -This does not work for everybody especially when you don't want to -hard code your credentials into your composer.json. There is a second -way to provide these details and it is via interaction. If you don't -provide the authentication credentials composer will prompt you upon -connection to enter the username and password. - -The third way if you want to pre-configure it is via an `auth.json` file -located in your `COMPOSER_HOME` or besides your `composer.json`. - -The file should contain a set of hostnames followed each with their own -username/password pairs, for example: - -```json -{ - "http-basic": { - "repo.example1.org": { - "username": "my-username1", - "password": "my-secret-password1" - }, - "repo.example2.org": { - "username": "my-username2", - "password": "my-secret-password2" - } - } -} -``` - -The main advantage of the auth.json file is that it can be gitignored so -that every developer in your team can place their own credentials in there, -which makes revocation of credentials much easier than if you all share the -same. diff --git a/vendor/composer/composer/doc/articles/plugins.md b/vendor/composer/composer/doc/articles/plugins.md deleted file mode 100644 index 86e24d8..0000000 --- a/vendor/composer/composer/doc/articles/plugins.md +++ /dev/null @@ -1,290 +0,0 @@ - - -# Setting up and using plugins - -## Synopsis - -You may wish to alter or expand Composer's functionality with your own. For -example if your environment poses special requirements on the behaviour of -Composer which do not apply to the majority of its users or if you wish to -accomplish something with composer in a way that is not desired by most users. - -In these cases you could consider creating a plugin to handle your -specific logic. - -## Creating a Plugin - -A plugin is a regular Composer package which ships its code as part of the -package and may also depend on further packages. - -### Plugin Package - -The package file is the same as any other package file but with the following -requirements: - -1. The [type][1] attribute must be `composer-plugin`. -2. The [extra][2] attribute must contain an element `class` defining the - class name of the plugin (including namespace). If a package contains - multiple plugins, this can be array of class names. -3. You must require the special package called `composer-plugin-api` - to define which Plugin API versions your plugin is compatible with. - -The required version of the `composer-plugin-api` follows the same [rules][7] -as a normal package's. - -The current composer plugin API version is 1.1.0. - -An example of a valid plugin `composer.json` file (with the autoloading -part omitted): - -```json -{ - "name": "my/plugin-package", - "type": "composer-plugin", - "require": { - "composer-plugin-api": "^1.1" - }, - "extra": { - "class": "My\\Plugin" - } -} -``` - -### Plugin Class - -Every plugin has to supply a class which implements the -[`Composer\Plugin\PluginInterface`][3]. The `activate()` method of the plugin -is called after the plugin is loaded and receives an instance of -[`Composer\Composer`][4] as well as an instance of -[`Composer\IO\IOInterface`][5]. Using these two objects all configuration can -be read and all internal objects and state can be manipulated as desired. - -Example: - -```php -getInstallationManager()->addInstaller($installer); - } -} -``` - -## Event Handler - -Furthermore plugins may implement the -[`Composer\EventDispatcher\EventSubscriberInterface`][6] in order to have its -event handlers automatically registered with the `EventDispatcher` when the -plugin is loaded. - -To register a method to an event, implement the method `getSubscribedEvents()` -and have it return an array. The array key must be the -[event name](https://getcomposer.org/doc/articles/scripts.md#event-names) -and the value is the name of the method in this class to be called. - -```php -public static function getSubscribedEvents() -{ - return array( - 'post-autoload-dump' => 'methodToBeCalled', - // ^ event name ^ ^ method name ^ - ); -} -``` - -By default, the priority of an event handler is set to 0. The priority can be -changed by attaching a tuple where the first value is the method name, as -before, and the second value is an integer representing the priority. -Higher integers represent higher priorities. Priority 2 is called before -priority 1, etc. - -```php -public static function getSubscribedEvents() -{ - return array( - // Will be called before events with priority 0 - 'post-autoload-dump' => array('methodToBeCalled', 1) - ); -} -``` - -If multiple methods should be called, then an array of tuples can be attached -to each event. The tuples do not need to include the priority. If it is -omitted, it will default to 0. - -```php -public static function getSubscribedEvents() -{ - return array( - 'post-autoload-dump' => array( - array('methodToBeCalled' ), // Priority defaults to 0 - array('someOtherMethodName', 1), // This fires first - ) - ); -} -``` - -Here's a complete example: - -```php -composer = $composer; - $this->io = $io; - } - - public static function getSubscribedEvents() - { - return array( - PluginEvents::PRE_FILE_DOWNLOAD => array( - array('onPreFileDownload', 0) - ), - ); - } - - public function onPreFileDownload(PreFileDownloadEvent $event) - { - $protocol = parse_url($event->getProcessedUrl(), PHP_URL_SCHEME); - - if ($protocol === 's3') { - $awsClient = new AwsClient($this->io, $this->composer->getConfig()); - $s3RemoteFilesystem = new S3RemoteFilesystem($this->io, $event->getRemoteFilesystem()->getOptions(), $awsClient); - $event->setRemoteFilesystem($s3RemoteFilesystem); - } - } -} -``` - -## Plugin capabilities - -Composer defines a standard set of capabilities which may be implemented by plugins. -Their goal is to make the plugin ecosystem more stable as it reduces the need to mess -with [`Composer\Composer`][4]'s internal state, by providing explicit extension points -for common plugin requirements. - -Capable Plugins classes must implement the [`Composer\Plugin\Capable`][8] interface -and declare their capabilities in the `getCapabilities()` method. -This method must return an array, with the _key_ as a Composer Capability class name, -and the _value_ as the Plugin's own implementation class name of said Capability: - -```php - 'My\Composer\CommandProvider', - ); - } -} -``` - -### Command provider - -The [`Composer\Plugin\Capability\CommandProvider`][9] capability allows to register -additional commands for Composer : - -```php -setName('custom-plugin-command'); - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $output->writeln('Executing'); - } -} -``` - -Now the `custom-plugin-command` is available alongside Composer commands. - -> _Composer commands are based on the [Symfony Console Component][10]._ - -## Running plugins manually - -Plugins for an event can be run manually by the `run-script` command. This works the same way as -[running scripts manually](scripts.md#running-scripts-manually). - -## Using Plugins - -Plugin packages are automatically loaded as soon as they are installed and will -be loaded when composer starts up if they are found in the current project's -list of installed packages. Additionally all plugin packages installed in the -`COMPOSER_HOME` directory using the composer global command are loaded before -local project plugins are loaded. - -> You may pass the `--no-plugins` option to composer commands to disable all -> installed plugins. This may be particularly helpful if any of the plugins -> causes errors and you wish to update or uninstall it. - -[1]: ../04-schema.md#type -[2]: ../04-schema.md#extra -[3]: https://github.com/composer/composer/blob/master/src/Composer/Plugin/PluginInterface.php -[4]: https://github.com/composer/composer/blob/master/src/Composer/Composer.php -[5]: https://github.com/composer/composer/blob/master/src/Composer/IO/IOInterface.php -[6]: https://github.com/composer/composer/blob/master/src/Composer/EventDispatcher/EventSubscriberInterface.php -[7]: ../01-basic-usage.md#package-versions -[8]: https://github.com/composer/composer/blob/master/src/Composer/Plugin/Capable.php -[9]: https://github.com/composer/composer/blob/master/src/Composer/Plugin/Capability/CommandProvider.php -[10]: https://symfony.com/doc/current/components/console.html diff --git a/vendor/composer/composer/doc/articles/scripts.md b/vendor/composer/composer/doc/articles/scripts.md deleted file mode 100644 index 38f6861..0000000 --- a/vendor/composer/composer/doc/articles/scripts.md +++ /dev/null @@ -1,357 +0,0 @@ - - -# Scripts - -## What is a script? - -A script, in Composer's terms, can either be a PHP callback (defined as a -static method) or any command-line executable command. Scripts are useful -for executing a package's custom code or package-specific commands during -the Composer execution process. - -> **Note:** Only scripts defined in the root package's `composer.json` are -> executed. If a dependency of the root package specifies its own scripts, -> Composer does not execute those additional scripts. - -## Event names - -Composer fires the following named events during its execution process: - -### Command Events - -- **pre-install-cmd**: occurs before the `install` command is executed with a - lock file present. -- **post-install-cmd**: occurs after the `install` command has been executed - with a lock file present. -- **pre-update-cmd**: occurs before the `update` command is executed, or before - the `install` command is executed without a lock file present. -- **post-update-cmd**: occurs after the `update` command has been executed, or - after the `install` command has been executed without a lock file present. -- **post-status-cmd**: occurs after the `status` command has been executed. -- **pre-archive-cmd**: occurs before the `archive` command is executed. -- **post-archive-cmd**: occurs after the `archive` command has been executed. -- **pre-autoload-dump**: occurs before the autoloader is dumped, either during - `install`/`update`, or via the `dump-autoload` command. -- **post-autoload-dump**: occurs after the autoloader has been dumped, either - during `install`/`update`, or via the `dump-autoload` command. -- **post-root-package-install**: occurs after the root package has been - installed, during the `create-project` command. -- **post-create-project-cmd**: occurs after the `create-project` command has - been executed. - -### Installer Events - -- **pre-dependencies-solving**: occurs before the dependencies are resolved. -- **post-dependencies-solving**: occurs after the dependencies have been resolved. - -### Package Events - -- **pre-package-install**: occurs before a package is installed. -- **post-package-install**: occurs after a package has been installed. -- **pre-package-update**: occurs before a package is updated. -- **post-package-update**: occurs after a package has been updated. -- **pre-package-uninstall**: occurs before a package is uninstalled. -- **post-package-uninstall**: occurs after a package has been uninstalled. - -### Plugin Events - -- **init**: occurs after a Composer instance is done being initialized. -- **command**: occurs before any Composer Command is executed on the CLI. It - provides you with access to the input and output objects of the program. -- **pre-file-download**: occurs before files are downloaded and allows - you to manipulate the `RemoteFilesystem` object prior to downloading files - based on the URL to be downloaded. -- **pre-command-run**: occurs before a command is executed and allows you to - manipulate the `InputInterface` object's options and arguments to tweak - a command's behavior. - -> **Note:** Composer makes no assumptions about the state of your dependencies -> prior to `install` or `update`. Therefore, you should not specify scripts -> that require Composer-managed dependencies in the `pre-update-cmd` or -> `pre-install-cmd` event hooks. If you need to execute scripts prior to -> `install` or `update` please make sure they are self-contained within your -> root package. - -## Defining scripts - -The root JSON object in `composer.json` should have a property called -`"scripts"`, which contains pairs of named events and each event's -corresponding scripts. An event's scripts can be defined as either a string -(only for a single script) or an array (for single or multiple scripts.) - -For any given event: - -- Scripts execute in the order defined when their corresponding event is fired. -- An array of scripts wired to a single event can contain both PHP callbacks -and command-line executable commands. -- PHP classes containing defined callbacks must be autoloadable via Composer's -autoload functionality. -- Callbacks can only autoload classes from psr-0, psr-4 and classmap -definitions. If a defined callback relies on functions defined outside of a -class, the callback itself is responsible for loading the file containing these -functions. - -Script definition example: - -```json -{ - "scripts": { - "post-update-cmd": "MyVendor\\MyClass::postUpdate", - "post-package-install": [ - "MyVendor\\MyClass::postPackageInstall" - ], - "post-install-cmd": [ - "MyVendor\\MyClass::warmCache", - "phpunit -c app/" - ], - "post-autoload-dump": [ - "MyVendor\\MyClass::postAutoloadDump" - ], - "post-create-project-cmd": [ - "php -r \"copy('config/local-example.php', 'config/local.php');\"" - ] - } -} -``` - -Using the previous definition example, here's the class `MyVendor\MyClass` -that might be used to execute the PHP callbacks: - -```php -getComposer(); - // do stuff - } - - public static function postAutoloadDump(Event $event) - { - $vendorDir = $event->getComposer()->getConfig()->get('vendor-dir'); - require $vendorDir . '/autoload.php'; - - some_function_from_an_autoloaded_file(); - } - - public static function postPackageInstall(PackageEvent $event) - { - $installedPackage = $event->getOperation()->getPackage(); - // do stuff - } - - public static function warmCache(Event $event) - { - // make cache toasty - } -} -``` - -**Note:** During a composer install or update process, a variable named -`COMPOSER_DEV_MODE` will be added to the environment. If the command was run -with the `--no-dev` flag, this variable will be set to 0, otherwise it will be -set to 1. - -## Event classes - -When an event is fired, your PHP callback receives as first argument a -`Composer\EventDispatcher\Event` object. This object has a `getName()` method -that lets you retrieve the event name. - -Depending on the [script types](#event-names) you will get various event -subclasses containing various getters with relevant data and associated -objects: - -- Base class: [`Composer\EventDispatcher\Event`](https://getcomposer.org/apidoc/master/Composer/EventDispatcher/Event.html) -- Command Events: [`Composer\Script\Event`](https://getcomposer.org/apidoc/master/Composer/Script/Event.html) -- Installer Events: [`Composer\Installer\InstallerEvent`](https://getcomposer.org/apidoc/master/Composer/Installer/InstallerEvent.html) -- Package Events: [`Composer\Installer\PackageEvent`](https://getcomposer.org/apidoc/master/Composer/Installer/PackageEvent.html) -- Plugin Events: - - init: [`Composer\EventDispatcher\Event`](https://getcomposer.org/apidoc/master/Composer/EventDispatcher/Event.html) - - command: [`Composer\Plugin\CommandEvent`](https://getcomposer.org/apidoc/master/Composer/Plugin/CommandEvent.html) - - pre-file-download: [`Composer\Plugin\PreFileDownloadEvent`](https://getcomposer.org/apidoc/master/Composer/Plugin/PreFileDownloadEvent.html) - -## Running scripts manually - -If you would like to run the scripts for an event manually, the syntax is: - -```sh -composer run-script [--dev] [--no-dev] script -``` - -For example `composer run-script post-install-cmd` will run any -**post-install-cmd** scripts and [plugins](plugins.md) that have been defined. - -You can also give additional arguments to the script handler by appending `--` -followed by the handler arguments. e.g. -`composer run-script post-install-cmd -- --check` will pass`--check` along to -the script handler. Those arguments are received as CLI arg by CLI handlers, -and can be retrieved as an array via `$event->getArguments()` by PHP handlers. - -## Writing custom commands - -If you add custom scripts that do not fit one of the predefined event name -above, you can either run them with run-script or also run them as native -Composer commands. For example the handler defined below is executable by -simply running `composer test`: - -```json -{ - "scripts": { - "test": "phpunit" - } -} -``` - -Similar to the `run-script` command you can give additional arguments to scripts, -e.g. `composer test -- --filter ` will pass `--filter ` along -to the `phpunit` script. - -> **Note:** Before executing scripts, Composer's bin-dir is temporarily pushed -> on top of the PATH environment variable so that binaries of dependencies -> are easily accessible. In this example no matter if the `phpunit` binary is -> actually in `vendor/bin/phpunit` or `bin/phpunit` it will be found and executed. - -Although Composer is not intended to manage long-running processes and other -such aspects of PHP projects, it can sometimes be handy to disable the process -timeout on custom commands. This timeout defaults to 300 seconds and can be -overridden in a variety of ways depending on the desired effect: - -- disable it for all commands using the config key `process-timeout`, -- disable it for the current or future invocations of composer using the - environment variable `COMPOSER_PROCESS_TIMEOUT`, -- for a specific invocation using the `--timeout` flag of the `run-script` command, -- using a static helper for specific scripts. - -To disable the timeout for specific scripts with the static helper directly in -composer.json: - -```json -{ - "scripts": { - "test": [ - "Composer\\Config::disableProcessTimeout", - "phpunit" - ] - } -} -``` - -To disable the timeout for every script on a given project, you can use the -composer.json configuration: - -```json -{ - "config": { - "process-timeout": 0 - } -} -``` - -It's also possible to set the global environment variable to disable the timeout -of all following scripts in the current terminal environment: - -``` -export COMPOSER_PROCESS_TIMEOUT=0 -``` - -To disable the timeout of a single script call, you must use the `run-script` composer -command and specify the `--timeout` parameter: - -``` -composer run-script --timeout=0 test -``` - -## Referencing scripts - -To enable script re-use and avoid duplicates, you can call a script from another -one by prefixing the command name with `@`: - -```json -{ - "scripts": { - "test": [ - "@clearCache", - "phpunit" - ], - "clearCache": "rm -rf cache/*" - } -} -``` - -You can also refer a script and pass it new arguments: - -```json -{ - "scripts": { - "tests": "phpunit", - "testsVerbose": "@tests -vvv" - } -} -``` - -## Calling Composer commands - -To call Composer commands, you can use `@composer` which will automatically -resolve to whatever composer.phar is currently being used: - -```json -{ - "scripts": { - "test": [ - "@composer install", - "phpunit" - ] - } -} -``` - -One limitation of this is that you can not call multiple composer commands in -a row like `@composer install && @composer foo`. You must split them up in a -JSON array of commands. - -## Executing PHP scripts - -To execute PHP scripts, you can use `@php` which will automatically -resolve to whatever php process is currently being used: - -```json -{ - "scripts": { - "test": [ - "@php script.php", - "phpunit" - ] - } -} -``` - -One limitation of this is that you can not call multiple commands in -a row like `@php install && @php foo`. You must split them up in a -JSON array of commands. - -You can also call a shell/bash script, which will have the path to -the PHP executable available in it as a `PHP_BINARY` env var. - -## Custom descriptions. - -You can set custom script descriptions with the following in your `composer.json`: - -```json -{ - "scripts-descriptions": { - "test": "Run all tests!" - } -} -``` - -> **Note:** You can only set custom descriptions of custom commands. diff --git a/vendor/composer/composer/doc/articles/troubleshooting.md b/vendor/composer/composer/doc/articles/troubleshooting.md deleted file mode 100644 index d0a6450..0000000 --- a/vendor/composer/composer/doc/articles/troubleshooting.md +++ /dev/null @@ -1,309 +0,0 @@ - -# Troubleshooting - -This is a list of common pitfalls on using Composer, and how to avoid them. - -## General - -1. Before asking anyone, run [`composer diagnose`](../03-cli.md#diagnose) to check - for common problems. If it all checks out, proceed to the next steps. - -2. When facing any kind of problems using Composer, be sure to **work with the - latest version**. See [self-update](../03-cli.md#self-update) for details. - -3. Make sure you have no problems with your setup by running the installer's - checks via `curl -sS https://getcomposer.org/installer | php -- --check`. - -4. Ensure you're **installing vendors straight from your `composer.json`** via - `rm -rf vendor && composer update -v` when troubleshooting, excluding any - possible interferences with existing vendor installations or `composer.lock` - entries. - -5. Try clearing Composer's cache by running `composer clear-cache`. - -## Package not found - -1. Double-check you **don't have typos** in your `composer.json` or repository - branches and tag names. - -2. Be sure to **set the right - [minimum-stability](../04-schema.md#minimum-stability)**. To get started or be - sure this is no issue, set `minimum-stability` to "dev". - -3. Packages **not coming from [Packagist](https://packagist.org/)** should - always be **defined in the root package** (the package depending on all - vendors). - -4. Use the **same vendor and package name** throughout all branches and tags of - your repository, especially when maintaining a third party fork and using - `replace`. - -5. If you are updating to a recently published version of a package, be aware that - Packagist has a delay of up to 1 minute before new packages are visible to Composer. - -6. If you are updating a single package, it may depend on newer versions itself. - In this case add the `--with-dependencies` argument **or** add all dependencies which - need an update to the command. - -## Package not found on travis-ci.org - -1. Check the ["Package not found"](#package-not-found) item above. - -2. If the package tested is a dependency of one of its dependencies (cyclic - dependency), the problem might be that Composer is not able to detect the version - of the package properly. If it is a git clone it is generally alright and Composer - will detect the version of the current branch, but travis does shallow clones so - that process can fail when testing pull requests and feature branches in general. - The best solution is to define the version you are on via an environment variable - called COMPOSER_ROOT_VERSION. You set it to `dev-master` for example to define - the root package's version as `dev-master`. - Use: `before_script: COMPOSER_ROOT_VERSION=dev-master composer install` to export - the variable for the call to composer. - -## Package not found in a Jenkins-build - -1. Check the ["Package not found"](#package-not-found) item above. -2. Reason for failing is similar to the problem which can occur on travis-ci.org: The - git-clone / checkout within Jenkins leaves the branch in a "detached HEAD"-state. As - a result, Composer is not able to identify the version of the current checked out branch - and may not be able to resolve a cyclic dependency. To solve this problem, you can use - the "Additional Behaviours" -> "Check out to specific local branch" in your Git-settings - for your Jenkins-job, where your "local branch" shall be the same branch as you are - checking out. Using this, the checkout will not be in detached state any more and cyclic - dependency is recognized correctly. - -## I have a dependency which contains a "repositories" definition in its composer.json, but it seems to be ignored. - -The [`repositories`](../04-schema.md#repositories) configuration property is defined as [root-only](../04-schema.md#root-package). It is not inherited. You can read more about the reasons behind this in the "[why can't -composer load repositories recursively?](../faqs/why-can't-composer-load-repositories-recursively.md)" article. -The simplest work-around to this limitation, is moving or duplicating the `repositories` definition into your root -composer.json. - -## I have locked a dependency to a specific commit but get unexpected results. - -While Composer supports locking dependencies to a specific commit using the `#commit-ref` syntax, there are certain -caveats that one should take into account. The most important one is [documented](../04-schema.md#package-links), but -frequently overlooked: - -> **Note:** While this is convenient at times, it should not be how you use -> packages in the long term because it comes with a technical limitation. The -> composer.json metadata will still be read from the branch name you specify -> before the hash. Because of that in some cases it will not be a practical -> workaround, and you should always try to switch to tagged releases as soon -> as you can. - -There is no simple work-around to this limitation. It is therefore strongly recommended that you do not use it. - -## Need to override a package version - -Let's say your project depends on package A, which in turn depends on a specific -version of package B (say 0.1). But you need a different version of said package B (say 0.11). - -You can fix this by aliasing version 0.11 to 0.1: - -composer.json: - -```json -{ - "require": { - "A": "0.2", - "B": "0.11 as 0.1" - } -} -``` - -See [aliases](aliases.md) for more information. - -## Memory limit errors - -Composer may sometimes fail on some commands with this message: - -`PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...>` - -In this case, the PHP `memory_limit` should be increased. - -> **Note:** Composer internally increases the `memory_limit` to `1.5G`. - -To get the current `memory_limit` value, run: - -```sh -php -r "echo ini_get('memory_limit').PHP_EOL;" -``` - -Try increasing the limit in your `php.ini` file (ex. `/etc/php5/cli/php.ini` for -Debian-like systems): - -```ini -; Use -1 for unlimited or define an explicit value like 2G -memory_limit = -1 -``` - -Composer also respects a memory limit defined by the `COMPOSER_MEMORY_LIMIT` environment variable: - -```sh -COMPOSER_MEMORY_LIMIT=-1 composer.phar <...> -``` - -Or, you can increase the limit with a command-line argument: - -```sh -php -d memory_limit=-1 composer.phar <...> -``` - -This issue can also happen on cPanel instances, when the shell fork bomb protection is activated. For more information, see the [documentation](https://documentation.cpanel.net/display/68Docs/Shell+Fork+Bomb+Protection) of the fork bomb feature on the cPanel site. - -## Xdebug impact on Composer - -To improve performance when the xdebug extension is enabled, Composer automatically restarts PHP without it. -You can override this behavior by using an environment variable: `COMPOSER_ALLOW_XDEBUG=1`. - -Composer will always show a warning if xdebug is being used, but you can override this with an environment variable: -`COMPOSER_DISABLE_XDEBUG_WARN=1`. If you see this warning unexpectedly, then the restart process has failed: -please report this [issue](https://github.com/composer/composer/issues). - -## "The system cannot find the path specified" (Windows) - -1. Open regedit. -2. Search for an `AutoRun` key inside `HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor`, - `HKEY_CURRENT_USER\Software\Microsoft\Command Processor` - or `HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Command Processor`. -3. Check if it contains any path to non-existent file, if it's the case, remove them. - -## API rate limit and OAuth tokens - -Because of GitHub's rate limits on their API it can happen that Composer prompts -for authentication asking your username and password so it can go ahead with its work. - -If you would prefer not to provide your GitHub credentials to Composer you can -manually create a token using the following procedure: - -1. [Create](https://github.com/settings/tokens) an OAuth token on GitHub. -[Read more](https://github.com/blog/1509-personal-api-tokens) on this. - -2. Add it to the configuration running `composer config -g github-oauth.github.com ` - -Now Composer should install/update without asking for authentication. - -## proc_open(): fork failed errors -If composer shows proc_open() fork failed on some commands: - -`PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar` - -This could be happening because the VPS runs out of memory and has no Swap space enabled. - -```sh -free -m - -total used free shared buffers cached -Mem: 2048 357 1690 0 0 237 --/+ buffers/cache: 119 1928 -Swap: 0 0 0 -``` - -To enable the swap you can use for example: - -```sh -/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 -/sbin/mkswap /var/swap.1 -/sbin/swapon /var/swap.1 -``` -You can make a permanent swap file following this [tutorial](https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04). - -## Degraded Mode - -Due to some intermittent issues on Travis and other systems, we introduced a -degraded network mode which helps Composer finish successfully but disables -a few optimizations. This is enabled automatically when an issue is first -detected. If you see this issue sporadically you probably don't have to worry -(a slow or overloaded network can also cause those time outs), but if it -appears repeatedly you might want to look at the options below to identify -and resolve it. - -If you have been pointed to this page, you want to check a few things: - -- If you are using ESET antivirus, go in "Advanced Settings" and disable "HTTP-scanner" - under "web access protection" -- If you are using IPv6, try disabling it. If that solves your issues, get in touch - with your ISP or server host, the problem is not at the Packagist level but in the - routing rules between you and Packagist (i.e. the internet at large). The best way to get - these fixed is raise awareness to the network engineers that have the power to fix it. - Take a look at the next section for IPv6 workarounds. - -- If none of the above helped, please report the error. - -## Operation timed out (IPv6 issues) - -You may run into errors if IPv6 is not configured correctly. A common error is: - -``` -The "https://getcomposer.org/version" file could not be downloaded: failed to -open stream: Operation timed out -``` - -We recommend you fix your IPv6 setup. If that is not possible, you can try the -following workarounds: - -**Workaround Linux:** - -On linux, it seems that running this command helps to make ipv4 traffic have a -higher prio than ipv6, which is a better alternative than disabling ipv6 entirely: - -```bash -sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf" -``` - -**Workaround Windows:** - -On windows the only way is to disable ipv6 entirely I am afraid (either in windows or in your home router). - -**Workaround Mac OS X:** - -Get name of your network device: - -```bash -networksetup -listallnetworkservices -``` - -Disable IPv6 on that device (in this case "Wi-Fi"): - -```bash -networksetup -setv6off Wi-Fi -``` - -Run composer ... - -You can enable IPv6 again with: - -```bash -networksetup -setv6automatic Wi-Fi -``` - -That said, if this fixes your problem, please talk to your ISP about it to -try and resolve the routing errors. That's the best way to get things resolved -for everyone. - -## Composer hangs with SSH ControlMaster - -When you try to install packages from a Git repository and you use the `ControlMaster` -setting for your SSH connection, Composer might hang endlessly and you see a `sh` -process in the `defunct` state in your process list. - -The reason for this is a SSH Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1988 - -As a workaround, open a SSH connection to your Git host before running Composer: - -```bash -ssh -t git@mygitserver.tld -composer update -``` - -See also https://github.com/composer/composer/issues/4180 for more information. - -## Zip archives are not unpacked correctly. - -Composer can unpack zipballs using either a system-provided `unzip` utility or PHP's -native `ZipArchive` class. The `ZipArchive` class is preferred on Windows. On other -OSes where ZIP files can contain permissions and symlinks, the `unzip` utility is -preferred. You're advised to install it if you need these features. diff --git a/vendor/composer/composer/doc/articles/vendor-binaries.md b/vendor/composer/composer/doc/articles/vendor-binaries.md deleted file mode 100644 index 0022b90..0000000 --- a/vendor/composer/composer/doc/articles/vendor-binaries.md +++ /dev/null @@ -1,110 +0,0 @@ - - -# Vendor binaries and the `vendor/bin` directory - -## What is a vendor binary? - -Any command line script that a Composer package would like to pass along -to a user who installs the package should be listed as a vendor binary. - -If a package contains other scripts that are not needed by the package -users (like build or compile scripts) that code should not be listed -as a vendor binary. - -## How is it defined? - -It is defined by adding the `bin` key to a project's `composer.json`. -It is specified as an array of files so multiple binaries can be added -for any given project. - -```json -{ - "bin": ["bin/my-script", "bin/my-other-script"] -} -``` - -## What does defining a vendor binary in composer.json do? - -It instructs Composer to install the package's binaries to `vendor/bin` -for any project that **depends** on that project. - -This is a convenient way to expose useful scripts that would -otherwise be hidden deep in the `vendor/` directory. - -## What happens when Composer is run on a composer.json that defines vendor binaries? - -For the binaries that a package defines directly, nothing happens. - -## What happens when Composer is run on a composer.json that has dependencies with vendor binaries listed? - -Composer looks for the binaries defined in all of the dependencies. A -symlink is created from each dependency's binaries to `vendor/bin`. - -Say package `my-vendor/project-a` has binaries setup like this: - -```json -{ - "name": "my-vendor/project-a", - "bin": ["bin/project-a-bin"] -} -``` - -Running `composer install` for this `composer.json` will not do -anything with `bin/project-a-bin`. - -Say project `my-vendor/project-b` has requirements setup like this: - -```json -{ - "name": "my-vendor/project-b", - "require": { - "my-vendor/project-a": "*" - } -} -``` - -Running `composer install` for this `composer.json` will look at -all of project-a's binaries and install them to `vendor/bin`. - -In this case, Composer will make `vendor/my-vendor/project-a/bin/project-a-bin` -available as `vendor/bin/project-a-bin`. On a Unix-like platform -this is accomplished by creating a symlink. - -## What about Windows and .bat files? - -Packages managed entirely by Composer do not *need* to contain any -`.bat` files for Windows compatibility. Composer handles installation -of binaries in a special way when run in a Windows environment: - - * A `.bat` file is generated automatically to reference the binary - * A Unix-style proxy file with the same name as the binary is generated - automatically (useful for Cygwin or Git Bash) - -Packages that need to support workflows that may not include Composer -are welcome to maintain custom `.bat` files. In this case, the package -should **not** list the `.bat` file as a binary as it is not needed. - -## Can vendor binaries be installed somewhere other than vendor/bin? - -Yes, there are two ways an alternate vendor binary location can be specified: - - 1. Setting the `bin-dir` configuration setting in `composer.json` - 1. Setting the environment variable `COMPOSER_BIN_DIR` - -An example of the former looks like this: - -```json -{ - "config": { - "bin-dir": "scripts" - } -} -``` - -Running `composer install` for this `composer.json` will result in -all of the vendor binaries being installed in `scripts/` instead of -`vendor/bin/`. - -You can set `bin-dir` to `./` to put binaries in your project root. diff --git a/vendor/composer/composer/doc/articles/versions.md b/vendor/composer/composer/doc/articles/versions.md deleted file mode 100644 index e3da6c8..0000000 --- a/vendor/composer/composer/doc/articles/versions.md +++ /dev/null @@ -1,230 +0,0 @@ - - -# Versions and constraints - -## Composer Versions vs VCS Versions - -Because Composer is heavily geared toward utilizing version control systems -like git, the term "version" can be a little ambiguous. In the sense of a -version control system, a "version" is a specific set of files that contain -specific data. In git terminology, this is a "ref", or a specific commit, -which may be represented by a branch HEAD or a tag. When you check out that -version in your VCS -- for example, tag `v1.1` or commit `e35fa0d` --, you're -asking for a single, known set of files, and you always get the same files back. - -In Composer, what's often referred to casually as a version -- that is, -the string that follows the package name in a require line (e.g., `~1.1` or -`1.2.*`) -- is actually more specifically a version constraint. Composer -uses version constraints to figure out which refs in a VCS it should be -checking out (or simply to verify that a given library is acceptable in -the case of a statically-maintained library with a `version` specification -in `composer.json`). - -## VCS Tags and Branches - -*For the following discussion, let's assume the following sample library -repository:* - -```sh -~/my-library$ git branch -v1 -v2 -my-feature -another-feature - -~/my-library$ git tag -v1.0 -v1.0.1 -v1.0.2 -v1.1-BETA -v1.1-RC1 -v1.1-RC2 -v1.1 -v1.1.1 -v2.0-BETA -v2.0-RC1 -v2.0 -v2.0.1 -v2.0.2 -``` - -### Tags - -Normally, Composer deals with tags (as opposed to branches -- if you don't -know what this means, read up on -[version control systems](https://en.wikipedia.org/wiki/Version_control#Common_vocabulary)). -When you write a version constraint, it may reference a specific tag (e.g., -`1.1`) or it may reference a valid range of tags (e.g., `>=1.1 <2.0`, or -`~4.0`). To resolve these constraints, Composer first asks the VCS to list -all available tags, then creates an internal list of available versions based -on these tags. In the above example, composer's internal list includes versions -`1.0`, `1.0.1`, `1.0.2`, the beta release of `1.1`, the first and second -release candidates of `1.1`, the final release version `1.1`, etc.... (Note -that Composer automatically removes the 'v' prefix in the actual tagname to -get a valid final version number.) - -When Composer has a complete list of available versions from your VCS, it then -finds the highest version that matches all version constraints in your project -(it's possible that other packages require more specific versions of the -library than you do, so the version it chooses may not always be the highest -available version) and it downloads a zip archive of that tag to unpack in the -correct location in your `vendor` directory. - -### Branches - -If you want Composer to check out a branch instead of a tag, you need to point it to the branch using the special `dev-*` prefix (or sometimes suffix; see below). If you're checking out a branch, it's assumed that you want to *work* on the branch and Composer actually clones the repo into the correct place in your `vendor` directory. For tags, it copies the right files without actually cloning the repo. (You can modify this behavior with --prefer-source and --prefer-dist, see [install options](../03-cli.md#install).) - -In the above example, if you wanted to check out the `my-feature` branch, you would specify `dev-my-feature` as the version constraint in your `require` clause. This would result in Composer cloning the `my-library` repository into my `vendor` directory and checking out the `my-feature` branch. - -When branch names look like versions, we have to clarify for composer that we're trying to check out a branch and not a tag. In the above example, we have two version branches: `v1` and `v2`. To get Composer to check out one of these branches, you must specify a version constraint that looks like this: `v1.x-dev`. The `.x` is an arbitrary string that Composer requires to tell it that we're talking about the `v1` branch and not a `v1` tag (alternatively, you can name the branch `v1.x` instead of `v1`). In the case of a branch with a version-like name (`v1`, in this case), you append `-dev` as a suffix, rather than using `dev-` as a prefix. - -### Minimum Stability - -There's one more thing that will affect which files are checked out of a library's VCS and added to your project: Composer allows you to specify stability constraints to limit which tags are considered valid. In the above example, note that the library released a beta and two release candidates for version `1.1` before the final official release. To receive these versions when running `composer install` or `composer update`, we have to explicitly tell Composer that we are ok with release candidates and beta releases (and alpha releases, if we want those). This can be done using either a project-wide `minimum-stability` value in `composer.json` or using "stability flags" in version constraints. Read more on the [schema page](../04-schema.md#minimum-stability). - -## Writing Version Constraints - -Now that you have an idea of how Composer sees versions, let's talk about how -to specify version constraints for your project dependencies. - -### Exact Version Constraint - -You can specify the exact version of a package. This will tell Composer to -install this version and this version only. If other dependencies require -a different version, the solver will ultimately fail and abort any install -or update procedures. - -Example: `1.0.2` - -### Version Range - -By using comparison operators you can specify ranges of valid versions. Valid -operators are `>`, `>=`, `<`, `<=`, `!=`. - -You can define multiple ranges. Ranges separated by a space ( ) -or comma (`,`) will be treated as a **logical AND**. A double pipe (`||`) -will be treated as a **logical OR**. AND has higher precedence than OR. - -> **Note:** Be careful when using unbounded ranges as you might end up -> unexpectedly installing versions that break backwards compatibility. -> Consider using the [caret](#caret-version-range-) operator instead for safety. - -Examples: - -* `>=1.0` -* `>=1.0 <2.0` -* `>=1.0 <1.1 || >=1.2` - -### Hyphenated Version Range ( - ) - -Inclusive set of versions. Partial versions on the right include are completed -with a wildcard. For example `1.0 - 2.0` is equivalent to `>=1.0.0 <2.1` as the -`2.0` becomes `2.0.*`. On the other hand `1.0.0 - 2.1.0` is equivalent to -`>=1.0.0 <=2.1.0`. - -Example: `1.0 - 2.0` - -### Wildcard Version Range (.*) - -You can specify a pattern with a `*` wildcard. `1.0.*` is the equivalent of -`>=1.0 <1.1`. - -Example: `1.0.*` - -## Next Significant Release Operators - -### Tilde Version Range (~) - -The `~` operator is best explained by example: `~1.2` is equivalent to -`>=1.2 <2.0.0`, while `~1.2.3` is equivalent to `>=1.2.3 <1.3.0`. As you can see -it is mostly useful for projects respecting [semantic -versioning](https://semver.org/). A common usage would be to mark the minimum -minor version you depend on, like `~1.2` (which allows anything up to, but not -including, 2.0). Since in theory there should be no backwards compatibility -breaks until 2.0, that works well. Another way of looking at it is that using -`~` specifies a minimum version, but allows the last digit specified to go up. - -Example: `~1.2` - -> **Note:** Although `2.0-beta.1` is strictly before `2.0`, a version constraint -> like `~1.2` would not install it. As said above `~1.2` only means the `.2` -> can change but the `1.` part is fixed. - -> **Note:** The `~` operator has an exception on its behavior for the major -> release number. This means for example that `~1` is the same as `~1.0` as -> it will not allow the major number to increase trying to keep backwards -> compatibility. - -### Caret Version Range (^) - -The `^` operator behaves very similarly but it sticks closer to semantic -versioning, and will always allow non-breaking updates. For example `^1.2.3` -is equivalent to `>=1.2.3 <2.0.0` as none of the releases until 2.0 should -break backwards compatibility. For pre-1.0 versions it also acts with safety -in mind and treats `^0.3` as `>=0.3.0 <0.4.0`. - -This is the recommended operator for maximum interoperability when writing -library code. - -Example: `^1.2.3` - -## Stability Constraints - -If you are using a constraint that does not explicitly define a stability, -Composer will default internally to `-dev` or `-stable`, depending on the -operator(s) used. This happens transparently. - -If you wish to explicitly consider only the stable release in the comparison, -add the suffix `-stable`. - -Examples: - - Constraint | Internally -------------------- | ------------------------ - `1.2.3` | `=1.2.3.0-stable` - `>1.2` | `>1.2.0.0-stable` - `>=1.2` | `>=1.2.0.0-dev` - `>=1.2-stable` | `>=1.2.0.0-stable` - `<1.3` | `<1.3.0.0-dev` - `<=1.3` | `<=1.3.0.0-stable` - `1 - 2` | `>=1.0.0.0-dev <3.0.0.0-dev` - `~1.3` | `>=1.3.0.0-dev <2.0.0.0-dev` - `1.4.*` | `>=1.4.0.0-dev <1.5.0.0-dev` - -To allow various stabilities without enforcing them at the constraint level -however, you may use [stability-flags](../04-schema.md#package-links) like -`@` (e.g. `@dev`) to let composer know that a given package -can be installed in a different stability than your default minimum-stability -setting. All available stability flags are listed on the minimum-stability -section of the [schema page](../04-schema.md#minimum-stability). - -## Summary -```json -"require": { - "vendor/package": "1.3.2", // exactly 1.3.2 - - // >, <, >=, <= | specify upper / lower bounds - "vendor/package": ">=1.3.2", // anything above or equal to 1.3.2 - "vendor/package": "<1.3.2", // anything below 1.3.2 - - // * | wildcard - "vendor/package": "1.3.*", // >=1.3.0 <1.4.0 - - // ~ | allows last digit specified to go up - "vendor/package": "~1.3.2", // >=1.3.2 <1.4.0 - "vendor/package": "~1.3", // >=1.3.0 <2.0.0 - - // ^ | doesn't allow breaking changes (major version fixed - following semver) - "vendor/package": "^1.3.2", // >=1.3.2 <2.0.0 - "vendor/package": "^0.3.2", // >=0.3.2 <0.4.0 // except if major version is 0 -} -``` - -## Testing Version Constraints - -You can test version constraints using [semver.mwl.be](https://semver.mwl.be). -Fill in a package name and it will autofill the default version constraint -which Composer would add to your `composer.json` file. You can adjust the -version constraint and the tool will highlight all releases that match. diff --git a/vendor/composer/composer/doc/dev/DefaultPolicy.md b/vendor/composer/composer/doc/dev/DefaultPolicy.md deleted file mode 100644 index 65d0710..0000000 --- a/vendor/composer/composer/doc/dev/DefaultPolicy.md +++ /dev/null @@ -1,55 +0,0 @@ -# Default Solver Policy - -A solver policy defines behaviour variables of the dependency solver. It decides -which versions are considered newer than others, which packages should be -preferred over others and whether operations like downgrades or uninstall are -allowed. - -## Selection of preferred Packages - -The following describe package pool situations with user requests and the -resulting order in which the solver will try to install them. - -The rules are to be applied in the order of these descriptions. - -### Repository priorities - -Packages Repo1.Av1, Repo2.Av1 - -* priority(Repo1) >= priority(Repo2) => (Repo1.Av1, Repo2.Av1) -* priority(Repo1) < priority(Repo2) => (Repo2.Av1, Repo1.Av1) - -### Package versions - -Packages: Av1, Av2, Av3 - -* Installed: Av2 - -Request: install A - -* (Av3) - -### Virtual Packages (provides) - -Packages Av1, Bv1 - -* Av1 provides Xv1 -* Bv1 provides Xv1 - -Request: install X - -* priority(Av1.repo) >= priority(Bv1.repo) => (Av1, Bv1) -* priority(Av1.repo) < priority(Bv1.repo) => (Bv1, Av1) - -### Package replacements - -Packages: Av1, Bv2 - -* Bv2 replaces Av1 - -Request: install A - -* priority(Av1.repo) >= priority(Bv2.repo) => (Av1, Bv2) -* priority(Av1.repo) < priority(Bv2.repo) => (Bv2, Av1) - -Bv2 version is ignored, only the replacement version for A matters. diff --git a/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md b/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md deleted file mode 100644 index 20a2e83..0000000 --- a/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md +++ /dev/null @@ -1,50 +0,0 @@ -# How do I install a package to a custom path for my framework? - -Each framework may have one or many different required package installation -paths. Composer can be configured to install packages to a folder other than -the default `vendor` folder by using -[composer/installers](https://github.com/composer/installers). - -If you are a **package author** and want your package installed to a custom -directory, simply require `composer/installers` and set the appropriate `type`. -This is common if your package is intended for a specific framework such as -CakePHP, Drupal or WordPress. Here is an example composer.json file for a -WordPress theme: - -```json -{ - "name": "you/themename", - "type": "wordpress-theme", - "require": { - "composer/installers": "~1.0" - } -} -``` - -Now when your theme is installed with Composer it will be placed into -`wp-content/themes/themename/` folder. Check the -[current supported types](https://github.com/composer/installers#current-supported-package-types) -for your package. - -As a **package consumer** you can set or override the install path for a package -that requires composer/installers by configuring the `installer-paths` extra. A -useful example would be for a Drupal multisite setup where the package should be -installed into your sites subdirectory. Here we are overriding the install path -for a module that uses composer/installers: - -```json -{ - "extra": { - "installer-paths": { - "sites/example.com/modules/{$name}": ["vendor/package"] - } - } -} -``` - -Now the package would be installed to your folder location, rather than the default -composer/installers determined location. - -> **Note:** You cannot use this to change the path of any package. This is only -> applicable to packages that require `composer/installers` and use a custom type -> that it handles. diff --git a/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md b/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md deleted file mode 100644 index ba6536e..0000000 --- a/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md +++ /dev/null @@ -1,42 +0,0 @@ -# How do I install Composer programmatically? - -As noted on the download page, the installer script contains a -signature which changes when the installer code changes and as such -it should not be relied upon in the long term. - -An alternative is to use this script which only works with UNIX utilities: - -```bash -#!/bin/sh - -EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)" -php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" - -if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] -then - >&2 echo 'ERROR: Invalid installer signature' - rm composer-setup.php - exit 1 -fi - -php composer-setup.php --quiet -RESULT=$? -rm composer-setup.php -exit $RESULT -``` - -The script will exit with 1 in case of failure, or 0 on success, and is quiet -if no error occurs. - -Alternatively, if you want to rely on an exact copy of the installer, you can fetch -a specific version from GitHub's history. The commit hash should be enough to -give it uniqueness and authenticity as long as you can trust the GitHub servers. -For example: - -```bash -wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet -``` - -You may replace the commit hash by whatever the last commit hash is on -https://github.com/composer/getcomposer.org/commits/master diff --git a/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md b/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md deleted file mode 100644 index 1b3e9d3..0000000 --- a/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md +++ /dev/null @@ -1,19 +0,0 @@ -# How do I install untrusted packages safely? Is it safe to run Composer as superuser or root? - -Certain Composer commands, including `exec`, `install`, and `update` allow third party code to -execute on your system. This is from its "plugins" and "scripts" features. Plugins and scripts have -full access to the user account which runs Composer. For this reason, it is strongly advised to -**avoid running Composer as super-user/root**. - -You can disable plugins and scripts during package installation or updates with the following -syntax so only Composer's code, and no third party code, will execute: - -```sh -composer install --no-plugins --no-scripts ... -composer update --no-plugins --no-scripts ... -``` - -The `exec` command will always run third party code as the user which runs `composer`. - -In some cases, like in CI systems or such where you want to install untrusted dependencies, the -safest way to do it is to run the above command. diff --git a/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md b/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md deleted file mode 100644 index 14da5f5..0000000 --- a/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md +++ /dev/null @@ -1,32 +0,0 @@ -# Should I commit the dependencies in my vendor directory? - -The general recommendation is **no**. The vendor directory (or wherever your -dependencies are installed) should be added to `.gitignore`/`svn:ignore`/etc. - -The best practice is to then have all the developers use Composer to install -the dependencies. Similarly, the build server, CI, deployment tools etc should -be adapted to run Composer as part of their project bootstrapping. - -While it can be tempting to commit it in some environment, it leads to a few -problems: - -- Large VCS repository size and diffs when you update code. -- Duplication of the history of all your dependencies in your own VCS. -- Adding dependencies installed via git to a git repo will show them as - submodules. This is problematic because they are not real submodules, and you - will run into issues. - -If you really feel like you must do this, you have a few options: - -1. Limit yourself to installing tagged releases (no dev versions), so that you - only get zipped installs, and avoid problems with the git "submodules". -2. Use --prefer-dist or set `preferred-install` to `dist` in your - [config](../04-schema.md#config). -3. Remove the `.git` directory of every dependency after the installation, then - you can add them to your git repo. You can do that with `rm -rf vendor/**/.git` - in ZSH or `find vendor/ -type d -name ".git" -exec rm -rf {} \;` in Bash. - but this means you will have to delete those dependencies from disk before - running composer update. -4. Add a .gitignore rule (`/vendor/**/.git`) to ignore all the vendor `.git` folders. - This approach does not require that you delete dependencies from disk prior to - running a composer update. diff --git a/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md b/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md deleted file mode 100644 index 20095bb..0000000 --- a/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md +++ /dev/null @@ -1,4 +0,0 @@ -# Which version numbering system does Composer itself use? - -Composer uses [Semantic Versioning (aka SemVer) -2.0.0](https://semver.org/spec/v2.0.0.html). diff --git a/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md b/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md deleted file mode 100644 index 9aef970..0000000 --- a/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md +++ /dev/null @@ -1,21 +0,0 @@ -# Why are unbound version constraints a bad idea? - -A version constraint without an upper bound such as `*`, `>=3.4` or -`dev-master` will allow updates to any future version of the dependency. -This includes major versions breaking backward compatibility. - -Once a release of your package is tagged, you cannot tweak its dependencies -anymore in case a dependency breaks BC - you have to do a new release but the -previous one stays broken. - -The only good alternative is to define an upper bound on your constraints, -which you can increase in a new release after testing that your package is -compatible with the new major version of your dependency. - -For example instead of using `>=3.4` you should use `~3.4` which allows all -versions up to `3.999` but does not include `4.0` and above. The `^` operator -works very well with libraries following [semantic versioning](https://semver.org). - -**Note:** As a package maintainer, you can make the life of your users easier -by providing an [alias version](../articles/aliases.md) for your development -branch to allow it to match bound constraints. diff --git a/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md b/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md deleted file mode 100644 index f4aa5b1..0000000 --- a/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md +++ /dev/null @@ -1,21 +0,0 @@ -# Why are version constraints combining comparisons and wildcards a bad idea? - -This is a fairly common mistake people make, defining version constraints in -their package requires like `>=2.*` or `>=1.1.*`. - -If you think about it and what it really means though, you will quickly -realize that it does not make much sense. If we decompose `>=2.*`, you -have two parts: - -- `>=2` which says the package should be in version 2.0.0 or above. -- `2.*` which says the package should be between version 2.0.0 (inclusive) - and 3.0.0 (exclusive). - -As you see, both rules agree on the fact that the package must be >=2.0.0, -but it is not possible to determine if when you wrote that you were thinking -of a package in version 3.0.0 or not. Should it match because you asked for -`>=2` or should it not match because you asked for a `2.*`? - -For this reason, Composer throws an error and says that this is invalid. -The easy way to fix it is to think about what you really mean, and use only -one of those rules. \ No newline at end of file diff --git a/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md b/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md deleted file mode 100644 index a39aff6..0000000 --- a/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md +++ /dev/null @@ -1,35 +0,0 @@ -# Why can't Composer load repositories recursively? - -You may run into problems when using custom repositories because Composer does -not load the repositories of your requirements, so you have to redefine those -repositories in all your `composer.json` files. - -Before going into details as to why this is like that, you have to understand -that the main use of custom VCS & package repositories is to temporarily try -some things, or use a fork of a project until your pull request is merged, etc. -You should not use them to keep track of private packages. For that you should -rather look into [Private Packagist](https://packagist.com) which lets you -configure all your private packages in one place, and avoids the slow-downs -associated with inline VCS repositories. - -There are three ways the dependency solver could work with custom repositories: - -- Fetch the repositories of root package, get all the packages from the defined -repositories, then resolve requirements. This is the current state and it works well -except for the limitation of not loading repositories recursively. - -- Fetch the repositories of root package, while initializing packages from the -defined repos, initialize recursively all repos found in those packages, and -their package's packages, etc, then resolve requirements. It could work, but it -slows down the initialization a lot since VCS repos can each take a few seconds, -and it could end up in a completely broken state since many versions of a package -could define the same packages inside a package repository, but with different -dist/source. There are many many ways this could go wrong. - -- Fetch the repositories of root package, then fetch the repositories of the -first level dependencies, then fetch the repositories of their dependencies, etc, -then resolve requirements. This sounds more efficient, but it suffers from the -same problems as the second solution, because loading the repositories of the -dependencies is not as easy as it sounds. You need to load all the repos of all -the potential matches for a requirement, which again might have conflicting -package definitions. diff --git a/vendor/composer/composer/doc/fixtures/fixtures.md b/vendor/composer/composer/doc/fixtures/fixtures.md deleted file mode 100644 index d67edb2..0000000 --- a/vendor/composer/composer/doc/fixtures/fixtures.md +++ /dev/null @@ -1,22 +0,0 @@ -# `Composer` type repository fixtures - -This directory contains some examples of what `composer` type repositories can -look like. They serve as illustrating examples accompanying the docs, but can -also be used as (initial) fixtures for tests. - -* `repo-composer-plain` is a simple, plain `packages.json` file -* `repo-composer-with-includes` uses the `includes` mechanism -* `repo-composer-with-providers` uses the `providers` mechanism - -## Sample Packages used in these fixtures - -All these repositories contain the following packages. - -* `foo/bar` versions 1.0.0, 1.0.1 and 1.1.0; dev-default and 1.0.x-dev branches. - On dev-default and in 1.1.0, `bar/baz` ~1.0 is required. -* `qux/quux` only has a dev-default branch. It `replace`s `gar/nix`. -* `gar/nix` has a 1.0.0 version and a dev-default branch. It is being replaced - by `qux/quux`. -* `bar/baz` has a 1.0.0 version and 1.0.x-dev as well as dev-default branches. - Additionally, 1.1.x-dev is a branch alias for dev-default. - diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json b/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json deleted file mode 100644 index 2190519..0000000 --- a/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json +++ /dev/null @@ -1,158 +0,0 @@ -{ - "packages": { - "bar/baz": { - "1.0.0": { - "name": "bar/baz", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "35810817c14d" - }, - "time": "2014-10-13 12:04:55", - "type": "library" - }, - "1.0.x-dev": { - "name": "bar/baz", - "version": "1.0.x-dev", - "version_normalized": "1.0.9999999.9999999-dev", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "ffff9aae6ed5" - }, - "time": "2014-10-13 12:05:37", - "type": "library" - }, - "dev-default": { - "name": "bar/baz", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "f317e556f2e2" - }, - "time": "2014-10-13 12:06:45", - "type": "library", - "extra": { - "branch-alias": { - "dev-default": "1.1.x-dev" - } - } - } - }, - "foo/bar": { - "1.0.0": { - "name": "foo/bar", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "249dec95a52a" - }, - "time": "2014-10-11 15:42:00", - "type": "library" - }, - "1.0.1": { - "name": "foo/bar", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "21e3328295d4" - }, - "time": "2014-10-11 15:45:56", - "type": "library" - }, - "1.0.x-dev": { - "name": "foo/bar", - "version": "1.0.x-dev", - "version_normalized": "1.0.9999999.9999999-dev", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "14dc17c8e860" - }, - "time": "2014-10-11 15:45:59", - "type": "library" - }, - "1.1.0": { - "name": "foo/bar", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "d2fa3e69ad5b" - }, - "require": { - "bar/baz": "~1.0" - }, - "time": "2014-10-11 15:43:16", - "type": "library" - }, - "dev-default": { - "name": "foo/bar", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "8e5a5c224336" - }, - "require": { - "bar/baz": "~1.0" - }, - "time": "2014-10-11 15:43:18", - "type": "library" - } - }, - "gar/nix": { - "1.0.0": { - "name": "gar/nix", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "44977145d64e" - }, - "time": "2014-10-13 12:03:33", - "type": "library" - }, - "dev-default": { - "name": "gar/nix", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "51cca95a31c2" - }, - "time": "2014-10-13 12:03:35", - "type": "library" - } - }, - "qux/quux": { - "dev-default": { - "name": "qux/quux", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http://some.where/over/the/rainbow/", - "reference": "4a10a567baa5" - }, - "replace": { - "gar/nix": "1.0.*" - }, - "time": "2014-10-11 15:48:15", - "type": "library" - } - } - } -} diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json deleted file mode 100644 index 94a43b0..0000000 --- a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "packages": { - "bar\/baz": { - "1.0.0": { - "name": "bar\/baz", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "35810817c14d" - }, - "time": "2014-10-13 12:04:55", - "type": "library", - "uid": 0 - }, - "1.0.x-dev": { - "name": "bar\/baz", - "version": "1.0.x-dev", - "version_normalized": "1.0.9999999.9999999-dev", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "ffff9aae6ed5" - }, - "time": "2014-10-13 12:05:37", - "type": "library", - "uid": 1 - }, - "dev-default": { - "name": "bar\/baz", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "f317e556f2e2" - }, - "time": "2014-10-13 12:06:45", - "type": "library", - "extra": { - "branch-alias": { - "dev-default": "1.1.x-dev" - } - }, - "uid": 2 - } - } - } -} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json deleted file mode 100644 index 7dc7cc9..0000000 --- a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "packages": { - "foo\/bar": { - "1.0.0": { - "name": "foo\/bar", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "249dec95a52a" - }, - "time": "2014-10-11 15:42:00", - "type": "library", - "uid": 3 - }, - "1.0.1": { - "name": "foo\/bar", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "21e3328295d4" - }, - "time": "2014-10-11 15:45:56", - "type": "library", - "uid": 4 - }, - "1.0.x-dev": { - "name": "foo\/bar", - "version": "1.0.x-dev", - "version_normalized": "1.0.9999999.9999999-dev", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "14dc17c8e860" - }, - "time": "2014-10-11 15:45:59", - "type": "library", - "uid": 5 - }, - "1.1.0": { - "name": "foo\/bar", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "d2fa3e69ad5b" - }, - "require": { - "bar\/baz": "~1.0" - }, - "time": "2014-10-11 15:43:16", - "type": "library", - "uid": 6 - }, - "dev-default": { - "name": "foo\/bar", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "8e5a5c224336" - }, - "require": { - "bar\/baz": "~1.0" - }, - "time": "2014-10-11 15:43:18", - "type": "library", - "uid": 7 - } - } - } -} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json deleted file mode 100644 index 512b8d8..0000000 --- a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "packages": { - "qux\/quux": { - "dev-default": { - "name": "qux\/quux", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "4a10a567baa5" - }, - "replace": { - "gar\/nix": "1.0.*" - }, - "time": "2014-10-11 15:48:15", - "type": "library", - "uid": 10 - } - }, - "gar\/nix": { - "1.0.0": { - "name": "gar\/nix", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "44977145d64e" - }, - "time": "2014-10-13 12:03:33", - "type": "library", - "uid": 8 - }, - "dev-default": { - "name": "gar\/nix", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "51cca95a31c2" - }, - "time": "2014-10-13 12:03:35", - "type": "library", - "uid": 9 - } - } - } -} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json deleted file mode 100644 index b82eb41..0000000 --- a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "providers": { - "bar\/baz": { - "sha256": "923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe" - }, - "foo\/bar": { - "sha256": "4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a" - }, - "gar\/nix": { - "sha256": "5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321" - }, - "qux\/quux": { - "sha256": "c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d" - } - } -} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json deleted file mode 100644 index 0141872..0000000 --- a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "packages": { - "qux\/quux": { - "dev-default": { - "name": "qux\/quux", - "version": "dev-default", - "version_normalized": "9999999-dev", - "source": { - "type": "hg", - "url": "http:\/\/some.where\/over\/the\/rainbow\/", - "reference": "4a10a567baa5" - }, - "replace": { - "gar\/nix": "1.0.*" - }, - "time": "2014-10-11 15:48:15", - "type": "library", - "uid": 10 - } - } - } -} \ No newline at end of file diff --git a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json b/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json deleted file mode 100644 index 65968a8..0000000 --- a/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "packages": [], - "providers-url": "\/p\/%package%$%hash%.json", - "provider-includes": { - "p\/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json": { - "sha256": "1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8" - } - } -} \ No newline at end of file diff --git a/vendor/composer/composer/res/composer-repository-schema.json b/vendor/composer/composer/res/composer-repository-schema.json deleted file mode 100644 index 914d8e2..0000000 --- a/vendor/composer/composer/res/composer-repository-schema.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "description": "A representation of packages metadata.", - "type": "object", - "oneOf": [ - { "required": [ "packages" ] }, - { "required": [ "providers" ] }, - { "required": [ "provider-includes", "providers-url" ] } - ], - "properties": { - "packages": { - "type": ["object", "array"], - "description": "A hashmap of package names in the form of /.", - "additionalProperties": { "$ref": "#/definitions/versions" } - }, - "providers-url": { - "type": "string", - "description": "Endpoint to retrieve provider data from, e.g. '/p/%package%$%hash%.json'." - }, - "provider-includes": { - "type": "object", - "description": "A hashmap of provider listings.", - "additionalProperties": { "$ref": "#/definitions/provider" } - }, - "providers": { - "type": "object", - "description": "A hashmap of package names in the form of /.", - "additionalProperties": { "$ref": "#/definitions/provider" } - }, - "notify-batch": { - "type": "string", - "description": "Endpoint to call after multiple packages have been installed, e.g. '/downloads/'." - }, - "search": { - "type": "string", - "description": "Endpoint that provides search capabilities, e.g. '/search.json?q=%query%&type=%type%'." - }, - "warning": { - "type": "string", - "description": "A message that will be output by Composer as a warning when this source is consulted." - } - }, - "definitions": { - "versions": { - "type": "object", - "description": "A hashmap of versions and their metadata.", - "additionalProperties": { "$ref": "#/definitions/version" } - }, - "version": { - "type": "object", - "oneOf": [ - { "$ref": "#/definitions/package" }, - { "$ref": "#/definitions/metapackage" } - ] - }, - "package-base": { - "properties": { - "name": { "type": "string" }, - "type": { "type": "string" }, - "version": { "type": "string" }, - "version_normalized": { - "type": "string", - "description": "Normalized version, optional but can save computational time on client side." - }, - "autoload": { "type": "object" }, - "require": { "type": "object" }, - "replace": { "type": "object" }, - "conflict": { "type": "object" }, - "provide": { "type": "object" }, - "time": { "type": "string" } - }, - "additionalProperties": true - }, - "package": { - "allOf": [ - { "$ref": "#/definitions/package-base" }, - { - "properties": { - "dist": { "type": "object" }, - "source": { "type": "object" } - } - }, - { "oneOf": [ - { "required": [ "name", "version", "source" ] }, - { "required": [ "name", "version", "dist" ] } - ] } - ] - }, - "metapackage": { - "allOf": [ - { "$ref": "#/definitions/package-base" }, - { - "properties": { - "type": { "type": "string", "enum": [ "metapackage" ] } - }, - "required": [ "name", "version", "type" ] - } - ] - }, - "provider": { - "type": "object", - "properties": { - "sha256": { - "type": "string", - "description": "Hash value that can be used to validate the resource." - } - } - } - } -} diff --git a/vendor/composer/composer/res/composer-schema.json b/vendor/composer/composer/res/composer-schema.json deleted file mode 100644 index 0247757..0000000 --- a/vendor/composer/composer/res/composer-schema.json +++ /dev/null @@ -1,849 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "name": "Package", - "type": "object", - "additionalProperties": false, - "required": [ "name", "description" ], - "properties": { - "name": { - "type": "string", - "description": "Package name, including 'vendor-name/' prefix." - }, - "type": { - "description": "Package type, either 'library' for common packages, 'composer-plugin' for plugins, 'metapackage' for empty packages, or a custom type ([a-z0-9-]+) defined by whatever project this package applies to.", - "type": "string", - "pattern": "^[a-z0-9-]+$" - }, - "target-dir": { - "description": "DEPRECATED: Forces the package to be installed into the given subdirectory path. This is used for autoloading PSR-0 packages that do not contain their full path. Use forward slashes for cross-platform compatibility.", - "type": "string" - }, - "description": { - "type": "string", - "description": "Short package description." - }, - "keywords": { - "type": "array", - "items": { - "type": "string", - "description": "A tag/keyword that this package relates to." - } - }, - "homepage": { - "type": "string", - "description": "Homepage URL for the project.", - "format": "uri" - }, - "readme": { - "type": "string", - "description": "Relative path to the readme document." - }, - "version": { - "type": "string", - "description": "Package version, see https://getcomposer.org/doc/04-schema.md#version for more info on valid schemes.", - "pattern": "^v?\\d+(((\\.\\d+)?\\.\\d+)?\\.\\d+)?|^dev-" - }, - "time": { - "type": "string", - "description": "Package release date, in 'YYYY-MM-DD', 'YYYY-MM-DD HH:MM:SS' or 'YYYY-MM-DDTHH:MM:SSZ' format." - }, - "license": { - "type": ["string", "array"], - "description": "License name. Or an array of license names." - }, - "authors": { - "$ref": "#/definitions/authors" - }, - "require": { - "type": "object", - "description": "This is a hash of package name (keys) and version constraints (values) that are required to run this package.", - "additionalProperties": { - "type": "string" - } - }, - "replace": { - "type": "object", - "description": "This is a hash of package name (keys) and version constraints (values) that can be replaced by this package.", - "additionalProperties": { - "type": "string" - } - }, - "conflict": { - "type": "object", - "description": "This is a hash of package name (keys) and version constraints (values) that conflict with this package.", - "additionalProperties": { - "type": "string" - } - }, - "provide": { - "type": "object", - "description": "This is a hash of package name (keys) and version constraints (values) that this package provides in addition to this package's name.", - "additionalProperties": { - "type": "string" - } - }, - "require-dev": { - "type": "object", - "description": "This is a hash of package name (keys) and version constraints (values) that this package requires for developing it (testing tools and such).", - "additionalProperties": { - "type": "string" - } - }, - "suggest": { - "type": "object", - "description": "This is a hash of package name (keys) and descriptions (values) that this package suggests work well with it (this will be suggested to the user during installation).", - "additionalProperties": { - "type": "string" - } - }, - "config": { - "type": "object", - "description": "Composer options.", - "properties": { - "process-timeout": { - "type": "integer", - "description": "The timeout in seconds for process executions, defaults to 300 (5mins)." - }, - "use-include-path": { - "type": "boolean", - "description": "If true, the Composer autoloader will also look for classes in the PHP include path." - }, - "preferred-install": { - "type": ["string", "object"], - "description": "The install method Composer will prefer to use, defaults to auto and can be any of source, dist, auto, or a hash of {\"pattern\": \"preference\"}." - }, - "notify-on-install": { - "type": "boolean", - "description": "Composer allows repositories to define a notification URL, so that they get notified whenever a package from that repository is installed. This option allows you to disable that behaviour, defaults to true." - }, - "github-protocols": { - "type": "array", - "description": "A list of protocols to use for github.com clones, in priority order, defaults to [\"git\", \"https\", \"http\"].", - "items": { - "type": "string" - } - }, - "github-oauth": { - "type": "object", - "description": "A hash of domain name => github API oauth tokens, typically {\"github.com\":\"\"}.", - "additionalProperties": { - "type": "string" - } - }, - "gitlab-oauth": { - "type": "object", - "description": "A hash of domain name => gitlab API oauth tokens, typically {\"gitlab.com\":\"\"}.", - "additionalProperties": { - "type": "string" - } - }, - "gitlab-token": { - "type": "object", - "description": "A hash of domain name => gitlab private tokens, typically {\"gitlab.com\":\"\"}.", - "additionalProperties": true - }, - "disable-tls": { - "type": "boolean", - "description": "Defaults to `false`. If set to true all HTTPS URLs will be tried with HTTP instead and no network level encryption is performed. Enabling this is a security risk and is NOT recommended. The better way is to enable the php_openssl extension in php.ini." - }, - "secure-http": { - "type": "boolean", - "description": "Defaults to `true`. If set to true only HTTPS URLs are allowed to be downloaded via Composer. If you really absolutely need HTTP access to something then you can disable it, but using \"Let's Encrypt\" to get a free SSL certificate is generally a better alternative." - }, - "cafile": { - "type": "string", - "description": "A way to set the path to the openssl CA file. In PHP 5.6+ you should rather set this via openssl.cafile in php.ini, although PHP 5.6+ should be able to detect your system CA file automatically." - }, - "capath": { - "type": "string", - "description": "If cafile is not specified or if the certificate is not found there, the directory pointed to by capath is searched for a suitable certificate. capath must be a correctly hashed certificate directory." - }, - "http-basic": { - "type": "object", - "description": "A hash of domain name => {\"username\": \"...\", \"password\": \"...\"}.", - "additionalProperties": { - "type": "object", - "required": ["username", "password"], - "properties": { - "username": { - "type": "string", - "description": "The username used for HTTP Basic authentication" - }, - "password": { - "type": "string", - "description": "The password used for HTTP Basic authentication" - } - } - } - }, - "store-auths": { - "type": ["string", "boolean"], - "description": "What to do after prompting for authentication, one of: true (store), false (do not store) or \"prompt\" (ask every time), defaults to prompt." - }, - "platform": { - "type": "object", - "description": "This is a hash of package name (keys) and version (values) that will be used to mock the platform packages on this machine.", - "additionalProperties": { - "type": "string" - } - }, - "vendor-dir": { - "type": "string", - "description": "The location where all packages are installed, defaults to \"vendor\"." - }, - "bin-dir": { - "type": "string", - "description": "The location where all binaries are linked, defaults to \"vendor/bin\"." - }, - "data-dir": { - "type": "string", - "description": "The location where old phar files are stored, defaults to \"$home\" except on XDG Base Directory compliant unixes." - }, - "cache-dir": { - "type": "string", - "description": "The location where all caches are located, defaults to \"~/.composer/cache\" on *nix and \"%LOCALAPPDATA%\\Composer\" on windows." - }, - "cache-files-dir": { - "type": "string", - "description": "The location where files (zip downloads) are cached, defaults to \"{$cache-dir}/files\"." - }, - "cache-repo-dir": { - "type": "string", - "description": "The location where repo (git/hg repo clones) are cached, defaults to \"{$cache-dir}/repo\"." - }, - "cache-vcs-dir": { - "type": "string", - "description": "The location where vcs infos (git clones, github api calls, etc. when reading vcs repos) are cached, defaults to \"{$cache-dir}/vcs\"." - }, - "cache-ttl": { - "type": "integer", - "description": "The default cache time-to-live, defaults to 15552000 (6 months)." - }, - "cache-files-ttl": { - "type": "integer", - "description": "The cache time-to-live for files, defaults to the value of cache-ttl." - }, - "cache-files-maxsize": { - "type": ["string", "integer"], - "description": "The cache max size for the files cache, defaults to \"300MiB\"." - }, - "bin-compat": { - "enum": ["auto", "full"], - "description": "The compatibility of the binaries, defaults to \"auto\" (automatically guessed) and can be \"full\" (compatible with both Windows and Unix-based systems)." - }, - "discard-changes": { - "type": ["string", "boolean"], - "description": "The default style of handling dirty updates, defaults to false and can be any of true, false or \"stash\"." - }, - "autoloader-suffix": { - "type": "string", - "description": "Optional string to be used as a suffix for the generated Composer autoloader. When null a random one will be generated." - }, - "optimize-autoloader": { - "type": "boolean", - "description": "Always optimize when dumping the autoloader." - }, - "prepend-autoloader": { - "type": "boolean", - "description": "If false, the composer autoloader will not be prepended to existing autoloaders, defaults to true." - }, - "classmap-authoritative": { - "type": "boolean", - "description": "If true, the composer autoloader will not scan the filesystem for classes that are not found in the class map, defaults to false." - }, - "apcu-autoloader": { - "type": "boolean", - "description": "If true, the Composer autoloader will check for APCu and use it to cache found/not-found classes when the extension is enabled, defaults to false." - }, - "github-domains": { - "type": "array", - "description": "A list of domains to use in github mode. This is used for GitHub Enterprise setups, defaults to [\"github.com\"].", - "items": { - "type": "string" - } - }, - "github-expose-hostname": { - "type": "boolean", - "description": "Defaults to true. If set to false, the OAuth tokens created to access the github API will have a date instead of the machine hostname." - }, - "gitlab-domains": { - "type": "array", - "description": "A list of domains to use in gitlab mode. This is used for custom GitLab setups, defaults to [\"gitlab.com\"].", - "items": { - "type": "string" - } - }, - "use-github-api": { - "type": "boolean", - "description": "Defaults to true. If set to false, globally disables the use of the GitHub API for all GitHub repositories and clones the repository as it would for any other repository." - }, - "archive-format": { - "type": "string", - "description": "The default archiving format when not provided on cli, defaults to \"tar\"." - }, - "archive-dir": { - "type": "string", - "description": "The default archive path when not provided on cli, defaults to \".\"." - }, - "htaccess-protect": { - "type": "boolean", - "description": "Defaults to true. If set to false, Composer will not create .htaccess files in the composer home, cache, and data directories." - }, - "sort-packages": { - "type": "boolean", - "description": "Defaults to false. If set to true, Composer will sort packages when adding/updating a new dependency." - } - } - }, - "extra": { - "type": ["object", "array"], - "description": "Arbitrary extra data that can be used by plugins, for example, package of type composer-plugin may have a 'class' key defining an installer class name.", - "additionalProperties": true - }, - "autoload": { - "$ref": "#/definitions/autoload" - }, - "autoload-dev": { - "type": "object", - "description": "Description of additional autoload rules for development purpose (eg. a test suite).", - "properties": { - "psr-0": { - "type": "object", - "description": "This is a hash of namespaces (keys) and the directories they can be found into (values, can be arrays of paths) by the autoloader.", - "additionalProperties": { - "type": ["string", "array"], - "items": { - "type": "string" - } - } - }, - "psr-4": { - "type": "object", - "description": "This is a hash of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.", - "additionalProperties": { - "type": ["string", "array"], - "items": { - "type": "string" - } - } - }, - "classmap": { - "type": "array", - "description": "This is an array of directories that contain classes to be included in the class-map generation process." - }, - "files": { - "type": "array", - "description": "This is an array of files that are always required on every request." - } - } - }, - "archive": { - "type": ["object"], - "description": "Options for creating package archives for distribution.", - "properties": { - "exclude": { - "type": "array", - "description": "A list of patterns for paths to exclude or include if prefixed with an exclamation mark." - } - } - }, - "repositories": { - "type": ["object", "array"], - "description": "A set of additional repositories where packages can be found.", - "additionalProperties": { - "oneOf": [ - { "$ref": "#/definitions/repository" }, - { "type": "boolean", "enum": [false] } - ] - }, - "items": { - "oneOf": [ - { "$ref": "#/definitions/repository" }, - { - "type": "object", - "additionalProperties": { "type": "boolean", "enum": [false] }, - "minProperties": 1, - "maxProperties": 1 - } - ] - } - }, - "minimum-stability": { - "type": ["string"], - "description": "The minimum stability the packages must have to be install-able. Possible values are: dev, alpha, beta, RC, stable.", - "pattern": "^dev|alpha|beta|rc|RC|stable$" - }, - "prefer-stable": { - "type": ["boolean"], - "description": "If set to true, stable packages will be preferred to dev packages when possible, even if the minimum-stability allows unstable packages." - }, - "bin": { - "type": ["string", "array"], - "description": "A set of files, or a single file, that should be treated as binaries and symlinked into bin-dir (from config).", - "items": { - "type": "string" - } - }, - "include-path": { - "type": ["array"], - "description": "DEPRECATED: A list of directories which should get added to PHP's include path. This is only present to support legacy projects, and all new code should preferably use autoloading.", - "items": { - "type": "string" - } - }, - "scripts": { - "type": ["object"], - "description": "Script listeners that will be executed before/after some events.", - "properties": { - "pre-install-cmd": { - "type": ["array", "string"], - "description": "Occurs before the install command is executed, contains one or more Class::method callables or shell commands." - }, - "post-install-cmd": { - "type": ["array", "string"], - "description": "Occurs after the install command is executed, contains one or more Class::method callables or shell commands." - }, - "pre-update-cmd": { - "type": ["array", "string"], - "description": "Occurs before the update command is executed, contains one or more Class::method callables or shell commands." - }, - "post-update-cmd": { - "type": ["array", "string"], - "description": "Occurs after the update command is executed, contains one or more Class::method callables or shell commands." - }, - "pre-status-cmd": { - "type": ["array", "string"], - "description": "Occurs before the status command is executed, contains one or more Class::method callables or shell commands." - }, - "post-status-cmd": { - "type": ["array", "string"], - "description": "Occurs after the status command is executed, contains one or more Class::method callables or shell commands." - }, - "pre-package-install": { - "type": ["array", "string"], - "description": "Occurs before a package is installed, contains one or more Class::method callables or shell commands." - }, - "post-package-install": { - "type": ["array", "string"], - "description": "Occurs after a package is installed, contains one or more Class::method callables or shell commands." - }, - "pre-package-update": { - "type": ["array", "string"], - "description": "Occurs before a package is updated, contains one or more Class::method callables or shell commands." - }, - "post-package-update": { - "type": ["array", "string"], - "description": "Occurs after a package is updated, contains one or more Class::method callables or shell commands." - }, - "pre-package-uninstall": { - "type": ["array", "string"], - "description": "Occurs before a package has been uninstalled, contains one or more Class::method callables or shell commands." - }, - "post-package-uninstall": { - "type": ["array", "string"], - "description": "Occurs after a package has been uninstalled, contains one or more Class::method callables or shell commands." - }, - "pre-autoload-dump": { - "type": ["array", "string"], - "description": "Occurs before the autoloader is dumped, contains one or more Class::method callables or shell commands." - }, - "post-autoload-dump": { - "type": ["array", "string"], - "description": "Occurs after the autoloader is dumped, contains one or more Class::method callables or shell commands." - }, - "post-root-package-install": { - "type": ["array", "string"], - "description": "Occurs after the root-package is installed, contains one or more Class::method callables or shell commands." - }, - "post-create-project-cmd": { - "type": ["array", "string"], - "description": "Occurs after the create-project command is executed, contains one or more Class::method callables or shell commands." - } - } - }, - "scripts-descriptions": { - "type": ["object"], - "description": "Descriptions for custom commands, shown in console help.", - "additionalProperties": { - "type": "string" - } - }, - "support": { - "type": "object", - "properties": { - "email": { - "type": "string", - "description": "Email address for support.", - "format": "email" - }, - "issues": { - "type": "string", - "description": "URL to the issue tracker.", - "format": "uri" - }, - "forum": { - "type": "string", - "description": "URL to the forum.", - "format": "uri" - }, - "wiki": { - "type": "string", - "description": "URL to the wiki.", - "format": "uri" - }, - "irc": { - "type": "string", - "description": "IRC channel for support, as irc://server/channel.", - "format": "uri" - }, - "chat": { - "type": "string", - "description": "URL to the support chat.", - "format": "uri" - }, - "source": { - "type": "string", - "description": "URL to browse or download the sources.", - "format": "uri" - }, - "docs": { - "type": "string", - "description": "URL to the documentation.", - "format": "uri" - }, - "rss": { - "type": "string", - "description": "URL to the RSS feed.", - "format": "uri" - } - } - }, - "non-feature-branches": { - "type": ["array"], - "description": "A set of string or regex patterns for non-numeric branch names that will not be handled as feature branches.", - "items": { - "type": "string" - } - }, - "abandoned": { - "type": ["boolean", "string"], - "description": "Indicates whether this package has been abandoned, it can be boolean or a package name/URL pointing to a recommended alternative. Defaults to false." - }, - "_comment": { - "type": ["array", "string"], - "description": "A key to store comments in" - } - }, - "definitions": { - "authors": { - "type": "array", - "description": "List of authors that contributed to the package. This is typically the main maintainers, not the full list.", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ "name"], - "properties": { - "name": { - "type": "string", - "description": "Full name of the author." - }, - "email": { - "type": "string", - "description": "Email address of the author.", - "format": "email" - }, - "homepage": { - "type": "string", - "description": "Homepage URL for the author.", - "format": "uri" - }, - "role": { - "type": "string", - "description": "Author's role in the project." - } - } - } - }, - "autoload": { - "type": "object", - "description": "Description of how the package can be autoloaded.", - "properties": { - "psr-0": { - "type": "object", - "description": "This is a hash of namespaces (keys) and the directories they can be found in (values, can be arrays of paths) by the autoloader.", - "additionalProperties": { - "type": ["string", "array"], - "items": { - "type": "string" - } - } - }, - "psr-4": { - "type": "object", - "description": "This is a hash of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.", - "additionalProperties": { - "type": ["string", "array"], - "items": { - "type": "string" - } - } - }, - "classmap": { - "type": "array", - "description": "This is an array of directories that contain classes to be included in the class-map generation process." - }, - "files": { - "type": "array", - "description": "This is an array of files that are always required on every request." - }, - "exclude-from-classmap": { - "type": "array", - "description": "This is an array of patterns to exclude from autoload classmap generation. (e.g. \"exclude-from-classmap\": [\"/test/\", \"/tests/\", \"/Tests/\"]" - } - } - }, - "repository": { - "type": "object", - "oneOf": [ - { "$ref": "#/definitions/composer-repository" }, - { "$ref": "#/definitions/vcs-repository" }, - { "$ref": "#/definitions/path-repository" }, - { "$ref": "#/definitions/artifact-repository" }, - { "$ref": "#/definitions/pear-repository" }, - { "$ref": "#/definitions/package-repository" } - ] - }, - "composer-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["composer"] }, - "url": { "type": "string" }, - "options": { - "type": "object", - "additionalProperties": true - }, - "allow_ssl_downgrade": { "type": "boolean" }, - "force-lazy-providers": { "type": "boolean" } - } - }, - "vcs-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["vcs", "github", "git", "gitlab", "git-bitbucket", "hg", "hg-bitbucket", "fossil", "perforce", "svn"] }, - "url": { "type": "string" }, - "no-api": { "type": "boolean" }, - "secure-http": { "type": "boolean" }, - "svn-cache-credentials": { "type": "boolean" }, - "trunk-path": { "type": ["string", "boolean"] }, - "branches-path": { "type": ["string", "boolean"] }, - "tags-path": { "type": ["string", "boolean"] }, - "package-path": { "type": "string" }, - "depot": { "type": "string" }, - "branch": { "type": "string" }, - "unique_perforce_client_name": { "type": "string" }, - "p4user": { "type": "string" }, - "p4password": { "type": "string" } - } - }, - "path-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["path"] }, - "url": { "type": "string" }, - "options": { - "type": "object", - "properties": { - "symlink": { "type": ["boolean", "null"] } - }, - "additionalProperties": true - } - } - }, - "artifact-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["artifact"] }, - "url": { "type": "string" } - } - }, - "pear-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["pear"] }, - "url": { "type": "string" }, - "vendor-alias": { "type": "string" } - } - }, - "package-repository": { - "type": "object", - "required": ["type", "package"], - "properties": { - "type": { "type": "string", "enum": ["package"] }, - "package": { - "oneOf": [ - { "$ref": "#/definitions/inline-package" }, - { - "type": "array", - "items": { "$ref": "#/definitions/inline-package" } - } - ] - } - } - }, - "inline-package": { - "type": "object", - "required": ["name", "version"], - "properties": { - "name": { - "type": "string", - "description": "Package name, including 'vendor-name/' prefix." - }, - "type": { - "type": "string" - }, - "target-dir": { - "description": "DEPRECATED: Forces the package to be installed into the given subdirectory path. This is used for autoloading PSR-0 packages that do not contain their full path. Use forward slashes for cross-platform compatibility.", - "type": "string" - }, - "description": { - "type": "string" - }, - "keywords": { - "type": "array", - "items": { - "type": "string" - } - }, - "homepage": { - "type": "string", - "format": "uri" - }, - "version": { - "type": "string" - }, - "time": { - "type": "string" - }, - "license": { - "type": [ - "string", - "array" - ] - }, - "authors": { - "$ref": "#/definitions/authors" - }, - "require": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "replace": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "conflict": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "provide": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "require-dev": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "suggest": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "extra": { - "type": ["object", "array"], - "additionalProperties": true - }, - "autoload": { - "$ref": "#/definitions/autoload" - }, - "archive": { - "type": ["object"], - "properties": { - "exclude": { - "type": "array" - } - } - }, - "bin": { - "type": ["string", "array"], - "description": "A set of files, or a single file, that should be treated as binaries and symlinked into bin-dir (from config).", - "items": { - "type": "string" - } - }, - "include-path": { - "type": ["array"], - "description": "DEPRECATED: A list of directories which should get added to PHP's include path. This is only present to support legacy projects, and all new code should preferably use autoloading.", - "items": { - "type": "string" - } - }, - "source": { - "type": "object", - "required": ["type", "url", "reference"], - "properties": { - "type": { - "type": "string" - }, - "url": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "mirrors": { - "type": "array" - } - } - }, - "dist": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { - "type": "string" - }, - "url": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "shasum": { - "type": "string" - }, - "mirrors": { - "type": "array" - } - } - } - }, - "additionalProperties": true - } - } -} diff --git a/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php b/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php deleted file mode 100644 index d970ca5..0000000 --- a/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php +++ /dev/null @@ -1,1013 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -use Composer\Config; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Installer\InstallationManager; -use Composer\IO\IOInterface; -use Composer\Package\AliasPackage; -use Composer\Package\PackageInterface; -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Util\Filesystem; -use Composer\Script\ScriptEvents; -use Composer\Util\PackageSorter; - -/** - * @author Igor Wiedler - * @author Jordi Boggiano - */ -class AutoloadGenerator -{ - /** - * @var EventDispatcher - */ - private $eventDispatcher; - - /** - * @var IOInterface - */ - private $io; - - /** - * @var bool - */ - private $devMode = false; - - /** - * @var bool - */ - private $classMapAuthoritative = false; - - /** - * @var bool - */ - private $apcu = false; - - /** - * @var bool - */ - private $runScripts = false; - - public function __construct(EventDispatcher $eventDispatcher, IOInterface $io = null) - { - $this->eventDispatcher = $eventDispatcher; - $this->io = $io; - } - - public function setDevMode($devMode = true) - { - $this->devMode = (bool) $devMode; - } - - /** - * Whether or not generated autoloader considers the class map - * authoritative. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = (bool) $classMapAuthoritative; - } - - /** - * Whether or not generated autoloader considers APCu caching. - * - * @param bool $apcu - */ - public function setApcu($apcu) - { - $this->apcu = (bool) $apcu; - } - - /** - * Set whether to run scripts or not - * - * @param bool $runScripts - */ - public function setRunScripts($runScripts = true) - { - $this->runScripts = (bool) $runScripts; - } - - public function dump(Config $config, InstalledRepositoryInterface $localRepo, PackageInterface $mainPackage, InstallationManager $installationManager, $targetDir, $scanPsr0Packages = false, $suffix = '') - { - if ($this->classMapAuthoritative) { - // Force scanPsr0Packages when classmap is authoritative - $scanPsr0Packages = true; - } - if ($this->runScripts) { - $this->eventDispatcher->dispatchScript(ScriptEvents::PRE_AUTOLOAD_DUMP, $this->devMode, array(), array( - 'optimize' => (bool) $scanPsr0Packages, - )); - } - - $filesystem = new Filesystem(); - $filesystem->ensureDirectoryExists($config->get('vendor-dir')); - // Do not remove double realpath() calls. - // Fixes failing Windows realpath() implementation. - // See https://bugs.php.net/bug.php?id=72738 - $basePath = $filesystem->normalizePath(realpath(realpath(getcwd()))); - $vendorPath = $filesystem->normalizePath(realpath(realpath($config->get('vendor-dir')))); - $useGlobalIncludePath = (bool) $config->get('use-include-path'); - $prependAutoloader = $config->get('prepend-autoloader') === false ? 'false' : 'true'; - $targetDir = $vendorPath.'/'.$targetDir; - $filesystem->ensureDirectoryExists($targetDir); - - $vendorPathCode = $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true); - $vendorPathCode52 = str_replace('__DIR__', 'dirname(__FILE__)', $vendorPathCode); - $vendorPathToTargetDirCode = $filesystem->findShortestPathCode($vendorPath, realpath($targetDir), true); - - $appBaseDirCode = $filesystem->findShortestPathCode($vendorPath, $basePath, true); - $appBaseDirCode = str_replace('__DIR__', '$vendorDir', $appBaseDirCode); - - $namespacesFile = <<buildPackageMap($installationManager, $mainPackage, $localRepo->getCanonicalPackages()); - $autoloads = $this->parseAutoloads($packageMap, $mainPackage, $this->devMode === false); - - // Process the 'psr-0' base directories. - foreach ($autoloads['psr-0'] as $namespace => $paths) { - $exportedPaths = array(); - foreach ($paths as $path) { - $exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); - } - $exportedPrefix = var_export($namespace, true); - $namespacesFile .= " $exportedPrefix => "; - $namespacesFile .= "array(".implode(', ', $exportedPaths)."),\n"; - } - $namespacesFile .= ");\n"; - - // Process the 'psr-4' base directories. - foreach ($autoloads['psr-4'] as $namespace => $paths) { - $exportedPaths = array(); - foreach ($paths as $path) { - $exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); - } - $exportedPrefix = var_export($namespace, true); - $psr4File .= " $exportedPrefix => "; - $psr4File .= "array(".implode(', ', $exportedPaths)."),\n"; - } - $psr4File .= ");\n"; - - $classmapFile = <<getAutoload(); - if ($mainPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) { - $levels = substr_count($filesystem->normalizePath($mainPackage->getTargetDir()), '/') + 1; - $prefixes = implode(', ', array_map(function ($prefix) { - return var_export($prefix, true); - }, array_keys($mainAutoload['psr-0']))); - $baseDirFromTargetDirCode = $filesystem->findShortestPathCode($targetDir, $basePath, true); - - $targetDirLoader = << $paths) { - $namespacesToScan[$namespace][] = array('paths' => $paths, 'type' => $psrType); - } - } - - krsort($namespacesToScan); - - foreach ($namespacesToScan as $namespace => $groups) { - foreach ($groups as $group) { - foreach ($group['paths'] as $dir) { - $dir = $filesystem->normalizePath($filesystem->isAbsolutePath($dir) ? $dir : $basePath.'/'.$dir); - if (!is_dir($dir)) { - continue; - } - - $namespaceFilter = $namespace === '' ? null : $namespace; - $classMap = $this->addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $blacklist, $namespaceFilter, $classMap); - } - } - } - } - - foreach ($autoloads['classmap'] as $dir) { - $classMap = $this->addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $blacklist, null, $classMap); - } - - ksort($classMap); - foreach ($classMap as $class => $code) { - $classmapFile .= ' '.var_export($class, true).' => '.$code; - } - $classmapFile .= ");\n"; - - if (!$suffix) { - if (!$config->get('autoloader-suffix') && is_readable($vendorPath.'/autoload.php')) { - $content = file_get_contents($vendorPath.'/autoload.php'); - if (preg_match('{ComposerAutoloaderInit([^:\s]+)::}', $content, $match)) { - $suffix = $match[1]; - } - } - - if (!$suffix) { - $suffix = $config->get('autoloader-suffix') ?: md5(uniqid('', true)); - } - } - - file_put_contents($targetDir.'/autoload_namespaces.php', $namespacesFile); - file_put_contents($targetDir.'/autoload_psr4.php', $psr4File); - file_put_contents($targetDir.'/autoload_classmap.php', $classmapFile); - $includePathFilePath = $targetDir.'/include_paths.php'; - if ($includePathFileContents = $this->getIncludePathsFile($packageMap, $filesystem, $basePath, $vendorPath, $vendorPathCode52, $appBaseDirCode)) { - file_put_contents($includePathFilePath, $includePathFileContents); - } elseif (file_exists($includePathFilePath)) { - unlink($includePathFilePath); - } - $includeFilesFilePath = $targetDir.'/autoload_files.php'; - if ($includeFilesFileContents = $this->getIncludeFilesFile($autoloads['files'], $filesystem, $basePath, $vendorPath, $vendorPathCode52, $appBaseDirCode)) { - file_put_contents($includeFilesFilePath, $includeFilesFileContents); - } elseif (file_exists($includeFilesFilePath)) { - unlink($includeFilesFilePath); - } - file_put_contents($targetDir.'/autoload_static.php', $this->getStaticFile($suffix, $targetDir, $vendorPath, $basePath, $staticPhpVersion)); - file_put_contents($vendorPath.'/autoload.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix)); - file_put_contents($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion)); - - $this->safeCopy(__DIR__.'/ClassLoader.php', $targetDir.'/ClassLoader.php'); - $this->safeCopy(__DIR__.'/../../../LICENSE', $targetDir.'/LICENSE'); - - if ($this->runScripts) { - $this->eventDispatcher->dispatchScript(ScriptEvents::POST_AUTOLOAD_DUMP, $this->devMode, array(), array( - 'optimize' => (bool) $scanPsr0Packages, - )); - } - - return count($classMap); - } - - private function addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $blacklist = null, $namespaceFilter = null, array $classMap = array()) - { - foreach ($this->generateClassMap($dir, $blacklist, $namespaceFilter) as $class => $path) { - $pathCode = $this->getPathCode($filesystem, $basePath, $vendorPath, $path).",\n"; - if (!isset($classMap[$class])) { - $classMap[$class] = $pathCode; - } elseif ($this->io && $classMap[$class] !== $pathCode && !preg_match('{/(test|fixture|example|stub)s?/}i', strtr($classMap[$class].' '.$path, '\\', '/'))) { - $this->io->writeError( - 'Warning: Ambiguous class resolution, "'.$class.'"'. - ' was found in both "'.str_replace(array('$vendorDir . \'', "',\n"), array($vendorPath, ''), $classMap[$class]).'" and "'.$path.'", the first will be used.' - ); - } - } - - return $classMap; - } - - private function generateClassMap($dir, $blacklist = null, $namespaceFilter = null, $showAmbiguousWarning = true) - { - return ClassMapGenerator::createMap($dir, $blacklist, $showAmbiguousWarning ? $this->io : null, $namespaceFilter); - } - - public function buildPackageMap(InstallationManager $installationManager, PackageInterface $mainPackage, array $packages) - { - // build package => install path map - $packageMap = array(array($mainPackage, '')); - - foreach ($packages as $package) { - if ($package instanceof AliasPackage) { - continue; - } - $this->validatePackage($package); - - $packageMap[] = array( - $package, - $installationManager->getInstallPath($package), - ); - } - - return $packageMap; - } - - /** - * @param PackageInterface $package - * - * @throws \InvalidArgumentException Throws an exception, if the package has illegal settings. - */ - protected function validatePackage(PackageInterface $package) - { - $autoload = $package->getAutoload(); - if (!empty($autoload['psr-4']) && null !== $package->getTargetDir()) { - $name = $package->getName(); - $package->getTargetDir(); - throw new \InvalidArgumentException("PSR-4 autoloading is incompatible with the target-dir property, remove the target-dir in package '$name'."); - } - if (!empty($autoload['psr-4'])) { - foreach ($autoload['psr-4'] as $namespace => $dirs) { - if ($namespace !== '' && '\\' !== substr($namespace, -1)) { - throw new \InvalidArgumentException("psr-4 namespaces must end with a namespace separator, '$namespace' does not, use '$namespace\\'."); - } - } - } - } - - /** - * Compiles an ordered list of namespace => path mappings - * - * @param array $packageMap array of array(package, installDir-relative-to-composer.json) - * @param PackageInterface $mainPackage root package instance - * @param bool $filterOutRequireDevPackages whether to filter out require-dev packages - * @return array array('psr-0' => array('Ns\\Foo' => array('installDir'))) - */ - public function parseAutoloads(array $packageMap, PackageInterface $mainPackage, $filterOutRequireDevPackages = false) - { - $mainPackageMap = array_shift($packageMap); - if ($filterOutRequireDevPackages) { - $packageMap = $this->filterPackageMap($packageMap, $mainPackage); - } - $sortedPackageMap = $this->sortPackageMap($packageMap); - $sortedPackageMap[] = $mainPackageMap; - array_unshift($packageMap, $mainPackageMap); - - $psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $mainPackage); - $psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $mainPackage); - $classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $mainPackage); - $files = $this->parseAutoloadsType($sortedPackageMap, 'files', $mainPackage); - $exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $mainPackage); - - krsort($psr0); - krsort($psr4); - - return array( - 'psr-0' => $psr0, - 'psr-4' => $psr4, - 'classmap' => $classmap, - 'files' => $files, - 'exclude-from-classmap' => $exclude, - ); - } - - /** - * Registers an autoloader based on an autoload map returned by parseAutoloads - * - * @param array $autoloads see parseAutoloads return value - * @return ClassLoader - */ - public function createLoader(array $autoloads) - { - $loader = new ClassLoader(); - - if (isset($autoloads['psr-0'])) { - foreach ($autoloads['psr-0'] as $namespace => $path) { - $loader->add($namespace, $path); - } - } - - if (isset($autoloads['psr-4'])) { - foreach ($autoloads['psr-4'] as $namespace => $path) { - $loader->addPsr4($namespace, $path); - } - } - - if (isset($autoloads['classmap'])) { - $blacklist = null; - if (!empty($autoloads['exclude-from-classmap'])) { - $blacklist = '{(' . implode('|', $autoloads['exclude-from-classmap']) . ')}'; - } - - foreach ($autoloads['classmap'] as $dir) { - try { - $loader->addClassMap($this->generateClassMap($dir, $blacklist, null, false)); - } catch (\RuntimeException $e) { - $this->io->writeError(''.$e->getMessage().''); - } - } - } - - return $loader; - } - - protected function getIncludePathsFile(array $packageMap, Filesystem $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode) - { - $includePaths = array(); - - foreach ($packageMap as $item) { - list($package, $installPath) = $item; - - if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) { - $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); - } - - foreach ($package->getIncludePaths() as $includePath) { - $includePath = trim($includePath, '/'); - $includePaths[] = empty($installPath) ? $includePath : $installPath.'/'.$includePath; - } - } - - if (!$includePaths) { - return; - } - - $includePathsCode = ''; - foreach ($includePaths as $path) { - $includePathsCode .= " " . $this->getPathCode($filesystem, $basePath, $vendorPath, $path) . ",\n"; - } - - return << $functionFile) { - $filesCode .= ' ' . var_export($fileIdentifier, true) . ' => ' - . $this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile) . ",\n"; - } - - if (!$filesCode) { - return false; - } - - return <<isAbsolutePath($path)) { - $path = $basePath . '/' . $path; - } - $path = $filesystem->normalizePath($path); - - $baseDir = ''; - if (strpos($path.'/', $vendorPath.'/') === 0) { - $path = substr($path, strlen($vendorPath)); - $baseDir = '$vendorDir'; - - if ($path !== false) { - $baseDir .= " . "; - } - } else { - $path = $filesystem->normalizePath($filesystem->findShortestPath($basePath, $path, true)); - if (!$filesystem->isAbsolutePath($path)) { - $baseDir = '$baseDir . '; - $path = '/' . $path; - } - } - - if (strpos($path, '.phar') !== false) { - $baseDir = "'phar://' . " . $baseDir; - } - - return $baseDir . (($path !== false) ? var_export($path, true) : ""); - } - - protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix) - { - $lastChar = $vendorPathToTargetDirCode[strlen($vendorPathToTargetDirCode) - 1]; - if ("'" === $lastChar || '"' === $lastChar) { - $vendorPathToTargetDirCode = substr($vendorPathToTargetDirCode, 0, -1).'/autoload_real.php'.$lastChar; - } else { - $vendorPathToTargetDirCode .= " . '/autoload_real.php'"; - } - - return <<= $staticPhpVersion && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if (\$useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInit$suffix::getInitializer(\$loader)); - } else { - -STATIC_INIT; - - if (!$this->classMapAuthoritative) { - $file .= <<<'PSR04' - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $map = require __DIR__ . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - -PSR04; - } - - if ($useClassMap) { - $file .= <<<'CLASSMAP' - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - -CLASSMAP; - } - - $file .= " }\n\n"; - - if ($this->classMapAuthoritative) { - $file .= <<<'CLASSMAPAUTHORITATIVE' - $loader->setClassMapAuthoritative(true); - -CLASSMAPAUTHORITATIVE; - } - - if ($this->apcu) { - $apcuPrefix = substr(base64_encode(md5(uniqid('', true), true)), 0, -3); - $file .= <<setApcuPrefix('$apcuPrefix'); - -APCU; - } - - if ($useGlobalIncludePath) { - $file .= <<<'INCLUDEPATH' - $loader->setUseIncludePath(true); - -INCLUDEPATH; - } - - if ($targetDirLoader) { - $file .= <<register($prependAutoloader); - - -REGISTER_LOADER; - - if ($useIncludeFiles) { - $file .= << \$file) { - composerRequire$suffix(\$fileIdentifier, \$file); - } - - -INCLUDE_FILES; - } - - $file .= << $path) { - $loader->set($namespace, $path); - } - - $map = require $targetDir . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - $classMap = require $targetDir . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - - $filesystem = new Filesystem(); - - $vendorPathCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; - $vendorPharPathCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; - $appBaseDirCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; - $appBaseDirPharCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; - - $absoluteVendorPathCode = ' => ' . substr(var_export(rtrim($vendorDir, '\\/') . '/', true), 0, -1); - $absoluteVendorPharPathCode = ' => ' . substr(var_export(rtrim('phar://' . $vendorDir, '\\/') . '/', true), 0, -1); - $absoluteAppBaseDirCode = ' => ' . substr(var_export(rtrim($baseDir, '\\/') . '/', true), 0, -1); - $absoluteAppBaseDirPharCode = ' => ' . substr(var_export(rtrim('phar://' . $baseDir, '\\/') . '/', true), 0, -1); - - $initializer = ''; - $prefix = "\0Composer\Autoload\ClassLoader\0"; - $prefixLen = strlen($prefix); - if (file_exists($targetDir . '/autoload_files.php')) { - $maps = array('files' => require $targetDir . '/autoload_files.php'); - } else { - $maps = array(); - } - - foreach ((array) $loader as $prop => $value) { - if ($value && 0 === strpos($prop, $prefix)) { - $maps[substr($prop, $prefixLen)] = $value; - } - } - - foreach ($maps as $prop => $value) { - if (count($value) > 32767) { - // Static arrays are limited to 32767 values on PHP 5.6 - // See https://bugs.php.net/68057 - $staticPhpVersion = 70000; - } - $value = strtr( - var_export($value, true), - array( - $absoluteVendorPathCode => $vendorPathCode, - $absoluteVendorPharPathCode => $vendorPharPathCode, - $absoluteAppBaseDirCode => $appBaseDirCode, - $absoluteAppBaseDirPharCode => $appBaseDirPharCode, - ) - ); - $value = ltrim(preg_replace('/^ */m', ' $0$0', $value)); - - $file .= sprintf(" public static $%s = %s;\n\n", $prop, $value); - if ('files' !== $prop) { - $initializer .= " \$loader->$prop = ComposerStaticInit$suffix::\$$prop;\n"; - } - } - - return $file . <<getAutoload(); - if ($this->devMode && $package === $mainPackage) { - $autoload = array_merge_recursive($autoload, $package->getDevAutoload()); - } - - // skip misconfigured packages - if (!isset($autoload[$type]) || !is_array($autoload[$type])) { - continue; - } - if (null !== $package->getTargetDir() && $package !== $mainPackage) { - $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); - } - - foreach ($autoload[$type] as $namespace => $paths) { - foreach ((array) $paths as $path) { - if (($type === 'files' || $type === 'classmap' || $type === 'exclude-from-classmap') && $package->getTargetDir() && !is_readable($installPath.'/'.$path)) { - // remove target-dir from file paths of the root package - if ($package === $mainPackage) { - $targetDir = str_replace('\\', '[\\\\/]', preg_quote(str_replace(array('/', '\\'), '', $package->getTargetDir()))); - $path = ltrim(preg_replace('{^'.$targetDir.'}', '', ltrim($path, '\\/')), '\\/'); - } else { - // add target-dir from file paths that don't have it - $path = $package->getTargetDir() . '/' . $path; - } - } - - if ($type === 'exclude-from-classmap') { - // first escape user input - $path = preg_replace('{/+}', '/', preg_quote(trim(strtr($path, '\\', '/'), '/'))); - - // add support for wildcards * and ** - $path = str_replace('\\*\\*', '.+?', $path); - $path = str_replace('\\*', '[^/]+?', $path); - - // add support for up-level relative paths - $updir = null; - $path = preg_replace_callback( - '{^((?:(?:\\\\\\.){1,2}+/)+)}', - function ($matches) use (&$updir) { - if (isset($matches[1])) { - // undo preg_quote for the matched string - $updir = str_replace('\\.', '.', $matches[1]); - } - - return ''; - }, - $path - ); - if (empty($installPath)) { - $installPath = strtr(getcwd(), '\\', '/'); - } - - $resolvedPath = realpath($installPath . '/' . $updir); - $autoloads[] = preg_quote(strtr($resolvedPath, '\\', '/')) . '/' . $path; - continue; - } - - $relativePath = empty($installPath) ? (empty($path) ? '.' : $path) : $installPath.'/'.$path; - - if ($type === 'files') { - $autoloads[$this->getFileIdentifier($package, $path)] = $relativePath; - continue; - } elseif ($type === 'classmap') { - $autoloads[] = $relativePath; - continue; - } - - $autoloads[$namespace][] = $relativePath; - } - } - } - - return $autoloads; - } - - protected function getFileIdentifier(PackageInterface $package, $path) - { - return md5($package->getName() . ':' . $path); - } - - /** - * Filters out dev-dependencies - * - * @param array $packageMap - * @param PackageInterface $mainPackage - * @return array - */ - protected function filterPackageMap(array $packageMap, PackageInterface $mainPackage) - { - $packages = array(); - $include = array(); - - foreach ($packageMap as $item) { - $package = $item[0]; - $name = $package->getName(); - $packages[$name] = $package; - } - - $add = function (PackageInterface $package) use (&$add, $packages, &$include) { - foreach ($package->getRequires() as $link) { - $target = $link->getTarget(); - if (!isset($include[$target])) { - $include[$target] = true; - if (isset($packages[$target])) { - $add($packages[$target]); - } - } - } - }; - $add($mainPackage); - - return array_filter( - $packageMap, - function ($item) use ($include) { - $package = $item[0]; - foreach ($package->getNames() as $name) { - if (isset($include[$name])) { - return true; - } - } - - return false; - } - ); - } - - /** - * Sorts packages by dependency weight - * - * Packages of equal weight retain the original order - * - * @param array $packageMap - * @return array - */ - protected function sortPackageMap(array $packageMap) - { - $packages = array(); - $paths = array(); - - foreach ($packageMap as $item) { - list($package, $path) = $item; - $name = $package->getName(); - $packages[$name] = $package; - $paths[$name] = $path; - } - - $sortedPackages = PackageSorter::sortPackages($packages); - - - $sortedPackageMap = array(); - - foreach ($sortedPackages as $package) { - $name = $package->getName(); - $sortedPackageMap[] = array($packages[$name], $paths[$name]); - } - - return $sortedPackageMap; - } - - /** - * Copy file using stream_copy_to_stream to work around https://bugs.php.net/bug.php?id=6463 - * - * @param string $source - * @param string $target - */ - protected function safeCopy($source, $target) - { - $source = fopen($source, 'r'); - $target = fopen($target, 'w+'); - - stream_copy_to_stream($source, $target); - fclose($source); - fclose($target); - } -} diff --git a/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php b/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php deleted file mode 100644 index fce8549..0000000 --- a/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php +++ /dev/null @@ -1,445 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - // PSR-4 - private $prefixLengthsPsr4 = array(); - private $prefixDirsPsr4 = array(); - private $fallbackDirsPsr4 = array(); - - // PSR-0 - private $prefixesPsr0 = array(); - private $fallbackDirsPsr0 = array(); - - private $useIncludePath = false; - private $classMap = array(); - private $classMapAuthoritative = false; - private $missingClasses = array(); - private $apcuPrefix; - - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); - } - - return array(); - } - - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; -} diff --git a/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php b/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php deleted file mode 100644 index 8467c74..0000000 --- a/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php +++ /dev/null @@ -1,222 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * This file is copied from the Symfony package. - * - * (c) Fabien Potencier - */ - -namespace Composer\Autoload; - -use Symfony\Component\Finder\Finder; -use Composer\IO\IOInterface; -use Composer\Util\Filesystem; - -/** - * ClassMapGenerator - * - * @author Gyula Sallai - * @author Jordi Boggiano - */ -class ClassMapGenerator -{ - /** - * Generate a class map file - * - * @param \Traversable $dirs Directories or a single path to search in - * @param string $file The name of the class map file - */ - public static function dump($dirs, $file) - { - $maps = array(); - - foreach ($dirs as $dir) { - $maps = array_merge($maps, static::createMap($dir)); - } - - file_put_contents($file, sprintf('files()->followLinks()->name('/\.(php|inc|hh)$/')->in($path); - } else { - throw new \RuntimeException( - 'Could not scan for classes inside "'.$path. - '" which does not appear to be a file nor a folder' - ); - } - } - - $map = array(); - $filesystem = new Filesystem(); - $cwd = realpath(getcwd()); - - foreach ($path as $file) { - $filePath = $file->getPathname(); - if (!in_array(pathinfo($filePath, PATHINFO_EXTENSION), array('php', 'inc', 'hh'))) { - continue; - } - - if (!$filesystem->isAbsolutePath($filePath)) { - $filePath = $cwd . '/' . $filePath; - $filePath = $filesystem->normalizePath($filePath); - } else { - $filePath = preg_replace('{[\\\\/]{2,}}', '/', $filePath); - } - - // check the realpath of the file against the blacklist as the path might be a symlink and the blacklist is realpath'd so symlink are resolved - if ($blacklist && preg_match($blacklist, strtr(realpath($filePath), '\\', '/'))) { - continue; - } - // check non-realpath of file for directories symlink in project dir - if ($blacklist && preg_match($blacklist, strtr($filePath, '\\', '/'))) { - continue; - } - - $classes = self::findClasses($filePath); - - foreach ($classes as $class) { - // skip classes not within the given namespace prefix - if (null !== $namespace && 0 !== strpos($class, $namespace)) { - continue; - } - - if (!isset($map[$class])) { - $map[$class] = $filePath; - } elseif ($io && $map[$class] !== $filePath && !preg_match('{/(test|fixture|example|stub)s?/}i', strtr($map[$class].' '.$filePath, '\\', '/'))) { - $io->writeError( - 'Warning: Ambiguous class resolution, "'.$class.'"'. - ' was found in both "'.$map[$class].'" and "'.$filePath.'", the first will be used.' - ); - } - } - } - - return $map; - } - - /** - * Extract the classes in the given file - * - * @param string $path The file to check - * @throws \RuntimeException - * @return array The found classes - */ - private static function findClasses($path) - { - $extraTypes = PHP_VERSION_ID < 50400 ? '' : '|trait'; - if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=')) { - $extraTypes .= '|enum'; - } - - // Use @ here instead of Silencer to actively suppress 'unhelpful' output - // @link https://github.com/composer/composer/pull/4886 - $contents = @php_strip_whitespace($path); - if (!$contents) { - if (!file_exists($path)) { - $message = 'File at "%s" does not exist, check your classmap definitions'; - } elseif (!is_readable($path)) { - $message = 'File at "%s" is not readable, check its permissions'; - } elseif ('' === trim(file_get_contents($path))) { - // The input file was really empty and thus contains no classes - return array(); - } else { - $message = 'File at "%s" could not be parsed as PHP, it may be binary or corrupted'; - } - $error = error_get_last(); - if (isset($error['message'])) { - $message .= PHP_EOL . 'The following message may be helpful:' . PHP_EOL . $error['message']; - } - throw new \RuntimeException(sprintf($message, $path)); - } - - // return early if there is no chance of matching anything in this file - if (!preg_match('{\b(?:class|interface'.$extraTypes.')\s}i', $contents)) { - return array(); - } - - // strip heredocs/nowdocs - $contents = preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)(?:\s*)\\2(?=\s+|[;,.)])}s', 'null', $contents); - // strip strings - $contents = preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents); - // strip leading non-php code if needed - if (substr($contents, 0, 2) !== '(?:[^<]++|<(?!\?))*+<\?}s', '?>'); - if (false !== $pos && false === strpos(substr($contents, $pos), '])(?Pclass|interface'.$extraTypes.') \s++ (?P[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+) - | \b(?])(?Pnamespace) (?P\s++[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+)? \s*+ [\{;] - ) - }ix', $contents, $matches); - - $classes = array(); - $namespace = ''; - - for ($i = 0, $len = count($matches['type']); $i < $len; $i++) { - if (!empty($matches['ns'][$i])) { - $namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\'; - } else { - $name = $matches['name'][$i]; - // skip anon classes extending/implementing - if ($name === 'extends' || $name === 'implements') { - continue; - } - if ($name[0] === ':') { - // This is an XHP class, https://github.com/facebook/xhp - $name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1); - } elseif ($matches['type'][$i] === 'enum') { - // In Hack, something like: - // enum Foo: int { HERP = '123'; } - // The regex above captures the colon, which isn't part of - // the class name. - $name = rtrim($name, ':'); - } - $classes[] = ltrim($namespace . $name, '\\'); - } - } - - return $classes; - } -} diff --git a/vendor/composer/composer/src/Composer/Cache.php b/vendor/composer/composer/src/Composer/Cache.php deleted file mode 100644 index 06c6a09..0000000 --- a/vendor/composer/composer/src/Composer/Cache.php +++ /dev/null @@ -1,257 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\IO\IOInterface; -use Composer\Util\Filesystem; -use Composer\Util\Silencer; -use Symfony\Component\Finder\Finder; - -/** - * Reads/writes to a filesystem cache - * - * @author Jordi Boggiano - */ -class Cache -{ - private static $cacheCollected = false; - private $io; - private $root; - private $enabled = true; - private $whitelist; - private $filesystem; - - /** - * @param IOInterface $io - * @param string $cacheDir location of the cache - * @param string $whitelist List of characters that are allowed in path names (used in a regex character class) - * @param Filesystem $filesystem optional filesystem instance - */ - public function __construct(IOInterface $io, $cacheDir, $whitelist = 'a-z0-9.', Filesystem $filesystem = null) - { - $this->io = $io; - $this->root = rtrim($cacheDir, '/\\') . '/'; - $this->whitelist = $whitelist; - $this->filesystem = $filesystem ?: new Filesystem(); - - if (!self::isUsable($cacheDir)) { - $this->enabled = false; - - return; - } - - if ( - (!is_dir($this->root) && !Silencer::call('mkdir', $this->root, 0777, true)) - || !is_writable($this->root) - ) { - $this->io->writeError('Cannot create cache directory ' . $this->root . ', or directory is not writable. Proceeding without cache'); - $this->enabled = false; - } - } - - public static function isUsable($path) - { - return !preg_match('{(^|[\\\\/])(\$null|nul|NUL|/dev/null)([\\\\/]|$)}', $path); - } - - public function isEnabled() - { - return $this->enabled; - } - - public function getRoot() - { - return $this->root; - } - - public function read($file) - { - if ($this->enabled) { - $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); - if (file_exists($this->root . $file)) { - $this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); - - return file_get_contents($this->root . $file); - } - } - - return false; - } - - public function write($file, $contents) - { - if ($this->enabled) { - $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); - - $this->io->writeError('Writing '.$this->root . $file.' into cache', true, IOInterface::DEBUG); - - try { - return file_put_contents($this->root . $file, $contents); - } catch (\ErrorException $e) { - $this->io->writeError('Failed to write into cache: '.$e->getMessage().'', true, IOInterface::DEBUG); - if (preg_match('{^file_put_contents\(\): Only ([0-9]+) of ([0-9]+) bytes written}', $e->getMessage(), $m)) { - // Remove partial file. - unlink($this->root . $file); - - $message = sprintf( - 'Writing %1$s into cache failed after %2$u of %3$u bytes written, only %4$u bytes of free space available', - $this->root . $file, - $m[1], - $m[2], - @disk_free_space($this->root . dirname($file)) - ); - - $this->io->writeError($message); - - return false; - } - - throw $e; - } - } - - return false; - } - - /** - * Copy a file into the cache - */ - public function copyFrom($file, $source) - { - if ($this->enabled) { - $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); - $this->filesystem->ensureDirectoryExists(dirname($this->root . $file)); - - if (!file_exists($source)) { - $this->io->writeError(''.$source.' does not exist, can not write into cache'); - } elseif ($this->io->isDebug()) { - $this->io->writeError('Writing '.$this->root . $file.' into cache from '.$source); - } - - return copy($source, $this->root . $file); - } - - return false; - } - - /** - * Copy a file out of the cache - */ - public function copyTo($file, $target) - { - if ($this->enabled) { - $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); - if (file_exists($this->root . $file)) { - try { - touch($this->root . $file, filemtime($this->root . $file), time()); - } catch (\ErrorException $e) { - // fallback in case the above failed due to incorrect ownership - // see https://github.com/composer/composer/issues/4070 - Silencer::call('touch', $this->root . $file); - } - - $this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); - - return copy($this->root . $file, $target); - } - } - - return false; - } - - public function gcIsNecessary() - { - return (!self::$cacheCollected && !mt_rand(0, 50)); - } - - public function remove($file) - { - if ($this->enabled) { - $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); - if (file_exists($this->root . $file)) { - return $this->filesystem->unlink($this->root . $file); - } - } - - return false; - } - - public function clear() - { - if ($this->enabled) { - $this->filesystem->emptyDirectory($this->root); - return true; - } - - return false; - } - - public function gc($ttl, $maxSize) - { - if ($this->enabled) { - $expire = new \DateTime(); - $expire->modify('-'.$ttl.' seconds'); - - $finder = $this->getFinder()->date('until '.$expire->format('Y-m-d H:i:s')); - foreach ($finder as $file) { - $this->filesystem->unlink($file->getPathname()); - } - - $totalSize = $this->filesystem->size($this->root); - if ($totalSize > $maxSize) { - $iterator = $this->getFinder()->sortByAccessedTime()->getIterator(); - while ($totalSize > $maxSize && $iterator->valid()) { - $filepath = $iterator->current()->getPathname(); - $totalSize -= $this->filesystem->size($filepath); - $this->filesystem->unlink($filepath); - $iterator->next(); - } - } - - self::$cacheCollected = true; - - return true; - } - - return false; - } - - public function sha1($file) - { - if ($this->enabled) { - $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); - if (file_exists($this->root . $file)) { - return sha1_file($this->root . $file); - } - } - - return false; - } - - public function sha256($file) - { - if ($this->enabled) { - $file = preg_replace('{[^'.$this->whitelist.']}i', '-', $file); - if (file_exists($this->root . $file)) { - return hash_file('sha256', $this->root . $file); - } - } - - return false; - } - - protected function getFinder() - { - return Finder::create()->in($this->root)->files(); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/AboutCommand.php b/vendor/composer/composer/src/Composer/Command/AboutCommand.php deleted file mode 100644 index bf1fa0f..0000000 --- a/vendor/composer/composer/src/Composer/Command/AboutCommand.php +++ /dev/null @@ -1,48 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jordi Boggiano - */ -class AboutCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('about') - ->setDescription('Shows the short information about Composer.') - ->setHelp( - <<php composer.phar about -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $this->getIO()->write( - <<Composer - Dependency Manager for PHP -Composer is a dependency manager tracking local dependencies of your projects and libraries. -See https://getcomposer.org/ for more information. -EOT - ); - - return 0; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php b/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php deleted file mode 100644 index d0d9542..0000000 --- a/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php +++ /dev/null @@ -1,166 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\Config; -use Composer\Composer; -use Composer\Repository\CompositeRepository; -use Composer\Repository\RepositoryFactory; -use Composer\Script\ScriptEvents; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Composer\Util\Filesystem; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Creates an archive of a package for distribution. - * - * @author Nils Adermann - */ -class ArchiveCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('archive') - ->setDescription('Creates an archive of this composer package.') - ->setDefinition(array( - new InputArgument('package', InputArgument::OPTIONAL, 'The package to archive instead of the current project'), - new InputArgument('version', InputArgument::OPTIONAL, 'A version constraint to find the package to archive'), - new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the resulting archive: tar or zip'), - new InputOption('dir', null, InputOption::VALUE_REQUIRED, 'Write the archive to this directory'), - new InputOption('file', null, InputOption::VALUE_REQUIRED, 'Write the archive with the given file name.' - .' Note that the format will be appended.'), - new InputOption('ignore-filters', false, InputOption::VALUE_NONE, 'Ignore filters when saving package'), - )) - ->setHelp( - <<archive command creates an archive of the specified format -containing the files and directories of the Composer project or the specified -package in the specified version and writes it to the specified directory. - -php composer.phar archive [--format=zip] [--dir=/foo] [package [version]] - -Read more at https://getcomposer.org/doc/03-cli.md#archive -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $config = Factory::createConfig(); - $composer = $this->getComposer(false); - if ($composer) { - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'archive', $input, $output); - $eventDispatcher = $composer->getEventDispatcher(); - $eventDispatcher->dispatch($commandEvent->getName(), $commandEvent); - $eventDispatcher->dispatchScript(ScriptEvents::PRE_ARCHIVE_CMD); - } - - if (null === $input->getOption('format')) { - $input->setOption('format', $config->get('archive-format')); - } - if (null === $input->getOption('dir')) { - $input->setOption('dir', $config->get('archive-dir')); - } - - $returnCode = $this->archive( - $this->getIO(), - $config, - $input->getArgument('package'), - $input->getArgument('version'), - $input->getOption('format'), - $input->getOption('dir'), - $input->getOption('file'), - $input->getOption('ignore-filters'), - $composer - ); - - if (0 === $returnCode && $composer) { - $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ARCHIVE_CMD); - } - - return $returnCode; - } - - protected function archive(IOInterface $io, Config $config, $packageName = null, $version = null, $format = 'tar', $dest = '.', $fileName = null, $ignoreFilters = false, Composer $composer = null) - { - if ($composer) { - $archiveManager = $composer->getArchiveManager(); - } else { - $factory = new Factory; - $downloadManager = $factory->createDownloadManager($io, $config); - $archiveManager = $factory->createArchiveManager($config, $downloadManager); - } - - if ($packageName) { - $package = $this->selectPackage($io, $packageName, $version); - - if (!$package) { - return 1; - } - } else { - $package = $this->getComposer()->getPackage(); - } - - $io->writeError('Creating the archive into "'.$dest.'".'); - $packagePath = $archiveManager->archive($package, $format, $dest, $fileName, $ignoreFilters); - $fs = new Filesystem; - $shortPath = $fs->findShortestPath(getcwd(), $packagePath, true); - - $io->writeError('Created: ', false); - $io->write(strlen($shortPath) < strlen($packagePath) ? $shortPath : $packagePath); - - return 0; - } - - protected function selectPackage(IOInterface $io, $packageName, $version = null) - { - $io->writeError('Searching for the specified package.'); - - if ($composer = $this->getComposer(false)) { - $localRepo = $composer->getRepositoryManager()->getLocalRepository(); - $repo = new CompositeRepository(array_merge(array($localRepo), $composer->getRepositoryManager()->getRepositories())); - } else { - $defaultRepos = RepositoryFactory::defaultRepos($this->getIO()); - $io->writeError('No composer.json found in the current directory, searching packages from ' . implode(', ', array_keys($defaultRepos))); - $repo = new CompositeRepository($defaultRepos); - } - - $packages = $repo->findPackages($packageName, $version); - - if (count($packages) > 1) { - $package = reset($packages); - $io->writeError('Found multiple matches, selected '.$package->getPrettyString().'.'); - $io->writeError('Alternatives were '.implode(', ', array_map(function ($p) { - return $p->getPrettyString(); - }, $packages)).'.'); - $io->writeError('Please use a more specific constraint to pick a different package.'); - } elseif ($packages) { - $package = reset($packages); - $io->writeError('Found an exact match '.$package->getPrettyString().'.'); - } else { - $io->writeError('Could not find a package matching '.$packageName.'.'); - - return false; - } - - return $package; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/BaseCommand.php b/vendor/composer/composer/src/Composer/Command/BaseCommand.php deleted file mode 100644 index 888b2a7..0000000 --- a/vendor/composer/composer/src/Composer/Command/BaseCommand.php +++ /dev/null @@ -1,181 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Composer; -use Composer\Config; -use Composer\Console\Application; -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\IO\NullIO; -use Composer\Plugin\PreCommandRunEvent; -use Composer\Plugin\PluginEvents; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Command\Command; - -/** - * Base class for Composer commands - * - * @author Ryan Weaver - * @author Konstantin Kudryashov - */ -abstract class BaseCommand extends Command -{ - /** - * @var Composer|null - */ - private $composer; - - /** - * @var IOInterface - */ - private $io; - - /** - * @param bool $required - * @param bool|null $disablePlugins - * @throws \RuntimeException - * @return Composer - */ - public function getComposer($required = true, $disablePlugins = null) - { - if (null === $this->composer) { - $application = $this->getApplication(); - if ($application instanceof Application) { - /* @var $application Application */ - $this->composer = $application->getComposer($required, $disablePlugins); - } elseif ($required) { - throw new \RuntimeException( - 'Could not create a Composer\Composer instance, you must inject '. - 'one if this command is not used with a Composer\Console\Application instance' - ); - } - } - - return $this->composer; - } - - /** - * @param Composer $composer - */ - public function setComposer(Composer $composer) - { - $this->composer = $composer; - } - - /** - * Removes the cached composer instance - */ - public function resetComposer() - { - $this->composer = null; - $this->getApplication()->resetComposer(); - } - - /** - * Whether or not this command is meant to call another command. - * - * This is mainly needed to avoid duplicated warnings messages. - * - * @return bool - */ - public function isProxyCommand() - { - return false; - } - - /** - * @return IOInterface - */ - public function getIO() - { - if (null === $this->io) { - $application = $this->getApplication(); - if ($application instanceof Application) { - /* @var $application Application */ - $this->io = $application->getIO(); - } else { - $this->io = new NullIO(); - } - } - - return $this->io; - } - - /** - * @param IOInterface $io - */ - public function setIO(IOInterface $io) - { - $this->io = $io; - } - - /** - * {@inheritDoc} - */ - protected function initialize(InputInterface $input, OutputInterface $output) - { - // initialize a plugin-enabled Composer instance, either local or global - $disablePlugins = $input->hasParameterOption('--no-plugins'); - $composer = $this->getComposer(false, $disablePlugins); - if (null === $composer) { - $composer = Factory::createGlobal($this->getIO(), $disablePlugins); - } - if ($composer) { - $preCommandRunEvent = new PreCommandRunEvent(PluginEvents::PRE_COMMAND_RUN, $input, $this->getName()); - $composer->getEventDispatcher()->dispatch($preCommandRunEvent->getName(), $preCommandRunEvent); - } - - if (true === $input->hasParameterOption(array('--no-ansi')) && $input->hasOption('no-progress')) { - $input->setOption('no-progress', true); - } - - parent::initialize($input, $output); - } - - /** - * Returns preferSource and preferDist values based on the configuration. - * - * @param Config $config - * @param InputInterface $input - * @param bool $keepVcsRequiresPreferSource - * - * @return bool[] An array composed of the preferSource and preferDist values - */ - protected function getPreferredInstallOptions(Config $config, InputInterface $input, $keepVcsRequiresPreferSource = false) - { - $preferSource = false; - $preferDist = false; - - switch ($config->get('preferred-install')) { - case 'source': - $preferSource = true; - break; - case 'dist': - $preferDist = true; - break; - case 'auto': - default: - // noop - break; - } - - if ($input->getOption('prefer-source') || $input->getOption('prefer-dist') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs'))) { - $preferSource = $input->getOption('prefer-source') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs')); - $preferDist = $input->getOption('prefer-dist'); - } - - return array($preferSource, $preferDist); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php b/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php deleted file mode 100644 index 78fe055..0000000 --- a/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php +++ /dev/null @@ -1,255 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\DependencyResolver\Pool; -use Composer\Package\Link; -use Composer\Package\PackageInterface; -use Composer\Repository\ArrayRepository; -use Composer\Repository\CompositeRepository; -use Composer\Repository\PlatformRepository; -use Composer\Repository\RepositoryFactory; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Symfony\Component\Console\Formatter\OutputFormatterStyle; -use Composer\Package\Version\VersionParser; -use Symfony\Component\Console\Helper\Table; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Base implementation for commands mapping dependency relationships. - * - * @author Niels Keurentjes - */ -class BaseDependencyCommand extends BaseCommand -{ - const ARGUMENT_PACKAGE = 'package'; - const ARGUMENT_CONSTRAINT = 'constraint'; - const OPTION_RECURSIVE = 'recursive'; - const OPTION_TREE = 'tree'; - - protected $colors; - - /** - * Set common options and arguments. - */ - protected function configure() - { - $this->setDefinition(array( - new InputArgument(self::ARGUMENT_PACKAGE, InputArgument::REQUIRED, 'Package to inspect'), - new InputArgument(self::ARGUMENT_CONSTRAINT, InputArgument::OPTIONAL, 'Optional version constraint', '*'), - new InputOption(self::OPTION_RECURSIVE, 'r', InputOption::VALUE_NONE, 'Recursively resolves up to the root package'), - new InputOption(self::OPTION_TREE, 't', InputOption::VALUE_NONE, 'Prints the results as a nested tree'), - )); - } - - /** - * Execute the command. - * - * @param InputInterface $input - * @param OutputInterface $output - * @param bool $inverted Whether to invert matching process (why-not vs why behaviour) - * @return int Exit code of the operation. - */ - protected function doExecute(InputInterface $input, OutputInterface $output, $inverted = false) - { - // Emit command event on startup - $composer = $this->getComposer(); - $commandEvent = new CommandEvent(PluginEvents::COMMAND, $this->getName(), $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - // Prepare repositories and set up a pool - $platformOverrides = $composer->getConfig()->get('platform') ?: array(); - $repository = new CompositeRepository(array( - new ArrayRepository(array($composer->getPackage())), - $composer->getRepositoryManager()->getLocalRepository(), - new PlatformRepository(array(), $platformOverrides), - )); - $pool = new Pool(); - $pool->addRepository($repository); - - // Parse package name and constraint - list($needle, $textConstraint) = array_pad( - explode(':', $input->getArgument(self::ARGUMENT_PACKAGE)), - 2, - $input->getArgument(self::ARGUMENT_CONSTRAINT) - ); - - // Find packages that are or provide the requested package first - $packages = $pool->whatProvides(strtolower($needle)); - if (empty($packages)) { - throw new \InvalidArgumentException(sprintf('Could not find package "%s" in your project', $needle)); - } - - // If the version we ask for is not installed then we need to locate it in remote repos and add it. - // This is needed for why-not to resolve conflicts from an uninstalled version against installed packages. - if (!$repository->findPackage($needle, $textConstraint)) { - $defaultRepos = new CompositeRepository(RepositoryFactory::defaultRepos($this->getIO())); - if ($match = $defaultRepos->findPackage($needle, $textConstraint)) { - $repository->addRepository(new ArrayRepository(array(clone $match))); - } - } - - // Include replaced packages for inverted lookups as they are then the actual starting point to consider - $needles = array($needle); - if ($inverted) { - foreach ($packages as $package) { - $needles = array_merge($needles, array_map(function (Link $link) { - return $link->getTarget(); - }, $package->getReplaces())); - } - } - - // Parse constraint if one was supplied - if ('*' !== $textConstraint) { - $versionParser = new VersionParser(); - $constraint = $versionParser->parseConstraints($textConstraint); - } else { - $constraint = null; - } - - // Parse rendering options - $renderTree = $input->getOption(self::OPTION_TREE); - $recursive = $renderTree || $input->getOption(self::OPTION_RECURSIVE); - - // Resolve dependencies - $results = $repository->getDependents($needles, $constraint, $inverted, $recursive); - if (empty($results)) { - $extra = (null !== $constraint) ? sprintf(' in versions %smatching %s', $inverted ? 'not ' : '', $textConstraint) : ''; - $this->getIO()->writeError(sprintf( - 'There is no installed package depending on "%s"%s', - $needle, - $extra - )); - } elseif ($renderTree) { - $this->initStyles($output); - $root = $packages[0]; - $this->getIO()->write(sprintf('%s %s %s', $root->getPrettyName(), $root->getPrettyVersion(), $root->getDescription())); - $this->printTree($results); - } else { - $this->printTable($output, $results); - } - - return 0; - } - - /** - * Assembles and prints a bottom-up table of the dependencies. - * - * @param OutputInterface $output - * @param array $results - */ - protected function printTable(OutputInterface $output, $results) - { - $table = array(); - $doubles = array(); - do { - $queue = array(); - $rows = array(); - foreach ($results as $result) { - /** - * @var PackageInterface $package - * @var Link $link - */ - list($package, $link, $children) = $result; - $unique = (string) $link; - if (isset($doubles[$unique])) { - continue; - } - $doubles[$unique] = true; - $version = (strpos($package->getPrettyVersion(), 'No version set') === 0) ? '-' : $package->getPrettyVersion(); - $rows[] = array($package->getPrettyName(), $version, $link->getDescription(), sprintf('%s (%s)', $link->getTarget(), $link->getPrettyConstraint())); - if ($children) { - $queue = array_merge($queue, $children); - } - } - $results = $queue; - $table = array_merge($rows, $table); - } while (!empty($results)); - - // Render table - $renderer = new Table($output); - $renderer->setStyle('compact'); - $rendererStyle = $renderer->getStyle(); - $rendererStyle->setVerticalBorderChar(''); - $rendererStyle->setCellRowContentFormat('%s '); - $renderer->setRows($table)->render(); - } - - /** - * Init styles for tree - * - * @param OutputInterface $output - */ - protected function initStyles(OutputInterface $output) - { - $this->colors = array( - 'green', - 'yellow', - 'cyan', - 'magenta', - 'blue', - ); - - foreach ($this->colors as $color) { - $style = new OutputFormatterStyle($color); - $output->getFormatter()->setStyle($color, $style); - } - } - - /** - * Recursively prints a tree of the selected results. - * - * @param array $results Results to be printed at this level. - * @param string $prefix Prefix of the current tree level. - * @param int $level Current level of recursion. - */ - protected function printTree($results, $prefix = '', $level = 1) - { - $count = count($results); - $idx = 0; - foreach ($results as $result) { - /** - * @var PackageInterface $package - * @var Link $link - * @var array|bool $children - */ - list($package, $link, $children) = $result; - - $color = $this->colors[$level % count($this->colors)]; - $prevColor = $this->colors[($level - 1) % count($this->colors)]; - $isLast = (++$idx == $count); - $versionText = (strpos($package->getPrettyVersion(), 'No version set') === 0) ? '' : $package->getPrettyVersion(); - $packageText = rtrim(sprintf('<%s>%s %s', $color, $package->getPrettyName(), $versionText)); - $linkText = sprintf('%s <%s>%s %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint()); - $circularWarn = $children === false ? '(circular dependency aborted here)' : ''; - $this->writeTreeLine(rtrim(sprintf("%s%s%s (%s) %s", $prefix, $isLast ? '└──' : '├──', $packageText, $linkText, $circularWarn))); - if ($children) { - $this->printTree($children, $prefix . ($isLast ? ' ' : '│ '), $level + 1); - } - } - } - - private function writeTreeLine($line) - { - $io = $this->getIO(); - if (!$io->isDecorated()) { - $line = str_replace(array('â””', '├', '──', '│'), array('`-', '|-', '-', '|'), $line); - } - - $io->write($line); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php b/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php deleted file mode 100644 index 195a2c4..0000000 --- a/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php +++ /dev/null @@ -1,162 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Package\Link; -use Composer\Package\PackageInterface; -use Composer\Semver\Constraint\Constraint; -use Symfony\Component\Console\Helper\Table; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Composer\Repository\PlatformRepository; - -class CheckPlatformReqsCommand extends BaseCommand -{ - protected function configure() - { - $this->setName('check-platform-reqs') - ->setDescription('Check that platform requirements are satisfied.') - ->setDefinition(array( - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables checking of require-dev packages requirements.'), - )) - ->setHelp( - <<php composer.phar check-platform-reqs - -EOT - ); - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $composer = $this->getComposer(); - - $requires = $composer->getPackage()->getRequires(); - if ($input->getOption('no-dev')) { - $dependencies = $composer->getLocker()->getLockedRepository(!$input->getOption('no-dev'))->getPackages(); - } else { - $dependencies = $composer->getRepositoryManager()->getLocalRepository()->getPackages(); - // fallback to lockfile if installed repo is empty - if (!$dependencies) { - $dependencies = $composer->getLocker()->getLockedRepository(true)->getPackages(); - } - $requires += $composer->getPackage()->getDevRequires(); - } - foreach ($requires as $require => $link) { - $requires[$require] = array($link); - } - - foreach ($dependencies as $package) { - foreach ($package->getRequires() as $require => $link) { - $requires[$require][] = $link; - } - } - - ksort($requires); - - $platformRepo = new PlatformRepository(array(), array()); - $currentPlatformPackages = $platformRepo->getPackages(); - $currentPlatformPackageMap = array(); - - /** - * @var PackageInterface $currentPlatformPackage - */ - foreach ($currentPlatformPackages as $currentPlatformPackage) { - $currentPlatformPackageMap[$currentPlatformPackage->getName()] = $currentPlatformPackage; - } - - $results = array(); - - $exitCode = 0; - - /** - * @var Link[] $links - */ - foreach ($requires as $require => $links) { - if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $require)) { - if (isset($currentPlatformPackageMap[$require])) { - $pass = true; - $version = $currentPlatformPackageMap[$require]->getVersion(); - - foreach ($links as $link) { - if (!$link->getConstraint()->matches(new Constraint('=', $version))) { - $results[] = array( - $currentPlatformPackageMap[$require]->getPrettyName(), - $currentPlatformPackageMap[$require]->getPrettyVersion(), - $link, - 'failed', - ); - $pass = false; - - $exitCode = max($exitCode, 1); - } - } - - if ($pass) { - $results[] = array( - $currentPlatformPackageMap[$require]->getPrettyName(), - $currentPlatformPackageMap[$require]->getPrettyVersion(), - null, - 'success', - ); - } - } else { - $results[] = array( - $require, - 'n/a', - $links[0], - 'missing', - ); - - $exitCode = max($exitCode, 2); - } - } - } - - $this->printTable($output, $results); - - return $exitCode; - } - - protected function printTable(OutputInterface $output, $results) - { - $table = array(); - $rows = array(); - foreach ($results as $result) { - /** - * @var Link|null $link - */ - list($platformPackage, $version, $link, $status) = $result; - $rows[] = array( - $platformPackage, - $version, - $link ? sprintf('%s %s %s (%s)', $link->getSource(), $link->getDescription(), $link->getTarget(), $link->getPrettyConstraint()) : '', - $status, - ); - } - $table = array_merge($rows, $table); - - // Render table - $renderer = new Table($output); - $renderer->setStyle('compact'); - $rendererStyle = $renderer->getStyle(); - $rendererStyle->setVerticalBorderChar(''); - $rendererStyle->setCellRowContentFormat('%s '); - $renderer->setRows($table)->render(); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php b/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php deleted file mode 100644 index 08ec047..0000000 --- a/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php +++ /dev/null @@ -1,76 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Cache; -use Composer\Factory; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author David Neilsen - */ -class ClearCacheCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('clear-cache') - ->setAliases(array('clearcache')) - ->setDescription('Clears composer\'s internal package cache.') - ->setHelp( - <<clear-cache deletes all cached packages from composer's -cache directory. - -Read more at https://getcomposer.org/doc/03-cli.md#clear-cache-clearcache- -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $config = Factory::createConfig(); - $io = $this->getIO(); - - $cachePaths = array( - 'cache-vcs-dir' => $config->get('cache-vcs-dir'), - 'cache-repo-dir' => $config->get('cache-repo-dir'), - 'cache-files-dir' => $config->get('cache-files-dir'), - 'cache-dir' => $config->get('cache-dir'), - ); - - foreach ($cachePaths as $key => $cachePath) { - $cachePath = realpath($cachePath); - if (!$cachePath) { - $io->writeError("Cache directory does not exist ($key): $cachePath"); - - continue; - } - $cache = new Cache($io, $cachePath); - if (!$cache->isEnabled()) { - $io->writeError("Cache is not enabled ($key): $cachePath"); - - continue; - } - - $io->writeError("Clearing cache ($key): $cachePath"); - $cache->clear(); - } - - $io->writeError('All caches cleared.'); - - return 0; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/ConfigCommand.php b/vendor/composer/composer/src/Composer/Command/ConfigCommand.php deleted file mode 100644 index b3efa06..0000000 --- a/vendor/composer/composer/src/Composer/Command/ConfigCommand.php +++ /dev/null @@ -1,755 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Util\Platform; -use Composer\Util\Silencer; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Composer\Config; -use Composer\Config\JsonConfigSource; -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\Json\JsonFile; -use Composer\Semver\VersionParser; -use Composer\Package\BasePackage; - -/** - * @author Joshua Estes - * @author Jordi Boggiano - */ -class ConfigCommand extends BaseCommand -{ - /** - * @var Config - */ - protected $config; - - /** - * @var JsonFile - */ - protected $configFile; - - /** - * @var JsonConfigSource - */ - protected $configSource; - - /** - * @var JsonFile - */ - protected $authConfigFile; - - /** - * @var JsonConfigSource - */ - protected $authConfigSource; - - /** - * {@inheritDoc} - */ - protected function configure() - { - $this - ->setName('config') - ->setDescription('Sets config options.') - ->setDefinition(array( - new InputOption('global', 'g', InputOption::VALUE_NONE, 'Apply command to the global config file'), - new InputOption('editor', 'e', InputOption::VALUE_NONE, 'Open editor'), - new InputOption('auth', 'a', InputOption::VALUE_NONE, 'Affect auth config file (only used for --editor)'), - new InputOption('unset', null, InputOption::VALUE_NONE, 'Unset the given setting-key'), - new InputOption('list', 'l', InputOption::VALUE_NONE, 'List configuration settings'), - new InputOption('file', 'f', InputOption::VALUE_REQUIRED, 'If you want to choose a different composer.json or config.json'), - new InputOption('absolute', null, InputOption::VALUE_NONE, 'Returns absolute paths when fetching *-dir config values instead of relative'), - new InputArgument('setting-key', null, 'Setting key'), - new InputArgument('setting-value', InputArgument::IS_ARRAY, 'Setting value'), - )) - ->setHelp( - <<%command.full_name% bin-dir bin/ - -To read a config setting: - - %command.full_name% bin-dir - Outputs: bin - -To edit the global config.json file: - - %command.full_name% --global - -To add a repository: - - %command.full_name% repositories.foo vcs https://bar.com - -To remove a repository (repo is a short alias for repositories): - - %command.full_name% --unset repo.foo - -To disable packagist: - - %command.full_name% repo.packagist false - -You can alter repositories in the global config.json file by passing in the ---global option. - -To edit the file in an external editor: - - %command.full_name% --editor - -To choose your editor you can set the "EDITOR" env variable. - -To get a list of configuration values in the file: - - %command.full_name% --list - -You can always pass more than one option. As an example, if you want to edit the -global config.json file. - - %command.full_name% --editor --global - -Read more at https://getcomposer.org/doc/03-cli.md#config -EOT - ) - ; - } - - /** - * {@inheritDoc} - */ - protected function initialize(InputInterface $input, OutputInterface $output) - { - parent::initialize($input, $output); - - if ($input->getOption('global') && null !== $input->getOption('file')) { - throw new \RuntimeException('--file and --global can not be combined'); - } - - $io = $this->getIO(); - $this->config = Factory::createConfig($io); - - // Get the local composer.json, global config.json, or if the user - // passed in a file to use - $configFile = $input->getOption('global') - ? ($this->config->get('home') . '/config.json') - : ($input->getOption('file') ?: Factory::getComposerFile()); - - // Create global composer.json if this was invoked using `composer global config` - if ( - ($configFile === 'composer.json' || $configFile === './composer.json') - && !file_exists($configFile) - && realpath(getcwd()) === realpath($this->config->get('home')) - ) { - file_put_contents($configFile, "{\n}\n"); - } - - $this->configFile = new JsonFile($configFile, null, $io); - $this->configSource = new JsonConfigSource($this->configFile); - - $authConfigFile = $input->getOption('global') - ? ($this->config->get('home') . '/auth.json') - : dirname(realpath($configFile)) . '/auth.json'; - - $this->authConfigFile = new JsonFile($authConfigFile, null, $io); - $this->authConfigSource = new JsonConfigSource($this->authConfigFile, true); - - // Initialize the global file if it's not there, ignoring any warnings or notices - if ($input->getOption('global') && !$this->configFile->exists()) { - touch($this->configFile->getPath()); - $this->configFile->write(array('config' => new \ArrayObject)); - Silencer::call('chmod', $this->configFile->getPath(), 0600); - } - if ($input->getOption('global') && !$this->authConfigFile->exists()) { - touch($this->authConfigFile->getPath()); - $this->authConfigFile->write(array('bitbucket-oauth' => new \ArrayObject, 'github-oauth' => new \ArrayObject, 'gitlab-oauth' => new \ArrayObject, 'gitlab-token' => new \ArrayObject, 'http-basic' => new \ArrayObject)); - Silencer::call('chmod', $this->authConfigFile->getPath(), 0600); - } - - if (!$this->configFile->exists()) { - throw new \RuntimeException(sprintf('File "%s" cannot be found in the current directory', $configFile)); - } - } - - /** - * {@inheritDoc} - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - // Open file in editor - if ($input->getOption('editor')) { - $editor = escapeshellcmd(getenv('EDITOR')); - if (!$editor) { - if (Platform::isWindows()) { - $editor = 'notepad'; - } else { - foreach (array('editor', 'vim', 'vi', 'nano', 'pico', 'ed') as $candidate) { - if (exec('which '.$candidate)) { - $editor = $candidate; - break; - } - } - } - } - - $file = $input->getOption('auth') ? $this->authConfigFile->getPath() : $this->configFile->getPath(); - system($editor . ' ' . $file . (Platform::isWindows() ? '' : ' > `tty`')); - - return 0; - } - - if (!$input->getOption('global')) { - $this->config->merge($this->configFile->read()); - $this->config->merge(array('config' => $this->authConfigFile->exists() ? $this->authConfigFile->read() : array())); - } - - // List the configuration of the file settings - if ($input->getOption('list')) { - $this->listConfiguration($this->config->all(), $this->config->raw(), $output); - - return 0; - } - - $settingKey = $input->getArgument('setting-key'); - if (!$settingKey) { - return 0; - } - - // If the user enters in a config variable, parse it and save to file - if (array() !== $input->getArgument('setting-value') && $input->getOption('unset')) { - throw new \RuntimeException('You can not combine a setting value with --unset'); - } - - // show the value if no value is provided - if (array() === $input->getArgument('setting-value') && !$input->getOption('unset')) { - $properties = array('name', 'type', 'description', 'homepage', 'version', 'minimum-stability', 'prefer-stable', 'keywords', 'license', 'extra'); - $rawData = $this->configFile->read(); - $data = $this->config->all(); - if (preg_match('/^repos?(?:itories)?(?:\.(.+))?/', $settingKey, $matches)) { - if (!isset($matches[1]) || $matches[1] === '') { - $value = isset($data['repositories']) ? $data['repositories'] : array(); - } else { - if (!isset($data['repositories'][$matches[1]])) { - throw new \InvalidArgumentException('There is no '.$matches[1].' repository defined'); - } - - $value = $data['repositories'][$matches[1]]; - } - } elseif (strpos($settingKey, '.')) { - $bits = explode('.', $settingKey); - if ($bits[0] === 'extra') { - $data = $rawData; - } else { - $data = $data['config']; - } - $match = false; - foreach ($bits as $bit) { - $key = isset($key) ? $key.'.'.$bit : $bit; - $match = false; - if (isset($data[$key])) { - $match = true; - $data = $data[$key]; - unset($key); - } - } - - if (!$match) { - throw new \RuntimeException($settingKey.' is not defined.'); - } - - $value = $data; - } elseif (isset($data['config'][$settingKey])) { - $value = $this->config->get($settingKey, $input->getOption('absolute') ? 0 : Config::RELATIVE_PATHS); - } elseif (in_array($settingKey, $properties, true) && isset($rawData[$settingKey])) { - $value = $rawData[$settingKey]; - } else { - throw new \RuntimeException($settingKey.' is not defined'); - } - - if (is_array($value)) { - $value = json_encode($value); - } - - $this->getIO()->write($value, true, IOInterface::QUIET); - - return 0; - } - - $values = $input->getArgument('setting-value'); // what the user is trying to add/change - - $booleanValidator = function ($val) { - return in_array($val, array('true', 'false', '1', '0'), true); - }; - $booleanNormalizer = function ($val) { - return $val !== 'false' && (bool) $val; - }; - - // handle config values - $uniqueConfigValues = array( - 'process-timeout' => array('is_numeric', 'intval'), - 'use-include-path' => array($booleanValidator, $booleanNormalizer), - 'use-github-api' => array($booleanValidator, $booleanNormalizer), - 'preferred-install' => array( - function ($val) { - return in_array($val, array('auto', 'source', 'dist'), true); - }, - function ($val) { - return $val; - }, - ), - 'store-auths' => array( - function ($val) { - return in_array($val, array('true', 'false', 'prompt'), true); - }, - function ($val) { - if ('prompt' === $val) { - return 'prompt'; - } - - return $val !== 'false' && (bool) $val; - }, - ), - 'notify-on-install' => array($booleanValidator, $booleanNormalizer), - 'vendor-dir' => array('is_string', function ($val) { - return $val; - }), - 'bin-dir' => array('is_string', function ($val) { - return $val; - }), - 'archive-dir' => array('is_string', function ($val) { - return $val; - }), - 'archive-format' => array('is_string', function ($val) { - return $val; - }), - 'data-dir' => array('is_string', function ($val) { - return $val; - }), - 'cache-dir' => array('is_string', function ($val) { - return $val; - }), - 'cache-files-dir' => array('is_string', function ($val) { - return $val; - }), - 'cache-repo-dir' => array('is_string', function ($val) { - return $val; - }), - 'cache-vcs-dir' => array('is_string', function ($val) { - return $val; - }), - 'cache-ttl' => array('is_numeric', 'intval'), - 'cache-files-ttl' => array('is_numeric', 'intval'), - 'cache-files-maxsize' => array( - function ($val) { - return preg_match('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', $val) > 0; - }, - function ($val) { - return $val; - }, - ), - 'bin-compat' => array( - function ($val) { - return in_array($val, array('auto', 'full')); - }, - function ($val) { - return $val; - }, - ), - 'discard-changes' => array( - function ($val) { - return in_array($val, array('stash', 'true', 'false', '1', '0'), true); - }, - function ($val) { - if ('stash' === $val) { - return 'stash'; - } - - return $val !== 'false' && (bool) $val; - }, - ), - 'autoloader-suffix' => array('is_string', function ($val) { - return $val === 'null' ? null : $val; - }), - 'sort-packages' => array($booleanValidator, $booleanNormalizer), - 'optimize-autoloader' => array($booleanValidator, $booleanNormalizer), - 'classmap-authoritative' => array($booleanValidator, $booleanNormalizer), - 'apcu-autoloader' => array($booleanValidator, $booleanNormalizer), - 'prepend-autoloader' => array($booleanValidator, $booleanNormalizer), - 'disable-tls' => array($booleanValidator, $booleanNormalizer), - 'secure-http' => array($booleanValidator, $booleanNormalizer), - 'cafile' => array( - function ($val) { - return file_exists($val) && is_readable($val); - }, - function ($val) { - return $val === 'null' ? null : $val; - }, - ), - 'capath' => array( - function ($val) { - return is_dir($val) && is_readable($val); - }, - function ($val) { - return $val === 'null' ? null : $val; - }, - ), - 'github-expose-hostname' => array($booleanValidator, $booleanNormalizer), - 'htaccess-protect' => array($booleanValidator, $booleanNormalizer), - ); - $multiConfigValues = array( - 'github-protocols' => array( - function ($vals) { - if (!is_array($vals)) { - return 'array expected'; - } - - foreach ($vals as $val) { - if (!in_array($val, array('git', 'https', 'ssh'))) { - return 'valid protocols include: git, https, ssh'; - } - } - - return true; - }, - function ($vals) { - return $vals; - }, - ), - 'github-domains' => array( - function ($vals) { - if (!is_array($vals)) { - return 'array expected'; - } - - return true; - }, - function ($vals) { - return $vals; - }, - ), - 'gitlab-domains' => array( - function ($vals) { - if (!is_array($vals)) { - return 'array expected'; - } - - return true; - }, - function ($vals) { - return $vals; - }, - ), - ); - - if ($input->getOption('unset') && (isset($uniqueConfigValues[$settingKey]) || isset($multiConfigValues[$settingKey]))) { - if ($settingKey === 'disable-tls' && $this->config->get('disable-tls')) { - $this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); - } - - $this->configSource->removeConfigSetting($settingKey); - - return 0; - } - if (isset($uniqueConfigValues[$settingKey])) { - $this->handleSingleValue($settingKey, $uniqueConfigValues[$settingKey], $values, 'addConfigSetting'); - - return 0; - } - if (isset($multiConfigValues[$settingKey])) { - $this->handleMultiValue($settingKey, $multiConfigValues[$settingKey], $values, 'addConfigSetting'); - - return 0; - } - - // handle properties - $uniqueProps = array( - 'name' => array('is_string', function ($val) { - return $val; - }), - 'type' => array('is_string', function ($val) { - return $val; - }), - 'description' => array('is_string', function ($val) { - return $val; - }), - 'homepage' => array('is_string', function ($val) { - return $val; - }), - 'version' => array('is_string', function ($val) { - return $val; - }), - 'minimum-stability' => array( - function ($val) { - return isset(BasePackage::$stabilities[VersionParser::normalizeStability($val)]); - }, - function ($val) { - return VersionParser::normalizeStability($val); - }, - ), - 'prefer-stable' => array($booleanValidator, $booleanNormalizer), - ); - $multiProps = array( - 'keywords' => array( - function ($vals) { - if (!is_array($vals)) { - return 'array expected'; - } - - return true; - }, - function ($vals) { - return $vals; - }, - ), - 'license' => array( - function ($vals) { - if (!is_array($vals)) { - return 'array expected'; - } - - return true; - }, - function ($vals) { - return $vals; - }, - ), - ); - - if ($input->getOption('global') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]) || substr($settingKey, 0, 6) === 'extra.')) { - throw new \InvalidArgumentException('The '.$settingKey.' property can not be set in the global config.json file. Use `composer global config` to apply changes to the global composer.json'); - } - if ($input->getOption('unset') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]))) { - $this->configSource->removeProperty($settingKey); - - return 0; - } - if (isset($uniqueProps[$settingKey])) { - $this->handleSingleValue($settingKey, $uniqueProps[$settingKey], $values, 'addProperty'); - - return 0; - } - if (isset($multiProps[$settingKey])) { - $this->handleMultiValue($settingKey, $multiProps[$settingKey], $values, 'addProperty'); - - return 0; - } - - // handle repositories - if (preg_match('/^repos?(?:itories)?\.(.+)/', $settingKey, $matches)) { - if ($input->getOption('unset')) { - $this->configSource->removeRepository($matches[1]); - - return 0; - } - - if (2 === count($values)) { - $this->configSource->addRepository($matches[1], array( - 'type' => $values[0], - 'url' => $values[1], - )); - - return 0; - } - - if (1 === count($values)) { - $value = strtolower($values[0]); - if (true === $booleanValidator($value)) { - if (false === $booleanNormalizer($value)) { - $this->configSource->addRepository($matches[1], false); - - return 0; - } - } else { - $value = JsonFile::parseJson($values[0]); - $this->configSource->addRepository($matches[1], $value); - - return 0; - } - } - - throw new \RuntimeException('You must pass the type and a url. Example: php composer.phar config repositories.foo vcs https://bar.com'); - } - - // handle extra - if (preg_match('/^extra\.(.+)/', $settingKey, $matches)) { - if ($input->getOption('unset')) { - $this->configSource->removeProperty($settingKey); - - return 0; - } - - $this->configSource->addProperty($settingKey, $values[0]); - - return 0; - } - - // handle platform - if (preg_match('/^platform\.(.+)/', $settingKey, $matches)) { - if ($input->getOption('unset')) { - $this->configSource->removeConfigSetting($settingKey); - - return 0; - } - - $this->configSource->addConfigSetting($settingKey, $values[0]); - - return 0; - } - if ($settingKey === 'platform' && $input->getOption('unset')) { - $this->configSource->removeConfigSetting($settingKey); - - return 0; - } - - // handle auth - if (preg_match('/^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic)\.(.+)/', $settingKey, $matches)) { - if ($input->getOption('unset')) { - $this->authConfigSource->removeConfigSetting($matches[1].'.'.$matches[2]); - $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); - - return 0; - } - - if ($matches[1] === 'bitbucket-oauth') { - if (2 !== count($values)) { - throw new \RuntimeException('Expected two arguments (consumer-key, consumer-secret), got '.count($values)); - } - $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); - $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], array('consumer-key' => $values[0], 'consumer-secret' => $values[1])); - } elseif (in_array($matches[1], array('github-oauth', 'gitlab-oauth', 'gitlab-token'), true)) { - if (1 !== count($values)) { - throw new \RuntimeException('Too many arguments, expected only one token'); - } - $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); - $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], $values[0]); - } elseif ($matches[1] === 'http-basic') { - if (2 !== count($values)) { - throw new \RuntimeException('Expected two arguments (username, password), got '.count($values)); - } - $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); - $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], array('username' => $values[0], 'password' => $values[1])); - } - - return 0; - } - - // handle script - if (preg_match('/^scripts\.(.+)/', $settingKey, $matches)) { - if ($input->getOption('unset')) { - $this->configSource->removeProperty($settingKey); - - return 0; - } - - $this->configSource->addProperty($settingKey, count($values) > 1 ? $values : $values[0]); - - return 0; - } - - throw new \InvalidArgumentException('Setting '.$settingKey.' does not exist or is not supported by this command'); - } - - protected function handleSingleValue($key, array $callbacks, array $values, $method) - { - list($validator, $normalizer) = $callbacks; - if (1 !== count($values)) { - throw new \RuntimeException('You can only pass one value. Example: php composer.phar config process-timeout 300'); - } - - if (true !== $validation = $validator($values[0])) { - throw new \RuntimeException(sprintf( - '"%s" is an invalid value'.($validation ? ' ('.$validation.')' : ''), - $values[0] - )); - } - - $normalizedValue = $normalizer($values[0]); - - if ($key === 'disable-tls') { - if (!$normalizedValue && $this->config->get('disable-tls')) { - $this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); - } elseif ($normalizedValue && !$this->config->get('disable-tls')) { - $this->getIO()->writeError('You are now running Composer with SSL/TLS protection disabled.'); - } - } - - return call_user_func(array($this->configSource, $method), $key, $normalizedValue); - } - - protected function handleMultiValue($key, array $callbacks, array $values, $method) - { - list($validator, $normalizer) = $callbacks; - if (true !== $validation = $validator($values)) { - throw new \RuntimeException(sprintf( - '%s is an invalid value'.($validation ? ' ('.$validation.')' : ''), - json_encode($values) - )); - } - - return call_user_func(array($this->configSource, $method), $key, $normalizer($values)); - } - - /** - * Display the contents of the file in a pretty formatted way - * - * @param array $contents - * @param array $rawContents - * @param OutputInterface $output - * @param string|null $k - */ - protected function listConfiguration(array $contents, array $rawContents, OutputInterface $output, $k = null) - { - $origK = $k; - $io = $this->getIO(); - foreach ($contents as $key => $value) { - if ($k === null && !in_array($key, array('config', 'repositories'))) { - continue; - } - - $rawVal = isset($rawContents[$key]) ? $rawContents[$key] : null; - - if (is_array($value) && (!is_numeric(key($value)) || ($key === 'repositories' && null === $k))) { - $k .= preg_replace('{^config\.}', '', $key . '.'); - $this->listConfiguration($value, $rawVal, $output, $k); - $k = $origK; - - continue; - } - - if (is_array($value)) { - $value = array_map(function ($val) { - return is_array($val) ? json_encode($val) : $val; - }, $value); - - $value = '['.implode(', ', $value).']'; - } - - if (is_bool($value)) { - $value = var_export($value, true); - } - - if (is_string($rawVal) && $rawVal != $value) { - $io->write('[' . $k . $key . '] ' . $rawVal . ' (' . $value . ')', true, IOInterface::QUIET); - } else { - $io->write('[' . $k . $key . '] ' . $value . '', true, IOInterface::QUIET); - } - } - } -} diff --git a/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php b/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php deleted file mode 100644 index 2985aa5..0000000 --- a/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php +++ /dev/null @@ -1,387 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Config; -use Composer\Factory; -use Composer\Installer; -use Composer\Installer\ProjectInstaller; -use Composer\Installer\InstallationManager; -use Composer\Installer\SuggestedPackagesReporter; -use Composer\IO\IOInterface; -use Composer\Package\BasePackage; -use Composer\DependencyResolver\Pool; -use Composer\DependencyResolver\Operation\InstallOperation; -use Composer\Package\Version\VersionSelector; -use Composer\Package\AliasPackage; -use Composer\Repository\RepositoryFactory; -use Composer\Repository\CompositeRepository; -use Composer\Repository\PlatformRepository; -use Composer\Repository\InstalledFilesystemRepository; -use Composer\Script\ScriptEvents; -use Composer\Util\Silencer; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Finder\Finder; -use Composer\Json\JsonFile; -use Composer\Config\JsonConfigSource; -use Composer\Util\Filesystem; -use Composer\Package\Version\VersionParser; - -/** - * Install a package as new project into new directory. - * - * @author Benjamin Eberlei - * @author Jordi Boggiano - * @author Tobias Munk - * @author Nils Adermann - */ -class CreateProjectCommand extends BaseCommand -{ - /** - * @var SuggestedPackagesReporter - */ - protected $suggestedPackagesReporter; - - protected function configure() - { - $this - ->setName('create-project') - ->setDescription('Creates new project from a package into given directory.') - ->setDefinition(array( - new InputArgument('package', InputArgument::OPTIONAL, 'Package name to be installed'), - new InputArgument('directory', InputArgument::OPTIONAL, 'Directory where the files should be created'), - new InputArgument('version', InputArgument::OPTIONAL, 'Version, will default to latest'), - new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum-stability allowed (unless a version is specified).'), - new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), - new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), - new InputOption('repository', null, InputOption::VALUE_REQUIRED, 'Pick a different repository (as url or json config) to look for the package.'), - new InputOption('repository-url', null, InputOption::VALUE_REQUIRED, 'DEPRECATED: Use --repository instead.'), - new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), - new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), - new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Whether to prevent execution of all defined scripts in the root package.'), - new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), - new InputOption('no-secure-http', null, InputOption::VALUE_NONE, 'Disable the secure-http config option temporarily while installing the root package. Use at your own risk. Using this flag is a bad idea.'), - new InputOption('keep-vcs', null, InputOption::VALUE_NONE, 'Whether to prevent deleting the vcs folder.'), - new InputOption('remove-vcs', null, InputOption::VALUE_NONE, 'Whether to force deletion of the vcs folder without prompting.'), - new InputOption('no-install', null, InputOption::VALUE_NONE, 'Whether to skip installation of the package dependencies.'), - new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), - )) - ->setHelp( - <<create-project command creates a new project from a given -package into a new directory. If executed without params and in a directory -with a composer.json file it installs the packages for the current project. - -You can use this command to bootstrap new projects or setup a clean -version-controlled installation for developers of your project. - -php composer.phar create-project vendor/project target-directory [version] - -You can also specify the version with the package name using = or : as separator. - -php composer.phar create-project vendor/project:version target-directory - -To install unstable packages, either specify the version you want, or use the ---stability=dev (where dev can be one of RC, beta, alpha or dev). - -To setup a developer workable version you should create the project using the source -controlled code by appending the '--prefer-source' flag. - -To install a package from another repository than the default one you -can pass the '--repository=https://myrepository.org' flag. - -Read more at https://getcomposer.org/doc/03-cli.md#create-project -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $config = Factory::createConfig(); - $io = $this->getIO(); - - list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input, true); - - if ($input->getOption('dev')) { - $io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); - } - if ($input->getOption('no-custom-installers')) { - $io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); - $input->setOption('no-plugins', true); - } - - return $this->installProject( - $io, - $config, - $input, - $input->getArgument('package'), - $input->getArgument('directory'), - $input->getArgument('version'), - $input->getOption('stability'), - $preferSource, - $preferDist, - !$input->getOption('no-dev'), - $input->getOption('repository') ?: $input->getOption('repository-url'), - $input->getOption('no-plugins'), - $input->getOption('no-scripts'), - $input->getOption('no-progress'), - $input->getOption('no-install'), - $input->getOption('ignore-platform-reqs'), - !$input->getOption('no-secure-http') - ); - } - - public function installProject(IOInterface $io, Config $config, InputInterface $input, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repository = null, $disablePlugins = false, $noScripts = false, $noProgress = false, $noInstall = false, $ignorePlatformReqs = false, $secureHttp = true) - { - $oldCwd = getcwd(); - - // we need to manually load the configuration to pass the auth credentials to the io interface! - $io->loadConfiguration($config); - - $this->suggestedPackagesReporter = new SuggestedPackagesReporter($io); - - if ($packageName !== null) { - $installedFromVcs = $this->installRootPackage($io, $config, $packageName, $directory, $packageVersion, $stability, $preferSource, $preferDist, $installDevPackages, $repository, $disablePlugins, $noScripts, $noProgress, $ignorePlatformReqs, $secureHttp); - } else { - $installedFromVcs = false; - } - - $composer = Factory::create($io, null, $disablePlugins); - $composer->getDownloadManager()->setOutputProgress(!$noProgress); - - $fs = new Filesystem(); - - if ($noScripts === false) { - // dispatch event - $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ROOT_PACKAGE_INSTALL, $installDevPackages); - } - - // use the new config including the newly installed project - $config = $composer->getConfig(); - list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); - - // install dependencies of the created project - if ($noInstall === false) { - $installer = Installer::create($io, $composer); - $installer->setPreferSource($preferSource) - ->setPreferDist($preferDist) - ->setDevMode($installDevPackages) - ->setRunScripts(!$noScripts) - ->setIgnorePlatformRequirements($ignorePlatformReqs) - ->setSuggestedPackagesReporter($this->suggestedPackagesReporter) - ->setOptimizeAutoloader($config->get('optimize-autoloader')) - ->setClassMapAuthoritative($config->get('classmap-authoritative')) - ->setApcuAutoloader($config->get('apcu-autoloader')); - - if ($disablePlugins) { - $installer->disablePlugins(); - } - - $status = $installer->run(); - if (0 !== $status) { - return $status; - } - } - - $hasVcs = $installedFromVcs; - if ( - !$input->getOption('keep-vcs') - && $installedFromVcs - && ( - $input->getOption('remove-vcs') - || !$io->isInteractive() - || $io->askConfirmation('Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? ', true) - ) - ) { - $finder = new Finder(); - $finder->depth(0)->directories()->in(getcwd())->ignoreVCS(false)->ignoreDotFiles(false); - foreach (array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.fslckout', '_FOSSIL_') as $vcsName) { - $finder->name($vcsName); - } - - try { - $dirs = iterator_to_array($finder); - unset($finder); - foreach ($dirs as $dir) { - if (!$fs->removeDirectory($dir)) { - throw new \RuntimeException('Could not remove '.$dir); - } - } - } catch (\Exception $e) { - $io->writeError('An error occurred while removing the VCS metadata: '.$e->getMessage().''); - } - - $hasVcs = false; - } - - // rewriting self.version dependencies with explicit version numbers if the package's vcs metadata is gone - if (!$hasVcs) { - $package = $composer->getPackage(); - $configSource = new JsonConfigSource(new JsonFile('composer.json')); - foreach (BasePackage::$supportedLinkTypes as $type => $meta) { - foreach ($package->{'get'.$meta['method']}() as $link) { - if ($link->getPrettyConstraint() === 'self.version') { - $configSource->addLink($type, $link->getTarget(), $package->getPrettyVersion()); - } - } - } - } - - if ($noScripts === false) { - // dispatch event - $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_CREATE_PROJECT_CMD, $installDevPackages); - } - - chdir($oldCwd); - $vendorComposerDir = $config->get('vendor-dir').'/composer'; - if (is_dir($vendorComposerDir) && $fs->isDirEmpty($vendorComposerDir)) { - Silencer::call('rmdir', $vendorComposerDir); - $vendorDir = $config->get('vendor-dir'); - if (is_dir($vendorDir) && $fs->isDirEmpty($vendorDir)) { - Silencer::call('rmdir', $vendorDir); - } - } - - return 0; - } - - protected function installRootPackage(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repository = null, $disablePlugins = false, $noScripts = false, $noProgress = false, $ignorePlatformReqs = false, $secureHttp = true) - { - if (!$secureHttp) { - $config->merge(array('config' => array('secure-http' => false))); - } - - if (null === $repository) { - $sourceRepo = new CompositeRepository(RepositoryFactory::defaultRepos($io, $config)); - } else { - $sourceRepo = RepositoryFactory::fromString($io, $config, $repository, true); - } - - $parser = new VersionParser(); - $requirements = $parser->parseNameVersionPairs(array($packageName)); - $name = strtolower($requirements[0]['name']); - if (!$packageVersion && isset($requirements[0]['version'])) { - $packageVersion = $requirements[0]['version']; - } - - if (null === $stability) { - if (preg_match('{^[^,\s]*?@('.implode('|', array_keys(BasePackage::$stabilities)).')$}i', $packageVersion, $match)) { - $stability = $match[1]; - } else { - $stability = VersionParser::parseStability($packageVersion); - } - } - - $stability = VersionParser::normalizeStability($stability); - - if (!isset(BasePackage::$stabilities[$stability])) { - throw new \InvalidArgumentException('Invalid stability provided ('.$stability.'), must be one of: '.implode(', ', array_keys(BasePackage::$stabilities))); - } - - $pool = new Pool($stability); - $pool->addRepository($sourceRepo); - - $phpVersion = null; - $prettyPhpVersion = null; - if (!$ignorePlatformReqs) { - $platformOverrides = $config->get('platform') ?: array(); - // initialize $this->repos as it is used by the parent InitCommand - $platform = new PlatformRepository(array(), $platformOverrides); - $phpPackage = $platform->findPackage('php', '*'); - $phpVersion = $phpPackage->getVersion(); - $prettyPhpVersion = $phpPackage->getPrettyVersion(); - } - - // find the latest version if there are multiple - $versionSelector = new VersionSelector($pool); - $package = $versionSelector->findBestCandidate($name, $packageVersion, $phpVersion, $stability); - - if (!$package) { - $errorMessage = "Could not find package $name with " . ($packageVersion ? "version $packageVersion" : "stability $stability"); - if ($phpVersion && $versionSelector->findBestCandidate($name, $packageVersion, null, $stability)) { - throw new \InvalidArgumentException($errorMessage .' in a version installable using your PHP version '.$prettyPhpVersion.'.'); - } - - throw new \InvalidArgumentException($errorMessage .'.'); - } - - if (null === $directory) { - $parts = explode("/", $name, 2); - $directory = getcwd() . DIRECTORY_SEPARATOR . array_pop($parts); - } - - // handler Ctrl+C for unix-like systems - if (function_exists('pcntl_async_signals')) { - @mkdir($directory, 0777, true); - if ($realDir = realpath($directory)) { - pcntl_async_signals(true); - pcntl_signal(SIGINT, function () use ($realDir) { - $fs = new Filesystem(); - $fs->removeDirectory($realDir); - exit(130); - }); - } - } - - $io->writeError('Installing ' . $package->getName() . ' (' . $package->getFullPrettyVersion(false) . ')'); - - if ($disablePlugins) { - $io->writeError('Plugins have been disabled.'); - } - - if ($package instanceof AliasPackage) { - $package = $package->getAliasOf(); - } - - $dm = $this->createDownloadManager($io, $config); - $dm->setPreferSource($preferSource) - ->setPreferDist($preferDist) - ->setOutputProgress(!$noProgress); - - $projectInstaller = new ProjectInstaller($directory, $dm); - $im = $this->createInstallationManager(); - $im->addInstaller($projectInstaller); - $im->install(new InstalledFilesystemRepository(new JsonFile('php://memory')), new InstallOperation($package)); - $im->notifyInstalls($io); - - // collect suggestions - $this->suggestedPackagesReporter->addSuggestionsFromPackage($package); - - $installedFromVcs = 'source' === $package->getInstallationSource(); - - $io->writeError('Created project in ' . $directory . ''); - chdir($directory); - - $_SERVER['COMPOSER_ROOT_VERSION'] = $package->getPrettyVersion(); - putenv('COMPOSER_ROOT_VERSION='.$_SERVER['COMPOSER_ROOT_VERSION']); - - return $installedFromVcs; - } - - protected function createDownloadManager(IOInterface $io, Config $config) - { - $factory = new Factory(); - - return $factory->createDownloadManager($io, $config); - } - - protected function createInstallationManager() - { - return new InstallationManager(); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/DependsCommand.php b/vendor/composer/composer/src/Composer/Command/DependsCommand.php deleted file mode 100644 index c350fde..0000000 --- a/vendor/composer/composer/src/Composer/Command/DependsCommand.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Niels Keurentjes - */ -class DependsCommand extends BaseDependencyCommand -{ - /** - * Configure command metadata. - */ - protected function configure() - { - parent::configure(); - - $this - ->setName('depends') - ->setAliases(array('why')) - ->setDescription('Shows which packages cause the given package to be installed.') - ->setHelp( - <<php composer.phar depends composer/composer - -Read more at https://getcomposer.org/doc/03-cli.md#depends-why- -EOT - ) - ; - } - - /** - * Execute the function. - * - * @param InputInterface $input - * @param OutputInterface $output - * @return int - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - return parent::doExecute($input, $output, false); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php b/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php deleted file mode 100644 index 19ed813..0000000 --- a/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php +++ /dev/null @@ -1,729 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Composer; -use Composer\Factory; -use Composer\Config; -use Composer\Downloader\TransportException; -use Composer\Repository\PlatformRepository; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Composer\Util\ConfigValidator; -use Composer\Util\IniHelper; -use Composer\Util\ProcessExecutor; -use Composer\Util\RemoteFilesystem; -use Composer\Util\StreamContextFactory; -use Composer\SelfUpdate\Keys; -use Composer\SelfUpdate\Versions; -use Composer\IO\NullIO; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jordi Boggiano - */ -class DiagnoseCommand extends BaseCommand -{ - /** @var RemoteFilesystem */ - protected $rfs; - - /** @var ProcessExecutor */ - protected $process; - - /** @var int */ - protected $exitCode = 0; - - protected function configure() - { - $this - ->setName('diagnose') - ->setDescription('Diagnoses the system to identify common errors.') - ->setHelp( - <<diagnose command checks common errors to help debugging problems. - -The process exit code will be 1 in case of warnings and 2 for errors. - -Read more at https://getcomposer.org/doc/03-cli.md#diagnose -EOT - ) - ; - } - - /** - * {@inheritdoc} - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - $composer = $this->getComposer(false); - $io = $this->getIO(); - - if ($composer) { - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'diagnose', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $io->write('Checking composer.json: ', false); - $this->outputResult($this->checkComposerSchema()); - } - - if ($composer) { - $config = $composer->getConfig(); - } else { - $config = Factory::createConfig(); - } - - $config->merge(array('config' => array('secure-http' => false))); - $config->prohibitUrlByConfig('http://repo.packagist.org', new NullIO); - - $this->rfs = Factory::createRemoteFilesystem($io, $config); - $this->process = new ProcessExecutor($io); - - $io->write('Checking platform settings: ', false); - $this->outputResult($this->checkPlatform()); - - $io->write('Checking git settings: ', false); - $this->outputResult($this->checkGit()); - - $io->write('Checking http connectivity to packagist: ', false); - $this->outputResult($this->checkHttp('http', $config)); - - $io->write('Checking https connectivity to packagist: ', false); - $this->outputResult($this->checkHttp('https', $config)); - - $opts = stream_context_get_options(StreamContextFactory::getContext('http://example.org')); - if (!empty($opts['http']['proxy'])) { - $io->write('Checking HTTP proxy: ', false); - $this->outputResult($this->checkHttpProxy()); - $io->write('Checking HTTP proxy support for request_fulluri: ', false); - $this->outputResult($this->checkHttpProxyFullUriRequestParam()); - $io->write('Checking HTTPS proxy support for request_fulluri: ', false); - $this->outputResult($this->checkHttpsProxyFullUriRequestParam()); - } - - if ($oauth = $config->get('github-oauth')) { - foreach ($oauth as $domain => $token) { - $io->write('Checking '.$domain.' oauth access: ', false); - $this->outputResult($this->checkGithubOauth($domain, $token)); - } - } else { - $io->write('Checking github.com rate limit: ', false); - try { - $rate = $this->getGithubRateLimit('github.com'); - if (!is_array($rate)) { - $this->outputResult($rate); - } elseif (10 > $rate['remaining']) { - $io->write('WARNING'); - $io->write(sprintf( - 'Github has a rate limit on their API. ' - . 'You currently have %u ' - . 'out of %u requests left.' . PHP_EOL - . 'See https://developer.github.com/v3/#rate-limiting and also' . PHP_EOL - . ' https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens', - $rate['remaining'], - $rate['limit'] - )); - } else { - $this->outputResult(true); - } - } catch (\Exception $e) { - if ($e instanceof TransportException && $e->getCode() === 401) { - $this->outputResult('The oauth token for github.com seems invalid, run "composer config --global --unset github-oauth.github.com" to remove it'); - } else { - $this->outputResult($e); - } - } - } - - $io->write('Checking disk free space: ', false); - $this->outputResult($this->checkDiskSpace($config)); - - if ('phar:' === substr(__FILE__, 0, 5)) { - $io->write('Checking pubkeys: ', false); - $this->outputResult($this->checkPubKeys($config)); - - $io->write('Checking composer version: ', false); - $this->outputResult($this->checkVersion($config)); - } - - $io->write(sprintf('Composer version: %s', Composer::VERSION)); - - $platformOverrides = $config->get('platform') ?: array(); - $platformRepo = new PlatformRepository(array(), $platformOverrides); - $phpPkg = $platformRepo->findPackage('php', '*'); - $phpVersion = $phpPkg->getPrettyVersion(); - if (false !== strpos($phpPkg->getDescription(), 'overridden')) { - $phpVersion .= ' - ' . $phpPkg->getDescription(); - } - - $io->write(sprintf('PHP version: %s', $phpVersion)); - - if (defined('PHP_BINARY')) { - $io->write(sprintf('PHP binary path: %s', PHP_BINARY)); - } - - return $this->exitCode; - } - - private function checkComposerSchema() - { - $validator = new ConfigValidator($this->getIO()); - list($errors, , $warnings) = $validator->validate(Factory::getComposerFile()); - - if ($errors || $warnings) { - $messages = array( - 'error' => $errors, - 'warning' => $warnings, - ); - - $output = ''; - foreach ($messages as $style => $msgs) { - foreach ($msgs as $msg) { - $output .= '<' . $style . '>' . $msg . '' . PHP_EOL; - } - } - - return rtrim($output); - } - - return true; - } - - private function checkGit() - { - $this->process->execute('git config color.ui', $output); - if (strtolower(trim($output)) === 'always') { - return 'Your git color.ui setting is set to always, this is known to create issues. Use "git config --global color.ui true" to set it correctly.'; - } - - return true; - } - - private function checkHttp($proto, Config $config) - { - $result = $this->checkConnectivity(); - if ($result !== true) { - return $result; - } - - $disableTls = false; - $result = array(); - if ($proto === 'https' && $config->get('disable-tls') === true) { - $disableTls = true; - $result[] = 'Composer is configured to disable SSL/TLS protection. This will leave remote HTTPS requests vulnerable to Man-In-The-Middle attacks.'; - } - if ($proto === 'https' && !extension_loaded('openssl') && !$disableTls) { - $result[] = 'Composer is configured to use SSL/TLS protection but the openssl extension is not available.'; - } - - try { - $this->rfs->getContents('packagist.org', $proto . '://repo.packagist.org/packages.json', false); - } catch (TransportException $e) { - if (false !== strpos($e->getMessage(), 'cafile')) { - $result[] = '[' . get_class($e) . '] ' . $e->getMessage() . ''; - $result[] = 'Unable to locate a valid CA certificate file. You must set a valid \'cafile\' option.'; - $result[] = 'You can alternatively disable this error, at your own risk, by enabling the \'disable-tls\' option.'; - } else { - array_unshift($result, '[' . get_class($e) . '] ' . $e->getMessage()); - } - } - - if (count($result) > 0) { - return $result; - } - - return true; - } - - private function checkHttpProxy() - { - $result = $this->checkConnectivity(); - if ($result !== true) { - return $result; - } - - $protocol = extension_loaded('openssl') ? 'https' : 'http'; - try { - $json = json_decode($this->rfs->getContents('packagist.org', $protocol . '://repo.packagist.org/packages.json', false), true); - $hash = reset($json['provider-includes']); - $hash = $hash['sha256']; - $path = str_replace('%hash%', $hash, key($json['provider-includes'])); - $provider = $this->rfs->getContents('packagist.org', $protocol . '://repo.packagist.org/'.$path, false); - - if (hash('sha256', $provider) !== $hash) { - return 'It seems that your proxy is modifying http traffic on the fly'; - } - } catch (\Exception $e) { - return $e; - } - - return true; - } - - /** - * Due to various proxy servers configurations, some servers can't handle non-standard HTTP "http_proxy_request_fulluri" parameter, - * and will return error 500/501 (as not implemented), see discussion @ https://github.com/composer/composer/pull/1825. - * This method will test, if you need to disable this parameter via setting extra environment variable in your system. - * - * @return bool|string - */ - private function checkHttpProxyFullUriRequestParam() - { - $result = $this->checkConnectivity(); - if ($result !== true) { - return $result; - } - - $url = 'http://repo.packagist.org/packages.json'; - try { - $this->rfs->getContents('packagist.org', $url, false); - } catch (TransportException $e) { - try { - $this->rfs->getContents('packagist.org', $url, false, array('http' => array('request_fulluri' => false))); - } catch (TransportException $e) { - return 'Unable to assess the situation, maybe packagist.org is down ('.$e->getMessage().')'; - } - - return 'It seems there is a problem with your proxy server, try setting the "HTTP_PROXY_REQUEST_FULLURI" and "HTTPS_PROXY_REQUEST_FULLURI" environment variables to "false"'; - } - - return true; - } - - /** - * Due to various proxy servers configurations, some servers can't handle non-standard HTTP "http_proxy_request_fulluri" parameter, - * and will return error 500/501 (as not implemented), see discussion @ https://github.com/composer/composer/pull/1825. - * This method will test, if you need to disable this parameter via setting extra environment variable in your system. - * - * @return bool|string - */ - private function checkHttpsProxyFullUriRequestParam() - { - $result = $this->checkConnectivity(); - if ($result !== true) { - return $result; - } - - if (!extension_loaded('openssl')) { - return 'You need the openssl extension installed for this check'; - } - - $url = 'https://api.github.com/repos/Seldaek/jsonlint/zipball/1.0.0'; - try { - $this->rfs->getContents('github.com', $url, false); - } catch (TransportException $e) { - try { - $this->rfs->getContents('github.com', $url, false, array('http' => array('request_fulluri' => false))); - } catch (TransportException $e) { - return 'Unable to assess the situation, maybe github is down ('.$e->getMessage().')'; - } - - return 'It seems there is a problem with your proxy server, try setting the "HTTPS_PROXY_REQUEST_FULLURI" environment variable to "false"'; - } - - return true; - } - - private function checkGithubOauth($domain, $token) - { - $result = $this->checkConnectivity(); - if ($result !== true) { - return $result; - } - - $this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); - try { - $url = $domain === 'github.com' ? 'https://api.'.$domain.'/' : 'https://'.$domain.'/api/v3/'; - - return $this->rfs->getContents($domain, $url, false, array( - 'retry-auth-failure' => false, - )) ? true : 'Unexpected error'; - } catch (\Exception $e) { - if ($e instanceof TransportException && $e->getCode() === 401) { - return 'The oauth token for '.$domain.' seems invalid, run "composer config --global --unset github-oauth.'.$domain.'" to remove it'; - } - - return $e; - } - } - - /** - * @param string $domain - * @param string $token - * @throws TransportException - * @return array|string - */ - private function getGithubRateLimit($domain, $token = null) - { - $result = $this->checkConnectivity(); - if ($result !== true) { - return $result; - } - - if ($token) { - $this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); - } - - $url = $domain === 'github.com' ? 'https://api.'.$domain.'/rate_limit' : 'https://'.$domain.'/api/rate_limit'; - $json = $this->rfs->getContents($domain, $url, false, array('retry-auth-failure' => false)); - $data = json_decode($json, true); - - return $data['resources']['core']; - } - - private function checkDiskSpace($config) - { - $minSpaceFree = 1024 * 1024; - if ((($df = @disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) - || (($df = @disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) - ) { - return 'The disk hosting '.$dir.' is full'; - } - - return true; - } - - private function checkPubKeys($config) - { - $home = $config->get('home'); - $errors = array(); - $io = $this->getIO(); - - if (file_exists($home.'/keys.tags.pub') && file_exists($home.'/keys.dev.pub')) { - $io->write(''); - } - - if (file_exists($home.'/keys.tags.pub')) { - $io->write('Tags Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.tags.pub')); - } else { - $errors[] = 'Missing pubkey for tags verification'; - } - - if (file_exists($home.'/keys.dev.pub')) { - $io->write('Dev Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.dev.pub')); - } else { - $errors[] = 'Missing pubkey for dev verification'; - } - - if ($errors) { - $errors[] = 'Run composer self-update --update-keys to set them up'; - } - - return $errors ?: true; - } - - private function checkVersion($config) - { - $result = $this->checkConnectivity(); - if ($result !== true) { - return $result; - } - - $versionsUtil = new Versions($config, $this->rfs); - $latest = $versionsUtil->getLatest(); - - if (Composer::VERSION !== $latest['version'] && Composer::VERSION !== '@package_version@') { - return 'You are not running the latest '.$versionsUtil->getChannel().' version, run `composer self-update` to update ('.Composer::VERSION.' => '.$latest['version'].')'; - } - - return true; - } - - /** - * @param bool|string|\Exception $result - */ - private function outputResult($result) - { - $io = $this->getIO(); - if (true === $result) { - $io->write('OK'); - - return; - } - - $hadError = false; - $hadWarning = false; - if ($result instanceof \Exception) { - $result = '['.get_class($result).'] '.$result->getMessage().''; - } - - if (!$result) { - // falsey results should be considered as an error, even if there is nothing to output - $hadError = true; - } else { - if (!is_array($result)) { - $result = array($result); - } - foreach ($result as $message) { - if (false !== strpos($message, '')) { - $hadError = true; - } elseif (false !== strpos($message, '')) { - $hadWarning = true; - } - } - } - - if ($hadError) { - $io->write('FAIL'); - $this->exitCode = max($this->exitCode, 2); - } elseif ($hadWarning) { - $io->write('WARNING'); - $this->exitCode = max($this->exitCode, 1); - } - - if ($result) { - foreach ($result as $message) { - $io->write($message); - } - } - } - - private function checkPlatform() - { - $output = ''; - $out = function ($msg, $style) use (&$output) { - $output .= '<'.$style.'>'.$msg.''.PHP_EOL; - }; - - // code below taken from getcomposer.org/installer, any changes should be made there and replicated here - $errors = array(); - $warnings = array(); - $displayIniMessage = false; - - $iniMessage = PHP_EOL.PHP_EOL.IniHelper::getMessage(); - $iniMessage .= PHP_EOL.'If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times.'; - - if (!function_exists('json_decode')) { - $errors['json'] = true; - } - - if (!extension_loaded('Phar')) { - $errors['phar'] = true; - } - - if (!extension_loaded('filter')) { - $errors['filter'] = true; - } - - if (!extension_loaded('hash')) { - $errors['hash'] = true; - } - - if (!extension_loaded('iconv') && !extension_loaded('mbstring')) { - $errors['iconv_mbstring'] = true; - } - - if (!filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { - $errors['allow_url_fopen'] = true; - } - - if (extension_loaded('ionCube Loader') && ioncube_loader_iversion() < 40009) { - $errors['ioncube'] = ioncube_loader_version(); - } - - if (PHP_VERSION_ID < 50302) { - $errors['php'] = PHP_VERSION; - } - - if (!isset($errors['php']) && PHP_VERSION_ID < 50304) { - $warnings['php'] = PHP_VERSION; - } - - if (!extension_loaded('openssl')) { - $errors['openssl'] = true; - } - - if (extension_loaded('openssl') && OPENSSL_VERSION_NUMBER < 0x1000100f) { - $warnings['openssl_version'] = true; - } - - if (!defined('HHVM_VERSION') && !extension_loaded('apcu') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN)) { - $warnings['apc_cli'] = true; - } - - if (!extension_loaded('zlib')) { - $warnings['zlib'] = true; - } - - ob_start(); - phpinfo(INFO_GENERAL); - $phpinfo = ob_get_clean(); - if (preg_match('{Configure Command(?: *| *=> *)(.*?)(?:|$)}m', $phpinfo, $match)) { - $configure = $match[1]; - - if (false !== strpos($configure, '--enable-sigchild')) { - $warnings['sigchild'] = true; - } - - if (false !== strpos($configure, '--with-curlwrappers')) { - $warnings['curlwrappers'] = true; - } - } - - if (filter_var(ini_get('xdebug.profiler_enabled'), FILTER_VALIDATE_BOOLEAN)) { - $warnings['xdebug_profile'] = true; - } elseif (extension_loaded('xdebug')) { - $warnings['xdebug_loaded'] = true; - } - - if (!empty($errors)) { - foreach ($errors as $error => $current) { - switch ($error) { - case 'json': - $text = PHP_EOL."The json extension is missing.".PHP_EOL; - $text .= "Install it or recompile php without --disable-json"; - break; - - case 'phar': - $text = PHP_EOL."The phar extension is missing.".PHP_EOL; - $text .= "Install it or recompile php without --disable-phar"; - break; - - case 'filter': - $text = PHP_EOL."The filter extension is missing.".PHP_EOL; - $text .= "Install it or recompile php without --disable-filter"; - break; - - case 'hash': - $text = PHP_EOL."The hash extension is missing.".PHP_EOL; - $text .= "Install it or recompile php without --disable-hash"; - break; - - case 'iconv_mbstring': - $text = PHP_EOL."The iconv OR mbstring extension is required and both are missing.".PHP_EOL; - $text .= "Install either of them or recompile php without --disable-iconv"; - break; - - case 'unicode': - $text = PHP_EOL."The detect_unicode setting must be disabled.".PHP_EOL; - $text .= "Add the following to the end of your `php.ini`:".PHP_EOL; - $text .= " detect_unicode = Off"; - $displayIniMessage = true; - break; - - case 'suhosin': - $text = PHP_EOL."The suhosin.executor.include.whitelist setting is incorrect.".PHP_EOL; - $text .= "Add the following to the end of your `php.ini` or suhosin.ini (Example path [for Debian]: /etc/php5/cli/conf.d/suhosin.ini):".PHP_EOL; - $text .= " suhosin.executor.include.whitelist = phar ".$current; - $displayIniMessage = true; - break; - - case 'php': - $text = PHP_EOL."Your PHP ({$current}) is too old, you must upgrade to PHP 5.3.2 or higher."; - break; - - case 'allow_url_fopen': - $text = PHP_EOL."The allow_url_fopen setting is incorrect.".PHP_EOL; - $text .= "Add the following to the end of your `php.ini`:".PHP_EOL; - $text .= " allow_url_fopen = On"; - $displayIniMessage = true; - break; - - case 'ioncube': - $text = PHP_EOL."Your ionCube Loader extension ($current) is incompatible with Phar files.".PHP_EOL; - $text .= "Upgrade to ionCube 4.0.9 or higher or remove this line (path may be different) from your `php.ini` to disable it:".PHP_EOL; - $text .= " zend_extension = /usr/lib/php5/20090626+lfs/ioncube_loader_lin_5.3.so"; - $displayIniMessage = true; - break; - - case 'openssl': - $text = PHP_EOL."The openssl extension is missing, which means that secure HTTPS transfers are impossible.".PHP_EOL; - $text .= "If possible you should enable it or recompile php with --with-openssl"; - break; - } - $out($text, 'error'); - } - - $output .= PHP_EOL; - } - - if (!empty($warnings)) { - foreach ($warnings as $warning => $current) { - switch ($warning) { - case 'apc_cli': - $text = "The apc.enable_cli setting is incorrect.".PHP_EOL; - $text .= "Add the following to the end of your `php.ini`:".PHP_EOL; - $text .= " apc.enable_cli = Off"; - $displayIniMessage = true; - break; - - case 'zlib': - $text = 'The zlib extension is not loaded, this can slow down Composer a lot.'.PHP_EOL; - $text .= 'If possible, enable it or recompile php with --with-zlib'.PHP_EOL; - $displayIniMessage = true; - break; - - case 'sigchild': - $text = "PHP was compiled with --enable-sigchild which can cause issues on some platforms.".PHP_EOL; - $text .= "Recompile it without this flag if possible, see also:".PHP_EOL; - $text .= " https://bugs.php.net/bug.php?id=22999"; - break; - - case 'curlwrappers': - $text = "PHP was compiled with --with-curlwrappers which will cause issues with HTTP authentication and GitHub.".PHP_EOL; - $text .= " Recompile it without this flag if possible"; - break; - - case 'php': - $text = "Your PHP ({$current}) is quite old, upgrading to PHP 5.3.4 or higher is recommended.".PHP_EOL; - $text .= " Composer works with 5.3.2+ for most people, but there might be edge case issues."; - break; - - case 'openssl_version': - // Attempt to parse version number out, fallback to whole string value. - $opensslVersion = strstr(trim(strstr(OPENSSL_VERSION_TEXT, ' ')), ' ', true); - $opensslVersion = $opensslVersion ?: OPENSSL_VERSION_TEXT; - - $text = "The OpenSSL library ({$opensslVersion}) used by PHP does not support TLSv1.2 or TLSv1.1.".PHP_EOL; - $text .= "If possible you should upgrade OpenSSL to version 1.0.1 or above."; - break; - - case 'xdebug_loaded': - $text = "The xdebug extension is loaded, this can slow down Composer a little.".PHP_EOL; - $text .= " Disabling it when using Composer is recommended."; - break; - - case 'xdebug_profile': - $text = "The xdebug.profiler_enabled setting is enabled, this can slow down Composer a lot.".PHP_EOL; - $text .= "Add the following to the end of your `php.ini` to disable it:".PHP_EOL; - $text .= " xdebug.profiler_enabled = 0"; - $displayIniMessage = true; - break; - } - $out($text, 'comment'); - } - } - - if ($displayIniMessage) { - $out($iniMessage, 'comment'); - } - - return !$warnings && !$errors ? true : $output; - } - - - /** - * Check if allow_url_fopen is ON - * - * @return bool|string - */ - private function checkConnectivity() - { - if (!ini_get('allow_url_fopen')) { - $result = 'Skipped because allow_url_fopen is missing.'; - return $result; - } - - return true; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php b/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php deleted file mode 100644 index dbda29d..0000000 --- a/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php +++ /dev/null @@ -1,90 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jordi Boggiano - */ -class DumpAutoloadCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('dump-autoload') - ->setAliases(array('dumpautoload')) - ->setDescription('Dumps the autoloader.') - ->setDefinition(array( - new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), - new InputOption('optimize', 'o', InputOption::VALUE_NONE, 'Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.'), - new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize`.'), - new InputOption('apcu', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables autoload-dev rules.'), - )) - ->setHelp( - <<php composer.phar dump-autoload - -Read more at https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload- -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $composer = $this->getComposer(); - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'dump-autoload', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $installationManager = $composer->getInstallationManager(); - $localRepo = $composer->getRepositoryManager()->getLocalRepository(); - $package = $composer->getPackage(); - $config = $composer->getConfig(); - - $optimize = $input->getOption('optimize') || $config->get('optimize-autoloader'); - $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); - $apcu = $input->getOption('apcu') || $config->get('apcu-autoloader'); - - if ($authoritative) { - $this->getIO()->writeError('Generating optimized autoload files (authoritative)', false); - } elseif ($optimize) { - $this->getIO()->writeError('Generating optimized autoload files', false); - } else { - $this->getIO()->writeError('Generating autoload files', false); - } - - $generator = $composer->getAutoloadGenerator(); - $generator->setDevMode(!$input->getOption('no-dev')); - $generator->setClassMapAuthoritative($authoritative); - $generator->setApcu($apcu); - $generator->setRunScripts(!$input->getOption('no-scripts')); - $numberOfClasses = $generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize); - - if ($authoritative) { - $this->getIO()->overwriteError('Generated optimized autoload files (authoritative) containing '. $numberOfClasses .' classes'); - } elseif ($optimize) { - $this->getIO()->overwriteError('Generated optimized autoload files containing '. $numberOfClasses .' classes'); - } else { - $this->getIO()->overwriteError('Generated autoload files containing '. $numberOfClasses .' classes'); - } - - return 0; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/ExecCommand.php b/vendor/composer/composer/src/Composer/Command/ExecCommand.php deleted file mode 100644 index c9184c7..0000000 --- a/vendor/composer/composer/src/Composer/Command/ExecCommand.php +++ /dev/null @@ -1,97 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Input\InputArgument; - -/** - * @author Davey Shafik - */ -class ExecCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('exec') - ->setDescription('Executes a vendored binary/script.') - ->setDefinition(array( - new InputOption('list', 'l', InputOption::VALUE_NONE), - new InputArgument('binary', InputArgument::OPTIONAL, 'The binary to run, e.g. phpunit'), - new InputArgument( - 'args', - InputArgument::IS_ARRAY | InputArgument::OPTIONAL, - 'Arguments to pass to the binary. Use -- to separate from composer arguments' - ), - )) - ->setHelp( - <<getComposer(); - $binDir = $composer->getConfig()->get('bin-dir'); - if ($input->getOption('list') || !$input->getArgument('binary')) { - $bins = glob($binDir . '/*'); - $bins = array_merge($bins, array_map(function ($e) { - return "$e (local)"; - }, $composer->getPackage()->getBinaries())); - - if (!$bins) { - throw new \RuntimeException("No binaries found in composer.json or in bin-dir ($binDir)"); - } - - $this->getIO()->write( - <<Available binaries: -EOT - ); - - foreach ($bins as $bin) { - // skip .bat copies - if (isset($previousBin) && $bin === $previousBin.'.bat') { - continue; - } - - $previousBin = $bin; - $bin = basename($bin); - $this->getIO()->write( - <<- $bin -EOT - ); - } - - return 0; - } - - $binary = $input->getArgument('binary'); - - $dispatcher = $composer->getEventDispatcher(); - $dispatcher->addListener('__exec_command', $binary); - if ($output->getVerbosity() === OutputInterface::VERBOSITY_NORMAL) { - $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); - } - - return $dispatcher->dispatchScript('__exec_command', true, $input->getArgument('args')); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/GlobalCommand.php b/vendor/composer/composer/src/Composer/Command/GlobalCommand.php deleted file mode 100644 index 64c7523..0000000 --- a/vendor/composer/composer/src/Composer/Command/GlobalCommand.php +++ /dev/null @@ -1,111 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Factory; -use Composer\Util\Filesystem; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\StringInput; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jordi Boggiano - */ -class GlobalCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('global') - ->setDescription('Allows running commands in the global composer dir ($COMPOSER_HOME).') - ->setDefinition(array( - new InputArgument('command-name', InputArgument::REQUIRED, ''), - new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), - )) - ->setHelp( - <<\AppData\Roaming\Composer on Windows -and /home//.composer on unix systems. - -If your system uses freedesktop.org standards, then it will first check -XDG_CONFIG_HOME or default to /home//.config/composer - -Note: This path may vary depending on customizations to bin-dir in -composer.json or the environmental variable COMPOSER_BIN_DIR. - -Read more at https://getcomposer.org/doc/03-cli.md#global -EOT - ) - ; - } - - public function run(InputInterface $input, OutputInterface $output) - { - // extract real command name - $tokens = preg_split('{\s+}', $input->__toString()); - $args = array(); - foreach ($tokens as $token) { - if ($token && $token[0] !== '-') { - $args[] = $token; - if (count($args) >= 2) { - break; - } - } - } - - // show help for this command if no command was found - if (count($args) < 2) { - return parent::run($input, $output); - } - - // change to global dir - $config = Factory::createConfig(); - $home = $config->get('home'); - - if (!is_dir($home)) { - $fs = new Filesystem(); - $fs->ensureDirectoryExists($home); - if (!is_dir($home)) { - throw new \RuntimeException('Could not create home directory'); - } - } - - try { - chdir($home); - } catch (\Exception $e) { - throw new \RuntimeException('Could not switch to home directory "'.$home.'"', 0, $e); - } - $this->getIO()->writeError('Changed current directory to '.$home.''); - - // create new input without "global" command prefix - $input = new StringInput(preg_replace('{\bg(?:l(?:o(?:b(?:a(?:l)?)?)?)?)?\b}', '', $input->__toString(), 1)); - $this->getApplication()->resetComposer(); - - return $this->getApplication()->run($input, $output); - } - - /** - * {@inheritDoc} - */ - public function isProxyCommand() - { - return true; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/HomeCommand.php b/vendor/composer/composer/src/Composer/Command/HomeCommand.php deleted file mode 100644 index b7d9070..0000000 --- a/vendor/composer/composer/src/Composer/Command/HomeCommand.php +++ /dev/null @@ -1,168 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Package\CompletePackageInterface; -use Composer\Repository\RepositoryInterface; -use Composer\Repository\ArrayRepository; -use Composer\Repository\RepositoryFactory; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Robert Schönthal - */ -class HomeCommand extends BaseCommand -{ - /** - * {@inheritDoc} - */ - protected function configure() - { - $this - ->setName('browse') - ->setAliases(array('home')) - ->setDescription('Opens the package\'s repository URL or homepage in your browser.') - ->setDefinition(array( - new InputArgument('packages', InputArgument::IS_ARRAY, 'Package(s) to browse to.'), - new InputOption('homepage', 'H', InputOption::VALUE_NONE, 'Open the homepage instead of the repository URL.'), - new InputOption('show', 's', InputOption::VALUE_NONE, 'Only show the homepage or repository URL.'), - )) - ->setHelp( - <<initializeRepos(); - $io = $this->getIO(); - $return = 0; - - $packages = $input->getArgument('packages'); - if (!$packages) { - $io->writeError('No package specified, opening homepage for the root package'); - $packages = array($this->getComposer()->getPackage()->getName()); - } - - foreach ($packages as $packageName) { - $handled = false; - $packageExists = false; - foreach ($repos as $repo) { - foreach ($repo->findPackages($packageName) as $package) { - $packageExists = true; - if ($package instanceof CompletePackageInterface && $this->handlePackage($package, $input->getOption('homepage'), $input->getOption('show'))) { - $handled = true; - break 2; - } - } - } - - if (!$packageExists) { - $return = 1; - $io->writeError('Package '.$packageName.' not found'); - } - - if (!$handled) { - $return = 1; - $io->writeError(''.($input->getOption('homepage') ? 'Invalid or missing homepage' : 'Invalid or missing repository URL').' for '.$packageName.''); - } - } - - return $return; - } - - private function handlePackage(CompletePackageInterface $package, $showHomepage, $showOnly) - { - $support = $package->getSupport(); - $url = isset($support['source']) ? $support['source'] : $package->getSourceUrl(); - if (!$url || $showHomepage) { - $url = $package->getHomepage(); - } - - if (!$url || !filter_var($url, FILTER_VALIDATE_URL)) { - return false; - } - - if ($showOnly) { - $this->getIO()->write(sprintf('%s', $url)); - } else { - $this->openBrowser($url); - } - - return true; - } - - /** - * opens a url in your system default browser - * - * @param string $url - */ - private function openBrowser($url) - { - $url = ProcessExecutor::escape($url); - - $process = new ProcessExecutor($this->getIO()); - if (Platform::isWindows()) { - return $process->execute('start "web" explorer "' . $url . '"', $output); - } - - $linux = $process->execute('which xdg-open', $output); - $osx = $process->execute('which open', $output); - - if (0 === $linux) { - $process->execute('xdg-open ' . $url, $output); - } elseif (0 === $osx) { - $process->execute('open ' . $url, $output); - } else { - $this->getIO()->writeError('No suitable browser opening command found, open yourself: ' . $url); - } - } - - /** - * Initializes repositories - * - * Returns an array of repos in order they should be checked in - * - * @return RepositoryInterface[] - */ - private function initializeRepos() - { - $composer = $this->getComposer(false); - - if ($composer) { - return array_merge( - array(new ArrayRepository(array($composer->getPackage()))), // root package - array($composer->getRepositoryManager()->getLocalRepository()), // installed packages - $composer->getRepositoryManager()->getRepositories() // remotes - ); - } - - return RepositoryFactory::defaultRepos($this->getIO()); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/InitCommand.php b/vendor/composer/composer/src/Composer/Command/InitCommand.php deleted file mode 100644 index 279e129..0000000 --- a/vendor/composer/composer/src/Composer/Command/InitCommand.php +++ /dev/null @@ -1,822 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\DependencyResolver\Pool; -use Composer\Factory; -use Composer\Json\JsonFile; -use Composer\Package\BasePackage; -use Composer\Package\Version\VersionParser; -use Composer\Package\Version\VersionSelector; -use Composer\Repository\CompositeRepository; -use Composer\Repository\PlatformRepository; -use Composer\Repository\RepositoryFactory; -use Composer\Util\ProcessExecutor; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Process\ExecutableFinder; -use Symfony\Component\Process\Process; - -/** - * @author Justin Rainbow - * @author Jordi Boggiano - */ -class InitCommand extends BaseCommand -{ - /** @var CompositeRepository */ - protected $repos; - - /** @var array */ - private $gitConfig; - - /** @var Pool[] */ - private $pools; - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this - ->setName('init') - ->setDescription('Creates a basic composer.json file in current directory.') - ->setDefinition(array( - new InputOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the package'), - new InputOption('description', null, InputOption::VALUE_REQUIRED, 'Description of package'), - new InputOption('author', null, InputOption::VALUE_REQUIRED, 'Author name of package'), - // new InputOption('version', null, InputOption::VALUE_NONE, 'Version of package'), - new InputOption('type', null, InputOption::VALUE_OPTIONAL, 'Type of package (e.g. library, project, metapackage, composer-plugin)'), - new InputOption('homepage', null, InputOption::VALUE_REQUIRED, 'Homepage of package'), - new InputOption('require', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), - new InputOption('require-dev', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require for development with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), - new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum stability (empty or one of: '.implode(', ', array_keys(BasePackage::$stabilities)).')'), - new InputOption('license', 'l', InputOption::VALUE_REQUIRED, 'License of package'), - new InputOption('repository', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Add custom repositories, either by URL or using JSON arrays'), - )) - ->setHelp( - <<init command creates a basic composer.json file -in the current directory. - -php composer.phar init - -Read more at https://getcomposer.org/doc/03-cli.md#init -EOT - ) - ; - } - - /** - * {@inheritdoc} - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - $io = $this->getIO(); - - $whitelist = array('name', 'description', 'author', 'type', 'homepage', 'require', 'require-dev', 'stability', 'license'); - $options = array_filter(array_intersect_key($input->getOptions(), array_flip($whitelist))); - - if (isset($options['author'])) { - $options['authors'] = $this->formatAuthors($options['author']); - unset($options['author']); - } - - $repositories = $input->getOption('repository'); - if ($repositories) { - $config = Factory::createConfig($io); - foreach ($repositories as $repo) { - $options['repositories'][] = RepositoryFactory::configFromString($io, $config, $repo); - } - } - - if (isset($options['stability'])) { - $options['minimum-stability'] = $options['stability']; - unset($options['stability']); - } - - $options['require'] = isset($options['require']) ? $this->formatRequirements($options['require']) : new \stdClass; - if (array() === $options['require']) { - $options['require'] = new \stdClass; - } - - if (isset($options['require-dev'])) { - $options['require-dev'] = $this->formatRequirements($options['require-dev']); - if (array() === $options['require-dev']) { - $options['require-dev'] = new \stdClass; - } - } - - $file = new JsonFile(Factory::getComposerFile()); - $json = $file->encode($options); - - if ($input->isInteractive()) { - $io->writeError(array('', $json, '')); - if (!$io->askConfirmation('Do you confirm generation [yes]? ', true)) { - $io->writeError('Command aborted'); - - return 1; - } - } - - $file->write($options); - - if ($input->isInteractive() && is_dir('.git')) { - $ignoreFile = realpath('.gitignore'); - - if (false === $ignoreFile) { - $ignoreFile = realpath('.') . '/.gitignore'; - } - - if (!$this->hasVendorIgnore($ignoreFile)) { - $question = 'Would you like the vendor directory added to your .gitignore [yes]? '; - - if ($io->askConfirmation($question, true)) { - $this->addVendorIgnore($ignoreFile); - } - } - } - - $question = 'Would you like to install dependencies now [yes]? '; - if ($input->isInteractive() && $this->hasDependencies($options) && $io->askConfirmation($question, true)) { - $this->installDependencies($output); - } - - return 0; - } - - /** - * {@inheritdoc} - */ - protected function interact(InputInterface $input, OutputInterface $output) - { - $git = $this->getGitConfig(); - $io = $this->getIO(); - $formatter = $this->getHelperSet()->get('formatter'); - - // initialize repos if configured - $repositories = $input->getOption('repository'); - if ($repositories) { - $config = Factory::createConfig($io); - $repos = array(new PlatformRepository); - $createDefaultPackagistRepo = true; - foreach ($repositories as $repo) { - $repoConfig = RepositoryFactory::configFromString($io, $config, $repo); - if ( - (isset($repoConfig['packagist']) && $repoConfig === array('packagist' => false)) - || (isset($repoConfig['packagist.org']) && $repoConfig === array('packagist.org' => false)) - ) { - $createDefaultPackagistRepo = false; - continue; - } - $repos[] = RepositoryFactory::createRepo($io, $config, $repoConfig); - } - - if ($createDefaultPackagistRepo) { - $repos[] = RepositoryFactory::createRepo($io, $config, array( - 'type' => 'composer', - 'url' => 'https://repo.packagist.org', - )); - } - - $this->repos = new CompositeRepository($repos); - unset($repos, $config, $repositories); - } - - $io->writeError(array( - '', - $formatter->formatBlock('Welcome to the Composer config generator', 'bg=blue;fg=white', true), - '', - )); - - // namespace - $io->writeError(array( - '', - 'This command will guide you through creating your composer.json config.', - '', - )); - - $cwd = realpath("."); - - if (!$name = $input->getOption('name')) { - $name = basename($cwd); - $name = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); - $name = strtolower($name); - if (!empty($_SERVER['COMPOSER_DEFAULT_VENDOR'])) { - $name = $_SERVER['COMPOSER_DEFAULT_VENDOR'] . '/' . $name; - } elseif (isset($git['github.user'])) { - $name = $git['github.user'] . '/' . $name; - } elseif (!empty($_SERVER['USERNAME'])) { - $name = $_SERVER['USERNAME'] . '/' . $name; - } elseif (!empty($_SERVER['USER'])) { - $name = $_SERVER['USER'] . '/' . $name; - } elseif (get_current_user()) { - $name = get_current_user() . '/' . $name; - } else { - // package names must be in the format foo/bar - $name .= '/' . $name; - } - $name = strtolower($name); - } else { - if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $name)) { - throw new \InvalidArgumentException( - 'The package name '.$name.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' - ); - } - } - - $name = $io->askAndValidate( - 'Package name (/) ['.$name.']: ', - function ($value) use ($name) { - if (null === $value) { - return $name; - } - - if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $value)) { - throw new \InvalidArgumentException( - 'The package name '.$value.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' - ); - } - - return $value; - }, - null, - $name - ); - $input->setOption('name', $name); - - $description = $input->getOption('description') ?: false; - $description = $io->ask( - 'Description ['.$description.']: ', - $description - ); - $input->setOption('description', $description); - - if (null === $author = $input->getOption('author')) { - if (!empty($_SERVER['COMPOSER_DEFAULT_AUTHOR'])) { - $author_name = $_SERVER['COMPOSER_DEFAULT_AUTHOR']; - } elseif (isset($git['user.name'])) { - $author_name = $git['user.name']; - } - - if (!empty($_SERVER['COMPOSER_DEFAULT_EMAIL'])) { - $author_email = $_SERVER['COMPOSER_DEFAULT_EMAIL']; - } elseif (isset($git['user.email'])) { - $author_email = $git['user.email']; - } - - if (isset($author_name) && isset($author_email)) { - $author = sprintf('%s <%s>', $author_name, $author_email); - } - } - - $self = $this; - $author = $io->askAndValidate( - 'Author ['.$author.', n to skip]: ', - function ($value) use ($self, $author) { - if ($value === 'n' || $value === 'no') { - return; - } - $value = $value ?: $author; - $author = $self->parseAuthorString($value); - - return sprintf('%s <%s>', $author['name'], $author['email']); - }, - null, - $author - ); - $input->setOption('author', $author); - - $minimumStability = $input->getOption('stability') ?: null; - $minimumStability = $io->askAndValidate( - 'Minimum Stability ['.$minimumStability.']: ', - function ($value) use ($minimumStability) { - if (null === $value) { - return $minimumStability; - } - - if (!isset(BasePackage::$stabilities[$value])) { - throw new \InvalidArgumentException( - 'Invalid minimum stability "'.$value.'". Must be empty or one of: '. - implode(', ', array_keys(BasePackage::$stabilities)) - ); - } - - return $value; - }, - null, - $minimumStability - ); - $input->setOption('stability', $minimumStability); - - $type = $input->getOption('type') ?: false; - $type = $io->ask( - 'Package Type (e.g. library, project, metapackage, composer-plugin) ['.$type.']: ', - $type - ); - $input->setOption('type', $type); - - if (null === $license = $input->getOption('license')) { - if (!empty($_SERVER['COMPOSER_DEFAULT_LICENSE'])) { - $license = $_SERVER['COMPOSER_DEFAULT_LICENSE']; - } - } - - $license = $io->ask( - 'License ['.$license.']: ', - $license - ); - $input->setOption('license', $license); - - $io->writeError(array('', 'Define your dependencies.', '')); - - // prepare to resolve dependencies - $repos = $this->getRepos(); - $preferredStability = $minimumStability ?: 'stable'; - $phpVersion = $repos->findPackage('php', '*')->getPrettyVersion(); - - $question = 'Would you like to define your dependencies (require) interactively [yes]? '; - $require = $input->getOption('require'); - $requirements = array(); - if ($require || $io->askConfirmation($question, true)) { - $requirements = $this->determineRequirements($input, $output, $require, $phpVersion, $preferredStability); - } - $input->setOption('require', $requirements); - - $question = 'Would you like to define your dev dependencies (require-dev) interactively [yes]? '; - $requireDev = $input->getOption('require-dev'); - $devRequirements = array(); - if ($requireDev || $io->askConfirmation($question, true)) { - $devRequirements = $this->determineRequirements($input, $output, $requireDev, $phpVersion, $preferredStability); - } - $input->setOption('require-dev', $devRequirements); - } - - /** - * @private - * @param string $author - * @return array - */ - public function parseAuthorString($author) - { - if (preg_match('/^(?P[- .,\p{L}\p{N}\p{Mn}\'’"()]+) <(?P.+?)>$/u', $author, $match)) { - if ($this->isValidEmail($match['email'])) { - return array( - 'name' => trim($match['name']), - 'email' => $match['email'], - ); - } - } - - throw new \InvalidArgumentException( - 'Invalid author string. Must be in the format: '. - 'John Smith ' - ); - } - - protected function findPackages($name) - { - return $this->getRepos()->search($name); - } - - protected function getRepos() - { - if (!$this->repos) { - $this->repos = new CompositeRepository(array_merge( - array(new PlatformRepository), - RepositoryFactory::defaultRepos($this->getIO()) - )); - } - - return $this->repos; - } - - protected function determineRequirements(InputInterface $input, OutputInterface $output, $requires = array(), $phpVersion = null, $preferredStability = 'stable', $checkProvidedVersions = true) - { - if ($requires) { - $requires = $this->normalizeRequirements($requires); - $result = array(); - $io = $this->getIO(); - - foreach ($requires as $requirement) { - if (!isset($requirement['version'])) { - // determine the best version automatically - list($name, $version) = $this->findBestVersionAndNameForPackage($input, $requirement['name'], $phpVersion, $preferredStability); - $requirement['version'] = $version; - - // replace package name from packagist.org - $requirement['name'] = $name; - - $io->writeError(sprintf( - 'Using version %s for %s', - $requirement['version'], - $requirement['name'] - )); - } else { - // check that the specified version/constraint exists before we proceed - list($name, $version) = $this->findBestVersionAndNameForPackage($input, $requirement['name'], $phpVersion, $preferredStability, $checkProvidedVersions ? $requirement['version'] : null, 'dev'); - - // replace package name from packagist.org - $requirement['name'] = $name; - } - - $result[] = $requirement['name'] . ' ' . $requirement['version']; - } - - return $result; - } - - $versionParser = new VersionParser(); - $io = $this->getIO(); - while (null !== $package = $io->ask('Search for a package: ')) { - $matches = $this->findPackages($package); - - if (count($matches)) { - $exactMatch = null; - $choices = array(); - foreach ($matches as $position => $foundPackage) { - $abandoned = ''; - if (isset($foundPackage['abandoned'])) { - if (is_string($foundPackage['abandoned'])) { - $replacement = sprintf('Use %s instead', $foundPackage['abandoned']); - } else { - $replacement = 'No replacement was suggested'; - } - $abandoned = sprintf('Abandoned. %s.', $replacement); - } - - $choices[] = sprintf(' %5s %s %s', "[$position]", $foundPackage['name'], $abandoned); - if ($foundPackage['name'] === $package) { - $exactMatch = true; - break; - } - } - - // no match, prompt which to pick - if (!$exactMatch) { - $io->writeError(array( - '', - sprintf('Found %s packages matching %s', count($matches), $package), - '', - )); - - $io->writeError($choices); - $io->writeError(''); - - $validator = function ($selection) use ($matches, $versionParser) { - if ('' === $selection) { - return false; - } - - if (is_numeric($selection) && isset($matches[(int) $selection])) { - $package = $matches[(int) $selection]; - - return $package['name']; - } - - if (preg_match('{^\s*(?P[\S/]+)(?:\s+(?P\S+))?\s*$}', $selection, $packageMatches)) { - if (isset($packageMatches['version'])) { - // parsing `acme/example ~2.3` - - // validate version constraint - $versionParser->parseConstraints($packageMatches['version']); - - return $packageMatches['name'].' '.$packageMatches['version']; - } - - // parsing `acme/example` - return $packageMatches['name']; - } - - throw new \Exception('Not a valid selection'); - }; - - $package = $io->askAndValidate( - 'Enter package # to add, or the complete package name if it is not listed: ', - $validator, - 3, - false - ); - } - - // no constraint yet, determine the best version automatically - if (false !== $package && false === strpos($package, ' ')) { - $validator = function ($input) { - $input = trim($input); - - return $input ?: false; - }; - - $constraint = $io->askAndValidate( - 'Enter the version constraint to require (or leave blank to use the latest version): ', - $validator, - 3, - false - ); - - if (false === $constraint) { - list($name, $constraint) = $this->findBestVersionAndNameForPackage($input, $package, $phpVersion, $preferredStability); - - $io->writeError(sprintf( - 'Using version %s for %s', - $constraint, - $package - )); - } - - $package .= ' '.$constraint; - } - - if (false !== $package) { - $requires[] = $package; - } - } - } - - return $requires; - } - - protected function formatAuthors($author) - { - return array($this->parseAuthorString($author)); - } - - protected function formatRequirements(array $requirements) - { - $requires = array(); - $requirements = $this->normalizeRequirements($requirements); - foreach ($requirements as $requirement) { - $requires[$requirement['name']] = $requirement['version']; - } - - return $requires; - } - - protected function getGitConfig() - { - if (null !== $this->gitConfig) { - return $this->gitConfig; - } - - $finder = new ExecutableFinder(); - $gitBin = $finder->find('git'); - - // TODO in v3 always call with an array - if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { - $cmd = new Process(array($gitBin, 'config', '-l')); - } else { - $cmd = new Process(sprintf('%s config -l', ProcessExecutor::escape($gitBin))); - } - $cmd->run(); - - if ($cmd->isSuccessful()) { - $this->gitConfig = array(); - preg_match_all('{^([^=]+)=(.*)$}m', $cmd->getOutput(), $matches, PREG_SET_ORDER); - foreach ($matches as $match) { - $this->gitConfig[$match[1]] = $match[2]; - } - - return $this->gitConfig; - } - - return $this->gitConfig = array(); - } - - /** - * Checks the local .gitignore file for the Composer vendor directory. - * - * Tested patterns include: - * "/$vendor" - * "$vendor" - * "$vendor/" - * "/$vendor/" - * "/$vendor/*" - * "$vendor/*" - * - * @param string $ignoreFile - * @param string $vendor - * - * @return bool - */ - protected function hasVendorIgnore($ignoreFile, $vendor = 'vendor') - { - if (!file_exists($ignoreFile)) { - return false; - } - - $pattern = sprintf('{^/?%s(/\*?)?$}', preg_quote($vendor)); - - $lines = file($ignoreFile, FILE_IGNORE_NEW_LINES); - foreach ($lines as $line) { - if (preg_match($pattern, $line)) { - return true; - } - } - - return false; - } - - protected function normalizeRequirements(array $requirements) - { - $parser = new VersionParser(); - - return $parser->parseNameVersionPairs($requirements); - } - - protected function addVendorIgnore($ignoreFile, $vendor = '/vendor/') - { - $contents = ""; - if (file_exists($ignoreFile)) { - $contents = file_get_contents($ignoreFile); - - if ("\n" !== substr($contents, 0, -1)) { - $contents .= "\n"; - } - } - - file_put_contents($ignoreFile, $contents . $vendor. "\n"); - } - - protected function isValidEmail($email) - { - // assume it's valid if we can't validate it - if (!function_exists('filter_var')) { - return true; - } - - // php <5.3.3 has a very broken email validator, so bypass checks - if (PHP_VERSION_ID < 50303) { - return true; - } - - return false !== filter_var($email, FILTER_VALIDATE_EMAIL); - } - - private function getPool(InputInterface $input, $minimumStability = null) - { - $key = $minimumStability ?: 'default'; - - if (!isset($this->pools[$key])) { - $this->pools[$key] = $pool = new Pool($minimumStability ?: $this->getMinimumStability($input)); - $pool->addRepository($this->getRepos()); - } - - return $this->pools[$key]; - } - - private function getMinimumStability(InputInterface $input) - { - if ($input->hasOption('stability')) { - return $input->getOption('stability') ?: 'stable'; - } - - $file = Factory::getComposerFile(); - if (is_file($file) && is_readable($file) && is_array($composer = json_decode(file_get_contents($file), true))) { - if (!empty($composer['minimum-stability'])) { - return $composer['minimum-stability']; - } - } - - return 'stable'; - } - - /** - * Given a package name, this determines the best version to use in the require key. - * - * This returns a version with the ~ operator prefixed when possible. - * - * @param InputInterface $input - * @param string $name - * @param string|null $phpVersion - * @param string $preferredStability - * @param string|null $requiredVersion - * @param string $minimumStability - * @throws \InvalidArgumentException - * @return array name version - */ - private function findBestVersionAndNameForPackage(InputInterface $input, $name, $phpVersion, $preferredStability = 'stable', $requiredVersion = null, $minimumStability = null) - { - // find the latest version allowed in this pool - $versionSelector = new VersionSelector($this->getPool($input, $minimumStability)); - $ignorePlatformReqs = $input->hasOption('ignore-platform-reqs') && $input->getOption('ignore-platform-reqs'); - - // ignore phpVersion if platform requirements are ignored - if ($ignorePlatformReqs) { - $phpVersion = null; - } - - $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability); - - if (!$package) { - // platform packages can not be found in the pool in versions other than the local platform's has - // so if platform reqs are ignored we just take the user's word for it - if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) { - return array($name, $requiredVersion ?: '*'); - } - - // Check whether the PHP version was the problem - if ($phpVersion && $versionSelector->findBestCandidate($name, $requiredVersion, null, $preferredStability)) { - throw new \InvalidArgumentException(sprintf( - 'Package %s at version %s has a PHP requirement incompatible with your PHP version (%s)', - $name, - $requiredVersion, - $phpVersion - )); - } - // Check whether the required version was the problem - if ($requiredVersion && $versionSelector->findBestCandidate($name, null, $phpVersion, $preferredStability)) { - throw new \InvalidArgumentException(sprintf( - 'Could not find package %s in a version matching %s', - $name, - $requiredVersion - )); - } - // Check whether the PHP version was the problem - if ($phpVersion && $versionSelector->findBestCandidate($name)) { - throw new \InvalidArgumentException(sprintf( - 'Could not find package %s in any version matching your PHP version (%s)', - $name, - $phpVersion - )); - } - - // Check for similar names/typos - $similar = $this->findSimilar($name); - if ($similar) { - // Check whether the minimum stability was the problem but the package exists - if ($requiredVersion === null && in_array($name, $similar, true)) { - throw new \InvalidArgumentException(sprintf( - 'Could not find a version of package %s matching your minimum-stability (%s). Require it with an explicit version constraint allowing its desired stability.', - $name, - $this->getMinimumStability($input) - )); - } - - throw new \InvalidArgumentException(sprintf( - "Could not find package %s.\n\nDid you mean " . (count($similar) > 1 ? 'one of these' : 'this') . "?\n %s", - $name, - implode("\n ", $similar) - )); - } - - throw new \InvalidArgumentException(sprintf( - 'Could not find a matching version of package %s. Check the package spelling, your version constraint and that the package is available in a stability which matches your minimum-stability (%s).', - $name, - $this->getMinimumStability($input) - )); - } - - return array( - $package->getPrettyName(), - $versionSelector->findRecommendedRequireVersion($package), - ); - } - - private function findSimilar($package) - { - try { - $results = $this->repos->search($package); - } catch (\Exception $e) { - // ignore search errors - return array(); - } - $similarPackages = array(); - - foreach ($results as $result) { - $similarPackages[$result['name']] = levenshtein($package, $result['name']); - } - asort($similarPackages); - - return array_keys(array_slice($similarPackages, 0, 5)); - } - - private function installDependencies($output) - { - try { - $installCommand = $this->getApplication()->find('install'); - $installCommand->run(new ArrayInput(array()), $output); - } catch (\Exception $e) { - $this->getIO()->writeError('Could not install dependencies. Run `composer install` to see more information.'); - } - - } - - private function hasDependencies($options) - { - $requires = (array) $options['require']; - $devRequires = isset($options['require-dev']) ? (array) $options['require-dev'] : array(); - - return !empty($requires) || !empty($devRequires); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/InstallCommand.php b/vendor/composer/composer/src/Composer/Command/InstallCommand.php deleted file mode 100644 index 32fb1bd..0000000 --- a/vendor/composer/composer/src/Composer/Command/InstallCommand.php +++ /dev/null @@ -1,124 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Installer; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jordi Boggiano - * @author Ryan Weaver - * @author Konstantin Kudryashov - * @author Nils Adermann - */ -class InstallCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('install') - ->setAliases(array('i')) - ->setDescription('Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.') - ->setDefinition(array( - new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), - new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), - new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), - new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), - new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), - new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), - new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), - new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), - new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'Do not show package suggestions.'), - new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), - new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), - new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), - new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), - new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), - new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Should not be provided, use composer require instead to add a given package to composer.json.'), - )) - ->setHelp( - <<install command reads the composer.lock file from -the current directory, processes it, and downloads and installs all the -libraries and dependencies outlined in that file. If the file does not -exist it will look for composer.json and do the same. - -php composer.phar install - -Read more at https://getcomposer.org/doc/03-cli.md#install-i -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $io = $this->getIO(); - if ($args = $input->getArgument('packages')) { - $io->writeError('Invalid argument '.implode(' ', $args).'. Use "composer require '.implode(' ', $args).'" instead to add packages to your composer.json.'); - - return 1; - } - - if ($input->getOption('no-custom-installers')) { - $io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); - $input->setOption('no-plugins', true); - } - - if ($input->getOption('dev')) { - $io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); - } - - $composer = $this->getComposer(true, $input->getOption('no-plugins')); - $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'install', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $install = Installer::create($io, $composer); - - $config = $composer->getConfig(); - list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); - - $optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); - $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); - $apcu = $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); - - $install - ->setDryRun($input->getOption('dry-run')) - ->setVerbose($input->getOption('verbose')) - ->setPreferSource($preferSource) - ->setPreferDist($preferDist) - ->setDevMode(!$input->getOption('no-dev')) - ->setDumpAutoloader(!$input->getOption('no-autoloader')) - ->setRunScripts(!$input->getOption('no-scripts')) - ->setSkipSuggest($input->getOption('no-suggest')) - ->setOptimizeAutoloader($optimize) - ->setClassMapAuthoritative($authoritative) - ->setApcuAutoloader($apcu) - ->setIgnorePlatformRequirements($input->getOption('ignore-platform-reqs')) - ; - - if ($input->getOption('no-plugins')) { - $install->disablePlugins(); - } - - return $install->run(); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/LicensesCommand.php b/vendor/composer/composer/src/Composer/Command/LicensesCommand.php deleted file mode 100644 index 7537945..0000000 --- a/vendor/composer/composer/src/Composer/Command/LicensesCommand.php +++ /dev/null @@ -1,161 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Json\JsonFile; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Composer\Package\PackageInterface; -use Composer\Repository\RepositoryInterface; -use Symfony\Component\Console\Helper\Table; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Benoît Merlet - */ -class LicensesCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('licenses') - ->setDescription('Shows information about licenses of dependencies.') - ->setDefinition(array( - new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text'), - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), - )) - ->setHelp( - <<getComposer(); - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'licenses', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $root = $composer->getPackage(); - $repo = $composer->getRepositoryManager()->getLocalRepository(); - - if ($input->getOption('no-dev')) { - $packages = $this->filterRequiredPackages($repo, $root); - } else { - $packages = $this->appendPackages($repo->getPackages(), array()); - } - - ksort($packages); - $io = $this->getIO(); - - switch ($format = $input->getOption('format')) { - case 'text': - $io->write('Name: '.$root->getPrettyName().''); - $io->write('Version: '.$root->getFullPrettyVersion().''); - $io->write('Licenses: '.(implode(', ', $root->getLicense()) ?: 'none').''); - $io->write('Dependencies:'); - $io->write(''); - - $table = new Table($output); - $table->setStyle('compact'); - $tableStyle = $table->getStyle(); - $tableStyle->setVerticalBorderChar(''); - $tableStyle->setCellRowContentFormat('%s '); - $table->setHeaders(array('Name', 'Version', 'License')); - foreach ($packages as $package) { - $table->addRow(array( - $package->getPrettyName(), - $package->getFullPrettyVersion(), - implode(', ', $package->getLicense()) ?: 'none', - )); - } - $table->render(); - break; - - case 'json': - $dependencies = array(); - foreach ($packages as $package) { - $dependencies[$package->getPrettyName()] = array( - 'version' => $package->getFullPrettyVersion(), - 'license' => $package->getLicense(), - ); - } - - $io->write(JsonFile::encode(array( - 'name' => $root->getPrettyName(), - 'version' => $root->getFullPrettyVersion(), - 'license' => $root->getLicense(), - 'dependencies' => $dependencies, - ))); - break; - - default: - throw new \RuntimeException(sprintf('Unsupported format "%s". See help for supported formats.', $format)); - } - - return 0; - } - - /** - * Find package requires and child requires - * - * @param RepositoryInterface $repo - * @param PackageInterface $package - * @param array $bucket - * @return array - */ - private function filterRequiredPackages(RepositoryInterface $repo, PackageInterface $package, $bucket = array()) - { - $requires = array_keys($package->getRequires()); - - $packageListNames = array_keys($bucket); - $packages = array_filter( - $repo->getPackages(), - function ($package) use ($requires, $packageListNames) { - return in_array($package->getName(), $requires) && !in_array($package->getName(), $packageListNames); - } - ); - - $bucket = $this->appendPackages($packages, $bucket); - - foreach ($packages as $package) { - $bucket = $this->filterRequiredPackages($repo, $package, $bucket); - } - - return $bucket; - } - - /** - * Adds packages to the package list - * - * @param array $packages the list of packages to add - * @param array $bucket the list to add packages to - * @return array - */ - public function appendPackages(array $packages, array $bucket) - { - foreach ($packages as $package) { - $bucket[$package->getName()] = $package; - } - - return $bucket; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php b/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php deleted file mode 100644 index 5990872..0000000 --- a/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php +++ /dev/null @@ -1,95 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jordi Boggiano - */ -class OutdatedCommand extends ShowCommand -{ - protected function configure() - { - $this - ->setName('outdated') - ->setDescription('Shows a list of installed packages that have updates available, including their latest version.') - ->setDefinition(array( - new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.'), - new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show only packages that are outdated (this is the default, but present here for compat with `show`'), - new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show all installed packages with their latest versions'), - new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), - new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), - new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates. Use with the --outdated option.'), - new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text'), - new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it with the --outdated option if you don\'t want to be informed about new versions of some packages.'), - )) - ->setHelp( - <<green (=): Dependency is in the latest version and is up to date. -- yellow (~): Dependency has a new version available that includes backwards - compatibility breaks according to semver, so upgrade when you can but it - may involve work. -- red (!): Dependency has a new version that is semver-compatible and you should upgrade it. - -Read more at https://getcomposer.org/doc/03-cli.md#outdated -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $args = array( - 'command' => 'show', - '--latest' => true, - ); - if (!$input->getOption('all')) { - $args['--outdated'] = true; - } - if ($input->getOption('direct')) { - $args['--direct'] = true; - } - if ($input->getArgument('package')) { - $args['package'] = $input->getArgument('package'); - } - if ($input->getOption('strict')) { - $args['--strict'] = true; - } - if ($input->getOption('minor-only')) { - $args['--minor-only'] = true; - } - $args['--format'] = $input->getOption('format'); - $args['--ignore'] = $input->getOption('ignore'); - - $input = new ArrayInput($args); - - return $this->getApplication()->run($input, $output); - } - - /** - * {@inheritDoc} - */ - public function isProxyCommand() - { - return true; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php b/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php deleted file mode 100644 index 1e18e5e..0000000 --- a/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Niels Keurentjes - */ -class ProhibitsCommand extends BaseDependencyCommand -{ - /** - * Configure command metadata. - */ - protected function configure() - { - parent::configure(); - - $this - ->setName('prohibits') - ->setAliases(array('why-not')) - ->setDescription('Shows which packages prevent the given package from being installed.') - ->setHelp( - <<php composer.phar prohibits composer/composer - -Read more at https://getcomposer.org/doc/03-cli.md#prohibits-why-not- -EOT - ) - ; - } - - /** - * Execute the function. - * - * @param InputInterface $input - * @param OutputInterface $output - * @return int - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - return parent::doExecute($input, $output, true); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/RemoveCommand.php b/vendor/composer/composer/src/Composer/Command/RemoveCommand.php deleted file mode 100644 index e4407d4..0000000 --- a/vendor/composer/composer/src/Composer/Command/RemoveCommand.php +++ /dev/null @@ -1,163 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Config\JsonConfigSource; -use Composer\Installer; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Composer\Json\JsonFile; -use Composer\Factory; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Output\OutputInterface; -use Composer\Package\BasePackage; - -/** - * @author Pierre du Plessis - * @author Jordi Boggiano - */ -class RemoveCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('remove') - ->setDescription('Removes a package from the require or require-dev.') - ->setDefinition(array( - new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'Packages that should be removed.'), - new InputOption('dev', null, InputOption::VALUE_NONE, 'Removes a package from the require-dev section.'), - new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), - new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies.'), - new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), - new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), - new InputOption('update-with-dependencies', null, InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated with explicit dependencies. (Deprecrated, is now default behavior)'), - new InputOption('no-update-with-dependencies', null, InputOption::VALUE_NONE, 'Does not allow inherited dependencies to be updated with explicit dependencies.'), - new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), - new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), - new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), - new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), - )) - ->setHelp( - <<remove command removes a package from the current -list of installed packages - -php composer.phar remove - -Read more at https://getcomposer.org/doc/03-cli.md#remove -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $packages = $input->getArgument('packages'); - $packages = array_map('strtolower', $packages); - - $file = Factory::getComposerFile(); - - $jsonFile = new JsonFile($file); - $composer = $jsonFile->read(); - $composerBackup = file_get_contents($jsonFile->getPath()); - - $json = new JsonConfigSource($jsonFile); - - $type = $input->getOption('dev') ? 'require-dev' : 'require'; - $altType = !$input->getOption('dev') ? 'require-dev' : 'require'; - $io = $this->getIO(); - - if ($input->getOption('update-with-dependencies')) { - $io->writeError('You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies.'); - } - - // make sure name checks are done case insensitively - foreach (array('require', 'require-dev') as $linkType) { - if (isset($composer[$linkType])) { - foreach ($composer[$linkType] as $name => $version) { - $composer[$linkType][strtolower($name)] = $name; - } - } - } - - foreach ($packages as $package) { - if (isset($composer[$type][$package])) { - $json->removeLink($type, $composer[$type][$package]); - } elseif (isset($composer[$altType][$package])) { - $io->writeError('' . $composer[$altType][$package] . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); - if ($io->isInteractive()) { - if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ', true)) { - $json->removeLink($altType, $composer[$altType][$package]); - } - } - } elseif (isset($composer[$type]) && $matches = preg_grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$type]))) { - foreach ($matches as $matchedPackage) { - $json->removeLink($type, $matchedPackage); - } - } elseif (isset($composer[$altType]) && $matches = preg_grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$altType]))) { - foreach ($matches as $matchedPackage) { - $io->writeError('' . $matchedPackage . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); - if ($io->isInteractive()) { - if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ', true)) { - $json->removeLink($altType, $matchedPackage); - } - } - } - } else { - $io->writeError(''.$package.' is not required in your composer.json and has not been removed'); - } - } - - if ($input->getOption('no-update')) { - return 0; - } - - // Update packages - $this->resetComposer(); - $composer = $this->getComposer(true, $input->getOption('no-plugins')); - $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'remove', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $install = Installer::create($io, $composer); - - $updateDevMode = !$input->getOption('update-no-dev'); - $optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); - $authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); - $apcu = $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); - - $install - ->setVerbose($input->getOption('verbose')) - ->setDevMode($updateDevMode) - ->setOptimizeAutoloader($optimize) - ->setClassMapAuthoritative($authoritative) - ->setApcuAutoloader($apcu) - ->setUpdate(true) - ->setUpdateWhitelist($packages) - ->setWhitelistTransitiveDependencies(!$input->getOption('no-update-with-dependencies')) - ->setIgnorePlatformRequirements($input->getOption('ignore-platform-reqs')) - ->setRunScripts(!$input->getOption('no-scripts')) - ; - - $status = $install->run(); - if ($status !== 0) { - $io->writeError("\n".'Removal failed, reverting '.$file.' to its original content.'); - file_put_contents($jsonFile->getPath(), $composerBackup); - } - - return $status; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/RequireCommand.php b/vendor/composer/composer/src/Composer/Command/RequireCommand.php deleted file mode 100644 index bb99fc3..0000000 --- a/vendor/composer/composer/src/Composer/Command/RequireCommand.php +++ /dev/null @@ -1,277 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Composer\Factory; -use Composer\Installer; -use Composer\Json\JsonFile; -use Composer\Json\JsonManipulator; -use Composer\Package\Version\VersionParser; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Composer\Repository\CompositeRepository; -use Composer\Repository\PlatformRepository; -use Composer\IO\IOInterface; -use Composer\Util\Silencer; - -/** - * @author Jérémy Romey - * @author Jordi Boggiano - */ -class RequireCommand extends InitCommand -{ - private $newlyCreated; - private $json; - private $file; - private $composerBackup; - - protected function configure() - { - $this - ->setName('require') - ->setDescription('Adds required packages to your composer.json and installs them.') - ->setDefinition(array( - new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Optional package name can also include a version constraint, e.g. foo/bar or foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), - new InputOption('dev', null, InputOption::VALUE_NONE, 'Add requirement to require-dev.'), - new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), - new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), - new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), - new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'Do not show package suggestions.'), - new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies.'), - new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), - new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), - new InputOption('update-with-dependencies', null, InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated, except those that are root requirements.'), - new InputOption('update-with-all-dependencies', null, InputOption::VALUE_NONE, 'Allows all inherited dependencies to be updated, including those that are root requirements.'), - new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), - new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies.'), - new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies.'), - new InputOption('sort-packages', null, InputOption::VALUE_NONE, 'Sorts packages when adding/updating a new dependency'), - new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), - new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), - new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), - )) - ->setHelp( - <<file = Factory::getComposerFile(); - $io = $this->getIO(); - - $this->newlyCreated = !file_exists($this->file); - if ($this->newlyCreated && !file_put_contents($this->file, "{\n}\n")) { - $io->writeError(''.$this->file.' could not be created.'); - - return 1; - } - // check for readability by reading the file as is_readable can not be trusted on network-mounts - // see https://github.com/composer/composer/issues/8231 and https://bugs.php.net/bug.php?id=68926 - if (!is_readable($this->file) && false === Silencer::call('file_get_contents', $this->file)) { - $io->writeError(''.$this->file.' is not readable.'); - - return 1; - } - - if (filesize($this->file) === 0) { - file_put_contents($this->file, "{\n}\n"); - } - - $this->json = new JsonFile($this->file); - $this->composerBackup = file_get_contents($this->json->getPath()); - - // check for writability by writing to the file as is_writable can not be trusted on network-mounts - // see https://github.com/composer/composer/issues/8231 and https://bugs.php.net/bug.php?id=68926 - if (!is_writable($this->file) && !Silencer::call('file_put_contents', $this->file, $this->composerBackup)) { - $io->writeError(''.$this->file.' is not writable.'); - - return 1; - } - - $composer = $this->getComposer(true, $input->getOption('no-plugins')); - $repos = $composer->getRepositoryManager()->getRepositories(); - - $platformOverrides = $composer->getConfig()->get('platform') ?: array(); - // initialize $this->repos as it is used by the parent InitCommand - $this->repos = new CompositeRepository(array_merge( - array(new PlatformRepository(array(), $platformOverrides)), - $repos - )); - - if ($composer->getPackage()->getPreferStable()) { - $preferredStability = 'stable'; - } else { - $preferredStability = $composer->getPackage()->getMinimumStability(); - } - - $phpVersion = $this->repos->findPackage('php', '*')->getPrettyVersion(); - try { - $requirements = $this->determineRequirements($input, $output, $input->getArgument('packages'), $phpVersion, $preferredStability, !$input->getOption('no-update')); - } catch (\Exception $e) { - if ($this->newlyCreated) { - throw new \RuntimeException('No composer.json present in the current directory, this may be the cause of the following exception.', 0, $e); - } - - throw $e; - } - - $requireKey = $input->getOption('dev') ? 'require-dev' : 'require'; - $removeKey = $input->getOption('dev') ? 'require' : 'require-dev'; - $requirements = $this->formatRequirements($requirements); - - // validate requirements format - $versionParser = new VersionParser(); - foreach ($requirements as $package => $constraint) { - if (strtolower($package) === $composer->getPackage()->getName()) { - $io->writeError(sprintf('Root package \'%s\' cannot require itself in its composer.json', $package)); - - return 1; - } - $versionParser->parseConstraints($constraint); - } - - $sortPackages = $input->getOption('sort-packages') || $composer->getConfig()->get('sort-packages'); - - if (!$this->updateFileCleanly($this->json, $requirements, $requireKey, $removeKey, $sortPackages)) { - $composerDefinition = $this->json->read(); - foreach ($requirements as $package => $version) { - $composerDefinition[$requireKey][$package] = $version; - unset($composerDefinition[$removeKey][$package]); - } - $this->json->write($composerDefinition); - } - - $io->writeError(''.$this->file.' has been '.($this->newlyCreated ? 'created' : 'updated').''); - - if ($input->getOption('no-update')) { - return 0; - } - - try { - return $this->doUpdate($input, $output, $io, $requirements); - } catch (\Exception $e) { - $this->revertComposerFile(false); - throw $e; - } - } - - private function doUpdate(InputInterface $input, OutputInterface $output, IOInterface $io, array $requirements) - { - // Update packages - $this->resetComposer(); - $composer = $this->getComposer(true, $input->getOption('no-plugins')); - $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); - - $updateDevMode = !$input->getOption('update-no-dev'); - $optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); - $authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); - $apcu = $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'require', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $install = Installer::create($io, $composer); - - $install - ->setVerbose($input->getOption('verbose')) - ->setPreferSource($input->getOption('prefer-source')) - ->setPreferDist($input->getOption('prefer-dist')) - ->setDevMode($updateDevMode) - ->setRunScripts(!$input->getOption('no-scripts')) - ->setSkipSuggest($input->getOption('no-suggest')) - ->setOptimizeAutoloader($optimize) - ->setClassMapAuthoritative($authoritative) - ->setApcuAutoloader($apcu) - ->setUpdate(true) - ->setUpdateWhitelist(array_keys($requirements)) - ->setWhitelistTransitiveDependencies($input->getOption('update-with-dependencies')) - ->setWhitelistAllDependencies($input->getOption('update-with-all-dependencies')) - ->setIgnorePlatformRequirements($input->getOption('ignore-platform-reqs')) - ->setPreferStable($input->getOption('prefer-stable')) - ->setPreferLowest($input->getOption('prefer-lowest')) - ; - - $status = $install->run(); - if ($status !== 0) { - $this->revertComposerFile(false); - } - - return $status; - } - - private function updateFileCleanly($json, array $new, $requireKey, $removeKey, $sortPackages) - { - $contents = file_get_contents($json->getPath()); - - $manipulator = new JsonManipulator($contents); - - foreach ($new as $package => $constraint) { - if (!$manipulator->addLink($requireKey, $package, $constraint, $sortPackages)) { - return false; - } - if (!$manipulator->removeSubNode($removeKey, $package)) { - return false; - } - } - - file_put_contents($json->getPath(), $manipulator->getContents()); - - return true; - } - - protected function interact(InputInterface $input, OutputInterface $output) - { - return; - } - - public function revertComposerFile($hardExit = true) - { - $io = $this->getIO(); - - if ($this->newlyCreated) { - $io->writeError("\n".'Installation failed, deleting '.$this->file.'.'); - unlink($this->json->getPath()); - } else { - $io->writeError("\n".'Installation failed, reverting '.$this->file.' to its original content.'); - file_put_contents($this->json->getPath(), $this->composerBackup); - } - - if ($hardExit) { - exit(1); - } - } -} diff --git a/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php b/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php deleted file mode 100644 index a110cc3..0000000 --- a/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php +++ /dev/null @@ -1,142 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Script\Event as ScriptEvent; -use Composer\Script\ScriptEvents; -use Composer\Util\ProcessExecutor; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Helper\Table; - -/** - * @author Fabien Potencier - */ -class RunScriptCommand extends BaseCommand -{ - /** - * @var array Array with command events - */ - protected $scriptEvents = array( - ScriptEvents::PRE_INSTALL_CMD, - ScriptEvents::POST_INSTALL_CMD, - ScriptEvents::PRE_UPDATE_CMD, - ScriptEvents::POST_UPDATE_CMD, - ScriptEvents::PRE_STATUS_CMD, - ScriptEvents::POST_STATUS_CMD, - ScriptEvents::POST_ROOT_PACKAGE_INSTALL, - ScriptEvents::POST_CREATE_PROJECT_CMD, - ScriptEvents::PRE_ARCHIVE_CMD, - ScriptEvents::POST_ARCHIVE_CMD, - ScriptEvents::PRE_AUTOLOAD_DUMP, - ScriptEvents::POST_AUTOLOAD_DUMP, - ); - - protected function configure() - { - $this - ->setName('run-script') - ->setAliases(array('run')) - ->setDescription('Runs the scripts defined in composer.json.') - ->setDefinition(array( - new InputArgument('script', InputArgument::OPTIONAL, 'Script name to run.'), - new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), - new InputOption('timeout', null, InputOption::VALUE_REQUIRED, 'Sets script timeout in seconds, or 0 for never.'), - new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), - new InputOption('list', 'l', InputOption::VALUE_NONE, 'List scripts.'), - )) - ->setHelp( - <<run-script command runs scripts defined in composer.json: - -php composer.phar run-script post-update-cmd - -Read more at https://getcomposer.org/doc/03-cli.md#run-script -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - if ($input->getOption('list')) { - return $this->listScripts($output); - } elseif (!$input->getArgument('script')) { - throw new \RuntimeException('Missing required argument "script"'); - } - - $script = $input->getArgument('script'); - if (!in_array($script, $this->scriptEvents)) { - if (defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { - throw new \InvalidArgumentException(sprintf('Script "%s" cannot be run with this command', $script)); - } - } - - $composer = $this->getComposer(); - $devMode = $input->getOption('dev') || !$input->getOption('no-dev'); - $event = new ScriptEvent($script, $composer, $this->getIO(), $devMode); - $hasListeners = $composer->getEventDispatcher()->hasEventListeners($event); - if (!$hasListeners) { - throw new \InvalidArgumentException(sprintf('Script "%s" is not defined in this package', $script)); - } - - $args = $input->getArgument('args'); - - if (null !== $timeout = $input->getOption('timeout')) { - if (!ctype_digit($timeout)) { - throw new \RuntimeException('Timeout value must be numeric and positive if defined, or 0 for forever'); - } - // Override global timeout set before in Composer by environment or config - ProcessExecutor::setTimeout((int) $timeout); - } - - return $composer->getEventDispatcher()->dispatchScript($script, $devMode, $args); - } - - protected function listScripts(OutputInterface $output) - { - $scripts = $this->getComposer()->getPackage()->getScripts(); - - if (!count($scripts)) { - return 0; - } - - $io = $this->getIO(); - $io->writeError('scripts:'); - $table = array(); - foreach ($scripts as $name => $script) { - $description = ''; - try { - $cmd = $this->getApplication()->find($name); - if ($cmd instanceof ScriptAliasCommand) { - $description = $cmd->getDescription(); - } - } catch (\Symfony\Component\Console\Exception\CommandNotFoundException $e) { - // ignore scripts that have no command associated, like native Composer script listeners - } - $table[] = array(' '.$name, $description); - } - - $renderer = new Table($output); - $renderer->setStyle('compact'); - $rendererStyle = $renderer->getStyle(); - $rendererStyle->setVerticalBorderChar(''); - $rendererStyle->setCellRowContentFormat('%s '); - $renderer->setRows($table)->render(); - - return 0; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php b/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php deleted file mode 100644 index 455f742..0000000 --- a/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jordi Boggiano - */ -class ScriptAliasCommand extends BaseCommand -{ - private $script; - private $description; - - public function __construct($script, $description) - { - $this->script = $script; - $this->description = empty($description) ? 'Runs the '.$script.' script as defined in composer.json.' : $description; - - parent::__construct(); - } - - protected function configure() - { - $this - ->setName($this->script) - ->setDescription($this->description) - ->setDefinition(array( - new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), - new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), - )) - ->setHelp( - <<run-script command runs scripts defined in composer.json: - -php composer.phar run-script post-update-cmd - -Read more at https://getcomposer.org/doc/03-cli.md#run-script -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $composer = $this->getComposer(); - - $args = $input->getArguments(); - - return $composer->getEventDispatcher()->dispatchScript($this->script, $input->getOption('dev') || !$input->getOption('no-dev'), $args['args']); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/SearchCommand.php b/vendor/composer/composer/src/Composer/Command/SearchCommand.php deleted file mode 100644 index 0e8aa60..0000000 --- a/vendor/composer/composer/src/Composer/Command/SearchCommand.php +++ /dev/null @@ -1,85 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Factory; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Composer\Repository\CompositeRepository; -use Composer\Repository\PlatformRepository; -use Composer\Repository\RepositoryInterface; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; - -/** - * @author Robert Schönthal - */ -class SearchCommand extends BaseCommand -{ - protected $matches; - protected $lowMatches = array(); - protected $tokens; - protected $output; - protected $onlyName; - - protected function configure() - { - $this - ->setName('search') - ->setDescription('Searches for packages.') - ->setDefinition(array( - new InputOption('only-name', 'N', InputOption::VALUE_NONE, 'Search only in name'), - new InputOption('type', 't', InputOption::VALUE_REQUIRED, 'Search for a specific package type'), - new InputArgument('tokens', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'tokens to search for'), - )) - ->setHelp( - <<php composer.phar search symfony composer - -Read more at https://getcomposer.org/doc/03-cli.md#search -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - // init repos - $platformRepo = new PlatformRepository; - $io = $this->getIO(); - if (!($composer = $this->getComposer(false))) { - $composer = Factory::create($this->getIO(), array(), $input->hasParameterOption('--no-plugins')); - } - $localRepo = $composer->getRepositoryManager()->getLocalRepository(); - $installedRepo = new CompositeRepository(array($localRepo, $platformRepo)); - $repos = new CompositeRepository(array_merge(array($installedRepo), $composer->getRepositoryManager()->getRepositories())); - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'search', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $onlyName = $input->getOption('only-name'); - $type = $input->getOption('type') ?: null; - - $flags = $onlyName ? RepositoryInterface::SEARCH_NAME : RepositoryInterface::SEARCH_FULLTEXT; - $results = $repos->search(implode(' ', $input->getArgument('tokens')), $flags, $type); - - foreach ($results as $result) { - $io->write($result['name'] . (isset($result['description']) ? ' '. $result['description'] : '')); - } - - return 0; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php b/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php deleted file mode 100644 index 0dba48e..0000000 --- a/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php +++ /dev/null @@ -1,407 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Composer; -use Composer\Factory; -use Composer\Config; -use Composer\Util\Filesystem; -use Composer\SelfUpdate\Keys; -use Composer\SelfUpdate\Versions; -use Composer\IO\IOInterface; -use Composer\Downloader\FilesystemException; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Finder\Finder; - -/** - * @author Igor Wiedler - * @author Kevin Ran - * @author Jordi Boggiano - */ -class SelfUpdateCommand extends BaseCommand -{ - const HOMEPAGE = 'getcomposer.org'; - const OLD_INSTALL_EXT = '-old.phar'; - - protected function configure() - { - $this - ->setName('self-update') - ->setAliases(array('selfupdate')) - ->setDescription('Updates composer.phar to the latest version.') - ->setDefinition(array( - new InputOption('rollback', 'r', InputOption::VALUE_NONE, 'Revert to an older installation of composer'), - new InputOption('clean-backups', null, InputOption::VALUE_NONE, 'Delete old backups during an update. This makes the current version of composer the only backup available after the update'), - new InputArgument('version', InputArgument::OPTIONAL, 'The version to update to'), - new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), - new InputOption('update-keys', null, InputOption::VALUE_NONE, 'Prompt user for a key update'), - new InputOption('stable', null, InputOption::VALUE_NONE, 'Force an update to the stable channel'), - new InputOption('preview', null, InputOption::VALUE_NONE, 'Force an update to the preview channel'), - new InputOption('snapshot', null, InputOption::VALUE_NONE, 'Force an update to the snapshot channel'), - new InputOption('set-channel-only', null, InputOption::VALUE_NONE, 'Only store the channel as the default one and then exit'), - )) - ->setHelp( - <<self-update command checks getcomposer.org for newer -versions of composer and if found, installs the latest. - -php composer.phar self-update - -Read more at https://getcomposer.org/doc/03-cli.md#self-update-selfupdate- -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $config = Factory::createConfig(); - - if ($config->get('disable-tls') === true) { - $baseUrl = 'http://' . self::HOMEPAGE; - } else { - $baseUrl = 'https://' . self::HOMEPAGE; - } - - $io = $this->getIO(); - $remoteFilesystem = Factory::createRemoteFilesystem($io, $config); - - $versionsUtil = new Versions($config, $remoteFilesystem); - - // switch channel if requested - foreach (array('stable', 'preview', 'snapshot') as $channel) { - if ($input->getOption($channel)) { - $versionsUtil->setChannel($channel); - } - } - - if ($input->getOption('set-channel-only')) { - return 0; - } - - $cacheDir = $config->get('cache-dir'); - $rollbackDir = $config->get('data-dir'); - $home = $config->get('home'); - $localFilename = realpath($_SERVER['argv'][0]) ?: $_SERVER['argv'][0]; - - if ($input->getOption('update-keys')) { - return $this->fetchKeys($io, $config); - } - - // check if current dir is writable and if not try the cache dir from settings - $tmpDir = is_writable(dirname($localFilename)) ? dirname($localFilename) : $cacheDir; - - // check for permissions in local filesystem before start connection process - if (!is_writable($tmpDir)) { - throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written'); - } - - // check if composer is running as the same user that owns the directory root, only if POSIX is defined and callable - if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { - $composeUser = posix_getpwuid(posix_geteuid()); - $homeOwner = posix_getpwuid(fileowner($home)); - if (isset($composeUser['name']) && isset($homeOwner['name']) && $composeUser['name'] !== $homeOwner['name']) { - $io->writeError('You are running composer as "'.$composeUser['name'].'", while "'.$home.'" is owned by "'.$homeOwner['name'].'"'); - } - } - - if ($input->getOption('rollback')) { - return $this->rollback($output, $rollbackDir, $localFilename); - } - - $latest = $versionsUtil->getLatest(); - $latestVersion = $latest['version']; - $updateVersion = $input->getArgument('version') ?: $latestVersion; - - if (preg_match('{^[0-9a-f]{40}$}', $updateVersion) && $updateVersion !== $latestVersion) { - $io->writeError('You can not update to a specific SHA-1 as those phars are not available for download'); - - return 1; - } - - if (Composer::VERSION === $updateVersion) { - $io->writeError(sprintf('You are already using composer version %s (%s channel).', $updateVersion, $versionsUtil->getChannel())); - - // remove all backups except for the most recent, if any - if ($input->getOption('clean-backups')) { - $this->cleanBackups($rollbackDir, $this->getLastBackupVersion($rollbackDir)); - } - - return 0; - } - - $tempFilename = $tmpDir . '/' . basename($localFilename, '.phar').'-temp.phar'; - $backupFile = sprintf( - '%s/%s-%s%s', - $rollbackDir, - strtr(Composer::RELEASE_DATE, ' :', '_-'), - preg_replace('{^([0-9a-f]{7})[0-9a-f]{33}$}', '$1', Composer::VERSION), - self::OLD_INSTALL_EXT - ); - - $updatingToTag = !preg_match('{^[0-9a-f]{40}$}', $updateVersion); - - $io->write(sprintf("Updating to version %s (%s channel).", $updateVersion, $versionsUtil->getChannel())); - $remoteFilename = $baseUrl . ($updatingToTag ? "/download/{$updateVersion}/composer.phar" : '/composer.phar'); - $signature = $remoteFilesystem->getContents(self::HOMEPAGE, $remoteFilename.'.sig', false); - $io->writeError(' ', false); - $remoteFilesystem->copy(self::HOMEPAGE, $remoteFilename, $tempFilename, !$input->getOption('no-progress')); - $io->writeError(''); - - if (!file_exists($tempFilename) || !$signature) { - $io->writeError('The download of the new composer version failed for an unexpected reason'); - - return 1; - } - - // verify phar signature - if (!extension_loaded('openssl') && $config->get('disable-tls')) { - $io->writeError('Skipping phar signature verification as you have disabled OpenSSL via config.disable-tls'); - } else { - if (!extension_loaded('openssl')) { - throw new \RuntimeException('The openssl extension is required for phar signatures to be verified but it is not available. ' - . 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); - } - - $sigFile = 'file://'.$home.'/' . ($updatingToTag ? 'keys.tags.pub' : 'keys.dev.pub'); - if (!file_exists($sigFile)) { - file_put_contents( - $home.'/keys.dev.pub', - <<getOption('clean-backups')) { - $this->cleanBackups($rollbackDir); - } - - if ($err = $this->setLocalPhar($localFilename, $tempFilename, $backupFile)) { - @unlink($tempFilename); - $io->writeError('The file is corrupted ('.$err->getMessage().').'); - $io->writeError('Please re-run the self-update command to try again.'); - - return 1; - } - - if (file_exists($backupFile)) { - $io->writeError(sprintf( - 'Use composer self-update --rollback to return to version %s', - Composer::VERSION - )); - } else { - $io->writeError('A backup of the current version could not be written to '.$backupFile.', no rollback possible'); - } - - return 0; - } - - protected function fetchKeys(IOInterface $io, Config $config) - { - if (!$io->isInteractive()) { - throw new \RuntimeException('Public keys can not be fetched in non-interactive mode, please run Composer interactively'); - } - - $io->write('Open https://composer.github.io/pubkeys.html to find the latest keys'); - - $validator = function ($value) { - if (!preg_match('{^-----BEGIN PUBLIC KEY-----$}', trim($value))) { - throw new \UnexpectedValueException('Invalid input'); - } - - return trim($value)."\n"; - }; - - $devKey = ''; - while (!preg_match('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $devKey, $match)) { - $devKey = $io->askAndValidate('Enter Dev / Snapshot Public Key (including lines with -----): ', $validator); - while ($line = $io->ask('')) { - $devKey .= trim($line)."\n"; - if (trim($line) === '-----END PUBLIC KEY-----') { - break; - } - } - } - file_put_contents($keyPath = $config->get('home').'/keys.dev.pub', $match[0]); - $io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); - - $tagsKey = ''; - while (!preg_match('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $tagsKey, $match)) { - $tagsKey = $io->askAndValidate('Enter Tags Public Key (including lines with -----): ', $validator); - while ($line = $io->ask('')) { - $tagsKey .= trim($line)."\n"; - if (trim($line) === '-----END PUBLIC KEY-----') { - break; - } - } - } - file_put_contents($keyPath = $config->get('home').'/keys.tags.pub', $match[0]); - $io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); - - $io->write('Public keys stored in '.$config->get('home')); - } - - protected function rollback(OutputInterface $output, $rollbackDir, $localFilename) - { - $rollbackVersion = $this->getLastBackupVersion($rollbackDir); - if (!$rollbackVersion) { - throw new \UnexpectedValueException('Composer rollback failed: no installation to roll back to in "'.$rollbackDir.'"'); - } - - $oldFile = $rollbackDir . '/' . $rollbackVersion . self::OLD_INSTALL_EXT; - - if (!is_file($oldFile)) { - throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be found'); - } - if (!is_readable($oldFile)) { - throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be read'); - } - - $io = $this->getIO(); - $io->writeError(sprintf("Rolling back to version %s.", $rollbackVersion)); - if ($err = $this->setLocalPhar($localFilename, $oldFile)) { - $io->writeError('The backup file was corrupted ('.$err->getMessage().').'); - - return 1; - } - - return 0; - } - - /** - * @param string $localFilename - * @param string $newFilename - * @param string $backupTarget - * @throws \Exception - * @return \UnexpectedValueException|\PharException|null - */ - protected function setLocalPhar($localFilename, $newFilename, $backupTarget = null) - { - try { - @chmod($newFilename, fileperms($localFilename)); - if (!ini_get('phar.readonly')) { - // test the phar validity - $phar = new \Phar($newFilename); - // free the variable to unlock the file - unset($phar); - } - - // copy current file into installations dir - if ($backupTarget && file_exists($localFilename)) { - @copy($localFilename, $backupTarget); - } - - rename($newFilename, $localFilename); - - return null; - } catch (\Exception $e) { - if (!$e instanceof \UnexpectedValueException && !$e instanceof \PharException) { - throw $e; - } - - return $e; - } - } - - protected function cleanBackups($rollbackDir, $except = null) - { - $finder = $this->getOldInstallationFinder($rollbackDir); - $io = $this->getIO(); - $fs = new Filesystem; - - foreach ($finder as $file) { - if ($except && $file->getBasename(self::OLD_INSTALL_EXT) === $except) { - continue; - } - $file = (string) $file; - $io->writeError('Removing: '.$file.''); - $fs->remove($file); - } - } - - protected function getLastBackupVersion($rollbackDir) - { - $finder = $this->getOldInstallationFinder($rollbackDir); - $finder->sortByName(); - $files = iterator_to_array($finder); - - if (count($files)) { - return basename(end($files), self::OLD_INSTALL_EXT); - } - - return false; - } - - protected function getOldInstallationFinder($rollbackDir) - { - $finder = Finder::create() - ->depth(0) - ->files() - ->name('*' . self::OLD_INSTALL_EXT) - ->in($rollbackDir); - - return $finder; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/ShowCommand.php b/vendor/composer/composer/src/Composer/Command/ShowCommand.php deleted file mode 100644 index e906174..0000000 --- a/vendor/composer/composer/src/Composer/Command/ShowCommand.php +++ /dev/null @@ -1,1015 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Composer; -use Composer\DependencyResolver\DefaultPolicy; -use Composer\DependencyResolver\Pool; -use Composer\Json\JsonFile; -use Composer\Package\BasePackage; -use Composer\Package\CompletePackageInterface; -use Composer\Package\PackageInterface; -use Composer\Package\Version\VersionParser; -use Composer\Package\Version\VersionSelector; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Composer\Repository\ArrayRepository; -use Composer\Repository\ComposerRepository; -use Composer\Repository\CompositeRepository; -use Composer\Repository\PlatformRepository; -use Composer\Repository\RepositoryFactory; -use Composer\Repository\RepositoryInterface; -use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Semver\Semver; -use Composer\Spdx\SpdxLicenses; -use Composer\Util\Platform; -use Symfony\Component\Console\Formatter\OutputFormatterStyle; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Terminal; - -/** - * @author Robert Schönthal - * @author Jordi Boggiano - * @author Jérémy Romey - * @author Mihai Plasoianu - */ -class ShowCommand extends BaseCommand -{ - /** @var VersionParser */ - protected $versionParser; - protected $colors; - - /** @var Pool */ - private $pool; - - protected function configure() - { - $this - ->setName('show') - ->setAliases(array('info')) - ->setDescription('Shows information about packages.') - ->setDefinition(array( - new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.'), - new InputArgument('version', InputArgument::OPTIONAL, 'Version or version constraint to inspect'), - new InputOption('all', null, InputOption::VALUE_NONE, 'List all packages'), - new InputOption('installed', 'i', InputOption::VALUE_NONE, 'List installed packages only (enabled by default, only present for BC).'), - new InputOption('platform', 'p', InputOption::VALUE_NONE, 'List platform packages only'), - new InputOption('available', 'a', InputOption::VALUE_NONE, 'List available packages only'), - new InputOption('self', 's', InputOption::VALUE_NONE, 'Show the root package information'), - new InputOption('name-only', 'N', InputOption::VALUE_NONE, 'List package names only'), - new InputOption('path', 'P', InputOption::VALUE_NONE, 'Show package paths'), - new InputOption('tree', 't', InputOption::VALUE_NONE, 'List the dependencies as a tree'), - new InputOption('latest', 'l', InputOption::VALUE_NONE, 'Show the latest version'), - new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show the latest version but only for packages that are outdated'), - new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it with the --outdated option if you don\'t want to be informed about new versions of some packages.'), - new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates. Use with the --outdated option.'), - new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), - new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), - new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text'), - )) - ->setHelp( - <<versionParser = new VersionParser; - if ($input->getOption('tree')) { - $this->initStyles($output); - } - - $composer = $this->getComposer(false); - $io = $this->getIO(); - - if ($input->getOption('installed')) { - $io->writeError('You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.'); - } - - if ($input->getOption('outdated')) { - $input->setOption('latest', true); - } elseif ($input->getOption('ignore')) { - $io->writeError('You are using the option "ignore" for action other than "outdated", it will be ignored.'); - } - - if ($input->getOption('direct') && ($input->getOption('all') || $input->getOption('available') || $input->getOption('platform'))) { - $io->writeError('The --direct (-D) option is not usable in combination with --all, --platform (-p) or --available (-a)'); - - return 1; - } - - if ($input->getOption('tree') && ($input->getOption('all') || $input->getOption('available'))) { - $io->writeError('The --tree (-t) option is not usable in combination with --all or --available (-a)'); - - return 1; - } - - if ($input->getOption('tree') && $input->getOption('latest')) { - $io->writeError('The --tree (-t) option is not usable in combination with --latest (-l)'); - - return 1; - } - - $format = $input->getOption('format'); - if (!in_array($format, array('text', 'json'))) { - $io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); - - return 1; - } - - // init repos - $platformOverrides = array(); - if ($composer) { - $platformOverrides = $composer->getConfig()->get('platform') ?: array(); - } - $platformRepo = new PlatformRepository(array(), $platformOverrides); - $phpVersion = $platformRepo->findPackage('php', '*')->getVersion(); - - if ($input->getOption('self')) { - $package = $this->getComposer()->getPackage(); - $repos = $installedRepo = new ArrayRepository(array($package)); - } elseif ($input->getOption('platform')) { - $repos = $installedRepo = $platformRepo; - } elseif ($input->getOption('available')) { - $installedRepo = $platformRepo; - if ($composer) { - $repos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); - } else { - $defaultRepos = RepositoryFactory::defaultRepos($io); - $repos = new CompositeRepository($defaultRepos); - $io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); - } - } elseif ($input->getOption('all') && $composer) { - $localRepo = $composer->getRepositoryManager()->getLocalRepository(); - $installedRepo = new CompositeRepository(array($localRepo, $platformRepo)); - $repos = new CompositeRepository(array_merge(array($installedRepo), $composer->getRepositoryManager()->getRepositories())); - } elseif ($input->getOption('all')) { - $defaultRepos = RepositoryFactory::defaultRepos($io); - $io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); - $installedRepo = $platformRepo; - $repos = new CompositeRepository(array_merge(array($installedRepo), $defaultRepos)); - } else { - $repos = $installedRepo = $this->getComposer()->getRepositoryManager()->getLocalRepository(); - $rootPkg = $this->getComposer()->getPackage(); - if (!$installedRepo->getPackages() && ($rootPkg->getRequires() || $rootPkg->getDevRequires())) { - $io->writeError('No dependencies installed. Try running composer install or update.'); - } - } - - if ($composer) { - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'show', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - } - - if ($input->getOption('latest') && null === $composer) { - $io->writeError('No composer.json found in the current directory, disabling "latest" option'); - $input->setOption('latest', false); - } - - $packageFilter = $input->getArgument('package'); - - // show single package or single version - if (($packageFilter && false === strpos($packageFilter, '*')) || !empty($package)) { - if (empty($package)) { - list($package, $versions) = $this->getPackage($installedRepo, $repos, $input->getArgument('package'), $input->getArgument('version')); - - if (empty($package)) { - $options = $input->getOptions(); - if (!isset($options['working-dir']) || !file_exists('composer.json')) { - throw new \InvalidArgumentException('Package ' . $packageFilter . ' not found'); - } - - $io->writeError('Package ' . $packageFilter . ' not found in ' . $options['working-dir'] . '/composer.json'); - - return 1; - } - } else { - $versions = array($package->getPrettyVersion() => $package->getVersion()); - } - - $exitCode = 0; - if ($input->getOption('tree')) { - $arrayTree = $this->generatePackageTree($package, $installedRepo, $repos); - - if ('json' === $format) { - $io->write(JsonFile::encode(array('installed' => array($arrayTree)))); - } else { - $this->displayPackageTree(array($arrayTree)); - } - } else { - $latestPackage = null; - if ($input->getOption('latest')) { - $latestPackage = $this->findLatestPackage($package, $composer, $phpVersion); - } - if ($input->getOption('outdated') && $input->getOption('strict') && $latestPackage && $latestPackage->getFullPrettyVersion() !== $package->getFullPrettyVersion() && !$latestPackage->isAbandoned()) { - $exitCode = 1; - } - if ($input->getOption('path')) { - $io->write($package->getName(), false); - $io->write(' ' . strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n")); - - return $exitCode; - } - $this->printMeta($package, $versions, $installedRepo, $latestPackage ?: null); - $this->printLinks($package, 'requires'); - $this->printLinks($package, 'devRequires', 'requires (dev)'); - if ($package->getSuggests()) { - $io->write("\nsuggests"); - foreach ($package->getSuggests() as $suggested => $reason) { - $io->write($suggested . ' ' . $reason . ''); - } - } - $this->printLinks($package, 'provides'); - $this->printLinks($package, 'conflicts'); - $this->printLinks($package, 'replaces'); - } - - return $exitCode; - } - - // show tree view if requested - if ($input->getOption('tree')) { - $rootRequires = $this->getRootRequires(); - $packages = $installedRepo->getPackages(); - usort($packages, 'strcmp'); - $arrayTree = array(); - foreach ($packages as $package) { - if (in_array($package->getName(), $rootRequires, true)) { - $arrayTree[] = $this->generatePackageTree($package, $installedRepo, $repos); - } - } - - if ('json' === $format) { - $io->write(JsonFile::encode(array('installed' => $arrayTree))); - } else { - $this->displayPackageTree($arrayTree); - } - - return 0; - } - - if ($repos instanceof CompositeRepository) { - $repos = $repos->getRepositories(); - } elseif (!is_array($repos)) { - $repos = array($repos); - } - - // list packages - $packages = array(); - if (null !== $packageFilter) { - $packageFilter = '{^'.str_replace('\\*', '.*?', preg_quote($packageFilter)).'$}i'; - } - - $packageListFilter = array(); - if ($input->getOption('direct')) { - $packageListFilter = $this->getRootRequires(); - } - - if (class_exists('Symfony\Component\Console\Terminal')) { - $terminal = new Terminal(); - $width = $terminal->getWidth(); - } else { - // For versions of Symfony console before 3.2 - list($width) = $this->getApplication()->getTerminalDimensions(); - } - if (null === $width) { - // In case the width is not detected, we're probably running the command - // outside of a real terminal, use space without a limit - $width = PHP_INT_MAX; - } - if (Platform::isWindows()) { - $width--; - } else { - $width = max(80, $width); - } - - if ($input->getOption('path') && null === $composer) { - $io->writeError('No composer.json found in the current directory, disabling "path" option'); - $input->setOption('path', false); - } - - foreach ($repos as $repo) { - if ($repo === $platformRepo) { - $type = 'platform'; - } elseif ( - $repo === $installedRepo - || ($installedRepo instanceof CompositeRepository && in_array($repo, $installedRepo->getRepositories(), true)) - ) { - $type = 'installed'; - } else { - $type = 'available'; - } - if ($repo instanceof ComposerRepository && $repo->hasProviders()) { - foreach ($repo->getProviderNames() as $name) { - if (!$packageFilter || preg_match($packageFilter, $name)) { - $packages[$type][$name] = $name; - } - } - } else { - foreach ($repo->getPackages() as $package) { - if (!isset($packages[$type][$package->getName()]) - || !is_object($packages[$type][$package->getName()]) - || version_compare($packages[$type][$package->getName()]->getVersion(), $package->getVersion(), '<') - ) { - if (!$packageFilter || preg_match($packageFilter, $package->getName())) { - if (!$packageListFilter || in_array($package->getName(), $packageListFilter, true)) { - $packages[$type][$package->getName()] = $package; - } - } - } - } - } - } - - $showAllTypes = $input->getOption('all'); - $showLatest = $input->getOption('latest'); - $showMinorOnly = $input->getOption('minor-only'); - $ignoredPackages = array_map('strtolower', $input->getOption('ignore')); - $indent = $showAllTypes ? ' ' : ''; - $latestPackages = array(); - $exitCode = 0; - $viewData = array(); - $viewMetaData = array(); - foreach (array('platform' => true, 'available' => false, 'installed' => true) as $type => $showVersion) { - if (isset($packages[$type])) { - ksort($packages[$type]); - - $nameLength = $versionLength = $latestLength = 0; - - if ($showLatest && $showVersion) { - foreach ($packages[$type] as $package) { - if (is_object($package)) { - $latestPackage = $this->findLatestPackage($package, $composer, $phpVersion, $showMinorOnly); - if ($latestPackage === false) { - continue; - } - - $latestPackages[$package->getPrettyName()] = $latestPackage; - } - } - } - - $writePath = !$input->getOption('name-only') && $input->getOption('path'); - $writeVersion = !$input->getOption('name-only') && !$input->getOption('path') && $showVersion; - $writeLatest = $writeVersion && $showLatest; - $writeDescription = !$input->getOption('name-only') && !$input->getOption('path'); - - $hasOutdatedPackages = false; - - $viewData[$type] = array(); - foreach ($packages[$type] as $package) { - $packageViewData = array(); - if (is_object($package)) { - $latestPackage = null; - if ($showLatest && isset($latestPackages[$package->getPrettyName()])) { - $latestPackage = $latestPackages[$package->getPrettyName()]; - } - - // Determine if Composer is checking outdated dependencies and if current package should trigger non-default exit code - $packageIsUpToDate = $latestPackage && $latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion() && !$latestPackage->isAbandoned(); - $packageIsIgnored = \in_array($package->getPrettyName(), $ignoredPackages, true); - if ($input->getOption('outdated') && ($packageIsUpToDate || $packageIsIgnored)) { - continue; - } elseif ($input->getOption('outdated') || $input->getOption('strict')) { - $hasOutdatedPackages = true; - } - - $packageViewData['name'] = $package->getPrettyName(); - $nameLength = max($nameLength, strlen($package->getPrettyName())); - if ($writeVersion) { - $packageViewData['version'] = $package->getFullPrettyVersion(); - $versionLength = max($versionLength, strlen($package->getFullPrettyVersion())); - } - if ($writeLatest && $latestPackage) { - $packageViewData['latest'] = $latestPackage->getFullPrettyVersion(); - $packageViewData['latest-status'] = $this->getUpdateStatus($latestPackage, $package); - $latestLength = max($latestLength, strlen($latestPackage->getFullPrettyVersion())); - } - if ($writeDescription) { - $packageViewData['description'] = $package->getDescription(); - } - if ($writePath) { - $packageViewData['path'] = strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n"); - } - - if ($latestPackage && $latestPackage->isAbandoned()) { - $replacement = is_string($latestPackage->getReplacementPackage()) - ? 'Use ' . $latestPackage->getReplacementPackage() . ' instead' - : 'No replacement was suggested'; - $packageWarning = sprintf( - 'Package %s is abandoned, you should avoid using it. %s.', - $package->getPrettyName(), - $replacement - ); - $packageViewData['warning'] = $packageWarning; - } - } else { - $packageViewData['name'] = $package; - $nameLength = max($nameLength, strlen($package)); - } - $viewData[$type][] = $packageViewData; - } - $viewMetaData[$type] = array( - 'nameLength' => $nameLength, - 'versionLength' => $versionLength, - 'latestLength' => $latestLength, - ); - if ($input->getOption('strict') && $hasOutdatedPackages) { - $exitCode = 1; - break; - } - } - } - - if ('json' === $format) { - $io->write(JsonFile::encode($viewData)); - } else { - foreach ($viewData as $type => $packages) { - $nameLength = $viewMetaData[$type]['nameLength']; - $versionLength = $viewMetaData[$type]['versionLength']; - $latestLength = $viewMetaData[$type]['latestLength']; - - $writeVersion = $nameLength + $versionLength + 3 <= $width; - $writeLatest = $nameLength + $versionLength + $latestLength + 3 <= $width; - $writeDescription = $nameLength + $versionLength + $latestLength + 24 <= $width; - - if ($writeLatest && !$io->isDecorated()) { - $latestLength += 2; - } - - if ($showAllTypes) { - if ('available' === $type) { - $io->write('' . $type . ':'); - } else { - $io->write('' . $type . ':'); - } - } - - foreach ($packages as $package) { - $io->write($indent . str_pad($package['name'], $nameLength, ' '), false); - if (isset($package['version']) && $writeVersion) { - $io->write(' ' . str_pad($package['version'], $versionLength, ' '), false); - } - if (isset($package['latest']) && $writeLatest) { - $latestVersion = $package['latest']; - $updateStatus = $package['latest-status']; - $style = $this->updateStatusToVersionStyle($updateStatus); - if (!$io->isDecorated()) { - $latestVersion = str_replace(array('up-to-date', 'semver-safe-update', 'update-possible'), array('=', '!', '~'), $updateStatus) . ' ' . $latestVersion; - } - $io->write(' <' . $style . '>' . str_pad($latestVersion, $latestLength, ' ') . '', false); - } - if (isset($package['description']) && $writeDescription) { - $description = strtok($package['description'], "\r\n"); - $remaining = $width - $nameLength - $versionLength - 4; - if ($writeLatest) { - $remaining -= $latestLength; - } - if (strlen($description) > $remaining) { - $description = substr($description, 0, $remaining - 3) . '...'; - } - $io->write(' ' . $description, false); - } - if (isset($package['path'])) { - $io->write(' ' . $package['path'], false); - } - $io->write(''); - if (isset($package['warning'])) { - $io->writeError('' . $package['warning'] . ''); - } - } - - if ($showAllTypes) { - $io->write(''); - } - } - } - - return $exitCode; - } - - protected function getRootRequires() - { - $rootPackage = $this->getComposer()->getPackage(); - - return array_map( - 'strtolower', - array_keys(array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires())) - ); - } - - protected function getVersionStyle(PackageInterface $latestPackage, PackageInterface $package) - { - return $this->updateStatusToVersionStyle($this->getUpdateStatus($latestPackage, $package)); - } - - /** - * finds a package by name and version if provided - * - * @param RepositoryInterface $installedRepo - * @param RepositoryInterface $repos - * @param string $name - * @param ConstraintInterface|string $version - * @throws \InvalidArgumentException - * @return array array(CompletePackageInterface, array of versions) - */ - protected function getPackage(RepositoryInterface $installedRepo, RepositoryInterface $repos, $name, $version = null) - { - $name = strtolower($name); - $constraint = is_string($version) ? $this->versionParser->parseConstraints($version) : $version; - - $policy = new DefaultPolicy(); - $pool = new Pool('dev'); - $pool->addRepository($repos); - - $matchedPackage = null; - $versions = array(); - $matches = $pool->whatProvides($name, $constraint); - foreach ($matches as $index => $package) { - // skip providers/replacers - if ($package->getName() !== $name) { - unset($matches[$index]); - continue; - } - - // select an exact match if it is in the installed repo and no specific version was required - if (null === $version && $installedRepo->hasPackage($package)) { - $matchedPackage = $package; - } - - $versions[$package->getPrettyVersion()] = $package->getVersion(); - $matches[$index] = $package->getId(); - } - - // select preferred package according to policy rules - if (!$matchedPackage && $matches && $preferred = $policy->selectPreferredPackages($pool, array(), $matches)) { - $matchedPackage = $pool->literalToPackage($preferred[0]); - } - - return array($matchedPackage, $versions); - } - - /** - * Prints package metadata. - * - * @param CompletePackageInterface $package - * @param array $versions - * @param RepositoryInterface $installedRepo - */ - protected function printMeta(CompletePackageInterface $package, array $versions, RepositoryInterface $installedRepo, PackageInterface $latestPackage = null) - { - $io = $this->getIO(); - $io->write('name : ' . $package->getPrettyName()); - $io->write('descrip. : ' . $package->getDescription()); - $io->write('keywords : ' . implode(', ', $package->getKeywords() ?: array())); - $this->printVersions($package, $versions, $installedRepo); - if ($latestPackage) { - $style = $this->getVersionStyle($latestPackage, $package); - $io->write('latest : <'.$style.'>' . $latestPackage->getPrettyVersion() . ''); - } else { - $latestPackage = $package; - } - $io->write('type : ' . $package->getType()); - $this->printLicenses($package); - $io->write('source : ' . sprintf('[%s] %s %s', $package->getSourceType(), $package->getSourceUrl(), $package->getSourceReference())); - $io->write('dist : ' . sprintf('[%s] %s %s', $package->getDistType(), $package->getDistUrl(), $package->getDistReference())); - if ($installedRepo->hasPackage($package)) { - $io->write('path : ' . sprintf('%s', realpath($this->getComposer()->getInstallationManager()->getInstallPath($package)))); - } - $io->write('names : ' . implode(', ', $package->getNames())); - - if ($latestPackage->isAbandoned()) { - $replacement = ($latestPackage->getReplacementPackage() !== null) - ? ' The author suggests using the ' . $latestPackage->getReplacementPackage(). ' package instead.' - : null; - - $io->writeError( - sprintf('Attention: This package is abandoned and no longer maintained.%s', $replacement) - ); - } - - if ($package->getSupport()) { - $io->write("\nsupport"); - foreach ($package->getSupport() as $type => $value) { - $io->write('' . $type . ' : '.$value); - } - } - - if ($package->getAutoload()) { - $io->write("\nautoload"); - foreach ($package->getAutoload() as $type => $autoloads) { - $io->write('' . $type . ''); - - if ($type === 'psr-0') { - foreach ($autoloads as $name => $path) { - $io->write(($name ?: '*') . ' => ' . (is_array($path) ? implode(', ', $path) : ($path ?: '.'))); - } - } elseif ($type === 'psr-4') { - foreach ($autoloads as $name => $path) { - $io->write(($name ?: '*') . ' => ' . (is_array($path) ? implode(', ', $path) : ($path ?: '.'))); - } - } elseif ($type === 'classmap') { - $io->write(implode(', ', $autoloads)); - } - } - if ($package->getIncludePaths()) { - $io->write('include-path'); - $io->write(implode(', ', $package->getIncludePaths())); - } - } - } - - /** - * Prints all available versions of this package and highlights the installed one if any. - * - * @param CompletePackageInterface $package - * @param array $versions - * @param RepositoryInterface $installedRepo - */ - protected function printVersions(CompletePackageInterface $package, array $versions, RepositoryInterface $installedRepo) - { - uasort($versions, 'version_compare'); - $versions = array_keys(array_reverse($versions)); - - // highlight installed version - if ($installedRepo->hasPackage($package)) { - $installedVersion = $package->getPrettyVersion(); - $key = array_search($installedVersion, $versions); - if (false !== $key) { - $versions[$key] = '* ' . $installedVersion . ''; - } - } - - $versions = implode(', ', $versions); - - $this->getIO()->write('versions : ' . $versions); - } - - /** - * print link objects - * - * @param CompletePackageInterface $package - * @param string $linkType - * @param string $title - */ - protected function printLinks(CompletePackageInterface $package, $linkType, $title = null) - { - $title = $title ?: $linkType; - $io = $this->getIO(); - if ($links = $package->{'get'.ucfirst($linkType)}()) { - $io->write("\n" . $title . ""); - - foreach ($links as $link) { - $io->write($link->getTarget() . ' ' . $link->getPrettyConstraint() . ''); - } - } - } - - /** - * Prints the licenses of a package with metadata - * - * @param CompletePackageInterface $package - */ - protected function printLicenses(CompletePackageInterface $package) - { - $spdxLicenses = new SpdxLicenses(); - - $licenses = $package->getLicense(); - $io = $this->getIO(); - - foreach ($licenses as $licenseId) { - $license = $spdxLicenses->getLicenseByIdentifier($licenseId); // keys: 0 fullname, 1 osi, 2 url - - if (!$license) { - $out = $licenseId; - } else { - // is license OSI approved? - if ($license[1] === true) { - $out = sprintf('%s (%s) (OSI approved) %s', $license[0], $licenseId, $license[2]); - } else { - $out = sprintf('%s (%s) %s', $license[0], $licenseId, $license[2]); - } - } - - $io->write('license : ' . $out); - } - } - - /** - * Init styles for tree - * - * @param OutputInterface $output - */ - protected function initStyles(OutputInterface $output) - { - $this->colors = array( - 'green', - 'yellow', - 'cyan', - 'magenta', - 'blue', - ); - - foreach ($this->colors as $color) { - $style = new OutputFormatterStyle($color); - $output->getFormatter()->setStyle($color, $style); - } - } - - /** - * Display the tree - * - * @param array $arrayTree - */ - protected function displayPackageTree(array $arrayTree) - { - $io = $this->getIO(); - foreach ($arrayTree as $package) { - $io->write(sprintf('%s', $package['name']), false); - $io->write(' ' . $package['version'], false); - $io->write(' ' . strtok($package['description'], "\r\n")); - - if (isset($package['requires'])) { - $requires = $package['requires']; - $treeBar = '├'; - $j = 0; - $total = count($requires); - foreach ($requires as $require) { - $requireName = $require['name']; - $j++; - if ($j === $total) { - $treeBar = 'â””'; - } - $level = 1; - $color = $this->colors[$level]; - $info = sprintf( - '%s──<%s>%s %s', - $treeBar, - $color, - $requireName, - $color, - $require['version'] - ); - $this->writeTreeLine($info); - - $treeBar = str_replace('â””', ' ', $treeBar); - $packagesInTree = array($package['name'], $requireName); - - $this->displayTree($require, $packagesInTree, $treeBar, $level + 1); - } - } - } - } - - /** - * Generate the package tree - * - * @param PackageInterface $package - * @param RepositoryInterface $installedRepo - * @param RepositoryInterface $distantRepos - * @return array - */ - protected function generatePackageTree( - PackageInterface $package, - RepositoryInterface $installedRepo, - RepositoryInterface $distantRepos - ) { - $requires = $package->getRequires(); - ksort($requires); - $children = array(); - foreach ($requires as $requireName => $require) { - $packagesInTree = array($package->getName(), $requireName); - - $treeChildDesc = array( - 'name' => $requireName, - 'version' => $require->getPrettyConstraint(), - ); - - $deepChildren = $this->addTree($requireName, $require, $installedRepo, $distantRepos, $packagesInTree); - - if ($deepChildren) { - $treeChildDesc['requires'] = $deepChildren; - } - - $children[] = $treeChildDesc; - } - $tree = array( - 'name' => $package->getPrettyName(), - 'version' => $package->getPrettyVersion(), - 'description' => $package->getDescription(), - ); - - if ($children) { - $tree['requires'] = $children; - } - - return $tree; - } - - /** - * Display a package tree - * - * @param PackageInterface|string $package - * @param array $packagesInTree - * @param string $previousTreeBar - * @param int $level - */ - protected function displayTree( - $package, - array $packagesInTree, - $previousTreeBar = '├', - $level = 1 - ) { - $previousTreeBar = str_replace('├', '│', $previousTreeBar); - if (isset($package['requires'])) { - $requires = $package['requires']; - $treeBar = $previousTreeBar . ' ├'; - $i = 0; - $total = count($requires); - foreach ($requires as $require) { - $currentTree = $packagesInTree; - $i++; - if ($i === $total) { - $treeBar = $previousTreeBar . ' â””'; - } - $colorIdent = $level % count($this->colors); - $color = $this->colors[$colorIdent]; - - $circularWarn = in_array( - $require['name'], - $currentTree, - true - ) ? '(circular dependency aborted here)' : ''; - $info = rtrim(sprintf( - '%s──<%s>%s %s %s', - $treeBar, - $color, - $require['name'], - $color, - $require['version'], - $circularWarn - )); - $this->writeTreeLine($info); - - $treeBar = str_replace('â””', ' ', $treeBar); - - $currentTree[] = $require['name']; - $this->displayTree($require, $currentTree, $treeBar, $level + 1); - } - } - } - - /** - * Display a package tree - * - * @param string $name - * @param PackageInterface|string $package - * @param RepositoryInterface $installedRepo - * @param RepositoryInterface $distantRepos - * @param array $packagesInTree - * @return array - */ - protected function addTree( - $name, - $package, - RepositoryInterface $installedRepo, - RepositoryInterface $distantRepos, - array $packagesInTree - ) { - $children = array(); - list($package, $versions) = $this->getPackage( - $installedRepo, - $distantRepos, - $name, - $package->getPrettyConstraint() === 'self.version' ? $package->getConstraint() : $package->getPrettyConstraint() - ); - if (is_object($package)) { - $requires = $package->getRequires(); - ksort($requires); - foreach ($requires as $requireName => $require) { - $currentTree = $packagesInTree; - - $treeChildDesc = array( - 'name' => $requireName, - 'version' => $require->getPrettyConstraint(), - ); - - if (!in_array($requireName, $currentTree, true)) { - $currentTree[] = $requireName; - $deepChildren = $this->addTree($requireName, $require, $installedRepo, $distantRepos, $currentTree); - if ($deepChildren) { - $treeChildDesc['requires'] = $deepChildren; - } - } - - $children[] = $treeChildDesc; - } - } - - return $children; - } - - private function updateStatusToVersionStyle($updateStatus) - { - // 'up-to-date' is printed green - // 'semver-safe-update' is printed red - // 'update-possible' is printed yellow - return str_replace(array('up-to-date', 'semver-safe-update', 'update-possible'), array('info', 'highlight', 'comment'), $updateStatus); - } - - private function getUpdateStatus(PackageInterface $latestPackage, PackageInterface $package) - { - if ($latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion()) { - return 'up-to-date'; - } - - $constraint = $package->getVersion(); - if (0 !== strpos($constraint, 'dev-')) { - $constraint = '^'.$constraint; - } - if ($latestPackage->getVersion() && Semver::satisfies($latestPackage->getVersion(), $constraint)) { - // it needs an immediate semver-compliant upgrade - return 'semver-safe-update'; - } - - // it needs an upgrade but has potential BC breaks so is not urgent - return 'update-possible'; - } - - private function writeTreeLine($line) - { - $io = $this->getIO(); - if (!$io->isDecorated()) { - $line = str_replace(array('â””', '├', '──', '│'), array('`-', '|-', '-', '|'), $line); - } - - $io->write($line); - } - - /** - * Given a package, this finds the latest package matching it - * - * @param PackageInterface $package - * @param Composer $composer - * @param string $phpVersion - * @param bool $minorOnly - * - * @return PackageInterface|null - */ - private function findLatestPackage(PackageInterface $package, Composer $composer, $phpVersion, $minorOnly = false) - { - // find the latest version allowed in this pool - $name = $package->getName(); - $versionSelector = new VersionSelector($this->getPool($composer)); - $stability = $composer->getPackage()->getMinimumStability(); - $flags = $composer->getPackage()->getStabilityFlags(); - if (isset($flags[$name])) { - $stability = array_search($flags[$name], BasePackage::$stabilities, true); - } - - $bestStability = $stability; - if ($composer->getPackage()->getPreferStable()) { - $bestStability = $package->getStability(); - } - - $targetVersion = null; - if (0 === strpos($package->getVersion(), 'dev-')) { - $targetVersion = $package->getVersion(); - } - - if ($targetVersion === null && $minorOnly) { - $targetVersion = '^' . $package->getVersion(); - } - - return $versionSelector->findBestCandidate($name, $targetVersion, $phpVersion, $bestStability); - } - - private function getPool(Composer $composer) - { - if (!$this->pool) { - $this->pool = new Pool($composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags()); - $this->pool->addRepository(new CompositeRepository($composer->getRepositoryManager()->getRepositories())); - } - - return $this->pool; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/StatusCommand.php b/vendor/composer/composer/src/Composer/Command/StatusCommand.php deleted file mode 100644 index 116d5b9..0000000 --- a/vendor/composer/composer/src/Composer/Command/StatusCommand.php +++ /dev/null @@ -1,214 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Composer\Downloader\ChangeReportInterface; -use Composer\Downloader\DvcsDownloaderInterface; -use Composer\Downloader\VcsCapableDownloaderInterface; -use Composer\Package\Dumper\ArrayDumper; -use Composer\Package\Version\VersionGuesser; -use Composer\Package\Version\VersionParser; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Composer\Script\ScriptEvents; -use Composer\Util\ProcessExecutor; - -/** - * @author Tiago Ribeiro - * @author Rui Marinho - */ -class StatusCommand extends BaseCommand -{ - const EXIT_CODE_ERRORS = 1; - const EXIT_CODE_UNPUSHED_CHANGES = 2; - const EXIT_CODE_VERSION_CHANGES = 4; - - /** - * @throws \Symfony\Component\Console\Exception\InvalidArgumentException - */ - protected function configure() - { - $this - ->setName('status') - ->setDescription('Shows a list of locally modified packages, for packages installed from source.') - ->setDefinition(array( - new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Show modified files for each directory that contains changes.'), - )) - ->setHelp( - <<getComposer(); - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'status', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $installedRepo = $composer->getRepositoryManager()->getLocalRepository(); - - $dm = $composer->getDownloadManager(); - $im = $composer->getInstallationManager(); - - // Dispatch pre-status-command - $composer->getEventDispatcher()->dispatchScript(ScriptEvents::PRE_STATUS_CMD, true); - - $errors = array(); - $io = $this->getIO(); - $unpushedChanges = array(); - $vcsVersionChanges = array(); - - $parser = new VersionParser; - $guesser = new VersionGuesser($composer->getConfig(), new ProcessExecutor($io), $parser); - $dumper = new ArrayDumper; - - // list packages - foreach ($installedRepo->getCanonicalPackages() as $package) { - $downloader = $dm->getDownloaderForInstalledPackage($package); - $targetDir = $im->getInstallPath($package); - - if ($downloader instanceof ChangeReportInterface) { - if (is_link($targetDir)) { - $errors[$targetDir] = $targetDir . ' is a symbolic link.'; - } - - if ($changes = $downloader->getLocalChanges($package, $targetDir)) { - $errors[$targetDir] = $changes; - } - } - - if ($downloader instanceof VcsCapableDownloaderInterface) { - if ($currentRef = $downloader->getVcsReference($package, $targetDir)) { - switch ($package->getInstallationSource()) { - case 'source': - $previousRef = $package->getSourceReference(); - break; - case 'dist': - $previousRef = $package->getDistReference(); - break; - default: - $previousRef = null; - } - - $currentVersion = $guesser->guessVersion($dumper->dump($package), $targetDir); - - if ($previousRef && $currentVersion && $currentVersion['commit'] !== $previousRef) { - $vcsVersionChanges[$targetDir] = array( - 'previous' => array( - 'version' => $package->getPrettyVersion(), - 'ref' => $previousRef, - ), - 'current' => array( - 'version' => $currentVersion['pretty_version'], - 'ref' => $currentVersion['commit'], - ), - ); - } - } - } - - if ($downloader instanceof DvcsDownloaderInterface) { - if ($unpushed = $downloader->getUnpushedChanges($package, $targetDir)) { - $unpushedChanges[$targetDir] = $unpushed; - } - } - } - - // output errors/warnings - if (!$errors && !$unpushedChanges && !$vcsVersionChanges) { - $io->writeError('No local changes'); - - return 0; - } - - if ($errors) { - $io->writeError('You have changes in the following dependencies:'); - - foreach ($errors as $path => $changes) { - if ($input->getOption('verbose')) { - $indentedChanges = implode("\n", array_map(function ($line) { - return ' ' . ltrim($line); - }, explode("\n", $changes))); - $io->write(''.$path.':'); - $io->write($indentedChanges); - } else { - $io->write($path); - } - } - } - - if ($unpushedChanges) { - $io->writeError('You have unpushed changes on the current branch in the following dependencies:'); - - foreach ($unpushedChanges as $path => $changes) { - if ($input->getOption('verbose')) { - $indentedChanges = implode("\n", array_map(function ($line) { - return ' ' . ltrim($line); - }, explode("\n", $changes))); - $io->write(''.$path.':'); - $io->write($indentedChanges); - } else { - $io->write($path); - } - } - } - - if ($vcsVersionChanges) { - $io->writeError('You have version variations in the following dependencies:'); - - foreach ($vcsVersionChanges as $path => $changes) { - if ($input->getOption('verbose')) { - // If we don't can't find a version, use the ref instead. - $currentVersion = $changes['current']['version'] ?: $changes['current']['ref']; - $previousVersion = $changes['previous']['version'] ?: $changes['previous']['ref']; - - if ($io->isVeryVerbose()) { - // Output the ref regardless of whether or not it's being used as the version - $currentVersion .= sprintf(' (%s)', $changes['current']['ref']); - $previousVersion .= sprintf(' (%s)', $changes['previous']['ref']); - } - - $io->write(''.$path.':'); - $io->write(sprintf(' From %s to %s', $previousVersion, $currentVersion)); - } else { - $io->write($path); - } - } - } - - if (($errors || $unpushedChanges || $vcsVersionChanges) && !$input->getOption('verbose')) { - $io->writeError('Use --verbose (-v) to see a list of files'); - } - - // Dispatch post-status-command - $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_STATUS_CMD, true); - - return ($errors ? self::EXIT_CODE_ERRORS : 0) + ($unpushedChanges ? self::EXIT_CODE_UNPUSHED_CHANGES : 0) + ($vcsVersionChanges ? self::EXIT_CODE_VERSION_CHANGES : 0); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php b/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php deleted file mode 100644 index add539b..0000000 --- a/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php +++ /dev/null @@ -1,154 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Repository\PlatformRepository; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -class SuggestsCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('suggests') - ->setDescription('Shows package suggestions.') - ->setDefinition(array( - new InputOption('by-package', null, InputOption::VALUE_NONE, 'Groups output by suggesting package'), - new InputOption('by-suggestion', null, InputOption::VALUE_NONE, 'Groups output by suggested package'), - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Exclude suggestions from require-dev packages'), - new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that you want to list suggestions from.'), - )) - ->setHelp( - <<%command.name% command shows a sorted list of suggested packages. - -Enabling -v implies --by-package --by-suggestion, showing both lists. - -Read more at https://getcomposer.org/doc/03-cli.md#suggests -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $lock = $this->getComposer()->getLocker()->getLockData(); - - if (empty($lock)) { - throw new \RuntimeException('Lockfile seems to be empty?'); - } - - $packages = $lock['packages']; - - if (!$input->getOption('no-dev')) { - $packages += $lock['packages-dev']; - } - - $filter = $input->getArgument('packages'); - - // First assemble lookup list of packages that are installed, replaced or provided - $installed = array(); - foreach ($packages as $package) { - $installed[] = $package['name']; - - if (!empty($package['provide'])) { - $installed = array_merge($installed, array_keys($package['provide'])); - } - - if (!empty($package['replace'])) { - $installed = array_merge($installed, array_keys($package['replace'])); - } - } - - // Undub and sort the install list into a sorted lookup array - $installed = array_flip($installed); - ksort($installed); - - // Init platform repo - $platform = new PlatformRepository(array(), $this->getComposer()->getConfig()->get('platform') ?: array()); - - // Next gather all suggestions that are not in that list - $suggesters = array(); - $suggested = array(); - foreach ($packages as $package) { - $packageName = $package['name']; - if ((!empty($filter) && !in_array($packageName, $filter)) || empty($package['suggest'])) { - continue; - } - foreach ($package['suggest'] as $suggestion => $reason) { - if (false === strpos('/', $suggestion) && null !== $platform->findPackage($suggestion, '*')) { - continue; - } - if (!isset($installed[$suggestion])) { - $suggesters[$packageName][$suggestion] = $reason; - $suggested[$suggestion][$packageName] = $reason; - } - } - } - ksort($suggesters); - ksort($suggested); - - // Determine output mode - $mode = 0; - $io = $this->getIO(); - if ($input->getOption('by-package') || $io->isVerbose()) { - $mode |= 1; - } - if ($input->getOption('by-suggestion')) { - $mode |= 2; - } - - // Simple mode - if ($mode === 0) { - foreach (array_keys($suggested) as $suggestion) { - $io->write(sprintf('%s', $suggestion)); - } - - return 0; - } - - // Grouped by package - if ($mode & 1) { - foreach ($suggesters as $suggester => $suggestions) { - $io->write(sprintf('%s suggests:', $suggester)); - - foreach ($suggestions as $suggestion => $reason) { - $io->write(sprintf(' - %s: %s', $suggestion, $reason ?: '*')); - } - $io->write(''); - } - } - - // Grouped by suggestion - if ($mode & 2) { - // Improve readability in full mode - if ($mode & 1) { - $io->write(str_repeat('-', 78)); - } - foreach ($suggested as $suggestion => $suggesters) { - $io->write(sprintf('%s is suggested by:', $suggestion)); - - foreach ($suggesters as $suggester => $reason) { - $io->write(sprintf(' - %s: %s', $suggester, $reason ?: '*')); - } - $io->write(''); - } - } - - return 0; - } -} diff --git a/vendor/composer/composer/src/Composer/Command/UpdateCommand.php b/vendor/composer/composer/src/Composer/Command/UpdateCommand.php deleted file mode 100644 index e68c265..0000000 --- a/vendor/composer/composer/src/Composer/Command/UpdateCommand.php +++ /dev/null @@ -1,228 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Composer; -use Composer\Installer; -use Composer\IO\IOInterface; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Symfony\Component\Console\Helper\Table; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Question\Question; - -/** - * @author Jordi Boggiano - * @author Nils Adermann - */ -class UpdateCommand extends BaseCommand -{ - protected function configure() - { - $this - ->setName('update') - ->setAliases(array('u', 'upgrade')) - ->setDescription('Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file.') - ->setDefinition(array( - new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that should be updated, if not provided all packages are.'), - new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), - new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), - new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), - new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), - new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), - new InputOption('lock', null, InputOption::VALUE_NONE, 'Only updates the lock file hash to suppress warning about the lock file being out of date.'), - new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), - new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), - new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), - new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), - new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'Do not show package suggestions.'), - new InputOption('with-dependencies', null, InputOption::VALUE_NONE, 'Add also dependencies of whitelisted packages to the whitelist, except those defined in root package.'), - new InputOption('with-all-dependencies', null, InputOption::VALUE_NONE, 'Add also all dependencies of whitelisted packages to the whitelist, including those defined in root package.'), - new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), - new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump.'), - new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), - new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), - new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore platform requirements (php & ext- packages).'), - new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies.'), - new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies.'), - new InputOption('interactive', 'i', InputOption::VALUE_NONE, 'Interactive interface with autocompletion to select the packages to update.'), - new InputOption('root-reqs', null, InputOption::VALUE_NONE, 'Restricts the update to your first degree dependencies.'), - )) - ->setHelp( - <<update command reads the composer.json file from the -current directory, processes it, and updates, removes or installs all the -dependencies. - -php composer.phar update - -To limit the update operation to a few packages, you can list the package(s) -you want to update as such: - -php composer.phar update vendor/package1 foo/mypackage [...] - -You may also use an asterisk (*) pattern to limit the update operation to package(s) -from a specific vendor: - -php composer.phar update vendor/package1 foo/* [...] - -To select packages names interactively with auto-completion use -i. - -Read more at https://getcomposer.org/doc/03-cli.md#update-u -EOT - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) - { - $io = $this->getIO(); - if ($input->getOption('no-custom-installers')) { - $io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); - $input->setOption('no-plugins', true); - } - - if ($input->getOption('dev')) { - $io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); - } - - $composer = $this->getComposer(true, $input->getOption('no-plugins')); - - $packages = $input->getArgument('packages'); - - if ($input->getOption('interactive')) { - $packages = $this->getPackagesInteractively($io, $input, $output, $composer, $packages); - } - - if ($input->getOption('root-reqs')) { - $require = array_keys($composer->getPackage()->getRequires()); - if (!$input->getOption('no-dev')) { - $requireDev = array_keys($composer->getPackage()->getDevRequires()); - $require = array_merge($require, $requireDev); - } - - if (!empty($packages)) { - $packages = array_intersect($packages, $require); - } else { - $packages = $require; - } - } - - $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'update', $input, $output); - $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - $install = Installer::create($io, $composer); - - $config = $composer->getConfig(); - list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); - - $optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); - $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); - $apcu = $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); - - $install - ->setDryRun($input->getOption('dry-run')) - ->setVerbose($input->getOption('verbose')) - ->setPreferSource($preferSource) - ->setPreferDist($preferDist) - ->setDevMode(!$input->getOption('no-dev')) - ->setDumpAutoloader(!$input->getOption('no-autoloader')) - ->setRunScripts(!$input->getOption('no-scripts')) - ->setSkipSuggest($input->getOption('no-suggest')) - ->setOptimizeAutoloader($optimize) - ->setClassMapAuthoritative($authoritative) - ->setApcuAutoloader($apcu) - ->setUpdate(true) - ->setUpdateWhitelist($input->getOption('lock') ? array('lock') : $packages) - ->setWhitelistTransitiveDependencies($input->getOption('with-dependencies')) - ->setWhitelistAllDependencies($input->getOption('with-all-dependencies')) - ->setIgnorePlatformRequirements($input->getOption('ignore-platform-reqs')) - ->setPreferStable($input->getOption('prefer-stable')) - ->setPreferLowest($input->getOption('prefer-lowest')) - ; - - if ($input->getOption('no-plugins')) { - $install->disablePlugins(); - } - - return $install->run(); - } - - private function getPackagesInteractively(IOInterface $io, InputInterface $input, OutputInterface $output, Composer $composer, array $packages) - { - if (!$input->isInteractive()) { - throw new \InvalidArgumentException('--interactive cannot be used in non-interactive terminals.'); - } - - $requires = array_merge( - $composer->getPackage()->getRequires(), - $composer->getPackage()->getDevRequires() - ); - $autocompleterValues = array(); - foreach ($requires as $require) { - $target = $require->getTarget(); - $autocompleterValues[strtolower($target)] = $target; - } - - $installedPackages = $composer->getRepositoryManager()->getLocalRepository()->getPackages(); - foreach ($installedPackages as $package) { - $autocompleterValues[$package->getName()] = $package->getPrettyName(); - } - - $helper = $this->getHelper('question'); - $question = new Question('Enter package name: ', null); - - $io->writeError('Press enter without value to end submission'); - - do { - $autocompleterValues = array_diff($autocompleterValues, $packages); - $question->setAutocompleterValues($autocompleterValues); - $addedPackage = $helper->ask($input, $output, $question); - - if (!is_string($addedPackage) || empty($addedPackage)) { - break; - } - - $addedPackage = strtolower($addedPackage); - if (!in_array($addedPackage, $packages)) { - $packages[] = $addedPackage; - } - } while (true); - - $packages = array_filter($packages); - if (!$packages) { - throw new \InvalidArgumentException('You must enter minimum one package.'); - } - - $table = new Table($output); - $table->setHeaders(array('Selected packages')); - foreach ($packages as $package) { - $table->addRow(array($package)); - } - $table->render(); - - if ($io->askConfirmation(sprintf( - 'Would you like to continue and update the above package%s [yes]? ', - 1 === count($packages) ? '' : 's' - ), true)) { - return $packages; - } - - throw new \RuntimeException('Installation aborted.'); - } -} diff --git a/vendor/composer/composer/src/Composer/Command/ValidateCommand.php b/vendor/composer/composer/src/Composer/Command/ValidateCommand.php deleted file mode 100644 index 7ec15cc..0000000 --- a/vendor/composer/composer/src/Composer/Command/ValidateCommand.php +++ /dev/null @@ -1,172 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Command; - -use Composer\Factory; -use Composer\Package\Loader\ValidatingArrayLoader; -use Composer\Plugin\CommandEvent; -use Composer\Plugin\PluginEvents; -use Composer\Util\ConfigValidator; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * ValidateCommand - * - * @author Robert Schönthal - * @author Jordi Boggiano - */ -class ValidateCommand extends BaseCommand -{ - /** - * configure - */ - protected function configure() - { - $this - ->setName('validate') - ->setDescription('Validates a composer.json and composer.lock.') - ->setDefinition(array( - new InputOption('no-check-all', null, InputOption::VALUE_NONE, 'Do not validate requires for overly strict/loose constraints'), - new InputOption('no-check-lock', null, InputOption::VALUE_NONE, 'Do not check if lock file is up to date'), - new InputOption('no-check-publish', null, InputOption::VALUE_NONE, 'Do not check for publish errors'), - new InputOption('with-dependencies', 'A', InputOption::VALUE_NONE, 'Also validate the composer.json of all installed dependencies'), - new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code for warnings as well as errors'), - new InputArgument('file', InputArgument::OPTIONAL, 'path to composer.json file'), - )) - ->setHelp( - <<getArgument('file') ?: Factory::getComposerFile(); - $io = $this->getIO(); - - if (!file_exists($file)) { - $io->writeError('' . $file . ' not found.'); - - return 3; - } - if (!is_readable($file)) { - $io->writeError('' . $file . ' is not readable.'); - - return 3; - } - - $validator = new ConfigValidator($io); - $checkAll = $input->getOption('no-check-all') ? 0 : ValidatingArrayLoader::CHECK_ALL; - $checkPublish = !$input->getOption('no-check-publish'); - $checkLock = !$input->getOption('no-check-lock'); - $isStrict = $input->getOption('strict'); - list($errors, $publishErrors, $warnings) = $validator->validate($file, $checkAll); - - $lockErrors = array(); - $composer = Factory::create($io, $file, $input->hasParameterOption('--no-plugins')); - $locker = $composer->getLocker(); - if ($locker->isLocked() && !$locker->isFresh()) { - $lockErrors[] = 'The lock file is not up to date with the latest changes in composer.json, it is recommended that you run `composer update` or `composer update `.'; - } - - $this->outputResult($io, $file, $errors, $warnings, $checkPublish, $publishErrors, $checkLock, $lockErrors, true, $isStrict); - - // $errors include publish and lock errors when exists - $exitCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); - - if ($input->getOption('with-dependencies')) { - $localRepo = $composer->getRepositoryManager()->getLocalRepository(); - foreach ($localRepo->getPackages() as $package) { - $path = $composer->getInstallationManager()->getInstallPath($package); - $file = $path . '/composer.json'; - if (is_dir($path) && file_exists($file)) { - list($errors, $publishErrors, $warnings) = $validator->validate($file, $checkAll); - $this->outputResult($io, $package->getPrettyName(), $errors, $warnings, $checkPublish, $publishErrors); - - $depCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); - $exitCode = max($depCode, $exitCode); - } - } - } - - $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'validate', $input, $output); - $eventCode = $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - $exitCode = max($eventCode, $exitCode); - - return $exitCode; - } - - private function outputResult($io, $name, &$errors, &$warnings, $checkPublish = false, $publishErrors = array(), $checkLock = false, $lockErrors = array(), $printSchemaUrl = false, $isStrict = false) - { - if (!$errors && !$publishErrors && !$warnings) { - $io->write('' . $name . ' is valid'); - } elseif (!$errors && !$publishErrors) { - $io->writeError('' . $name . ' is valid, but with a few warnings'); - if ($printSchemaUrl) { - $io->writeError('See https://getcomposer.org/doc/04-schema.md for details on the schema'); - } - } elseif (!$errors) { - $io->writeError('' . $name . ' is valid for simple usage with composer but has'); - $io->writeError('strict errors that make it unable to be published as a package:'); - if ($printSchemaUrl) { - $io->writeError('See https://getcomposer.org/doc/04-schema.md for details on the schema'); - } - } else { - $io->writeError('' . $name . ' is invalid, the following errors/warnings were found:'); - } - - // If checking publish errors, display them as errors, otherwise just show them as warnings - // Skip when it is a strict check and we don't want to check publish errors - if ($checkPublish) { - $errors = array_merge($errors, $publishErrors); - } elseif (!$isStrict) { - $warnings = array_merge($warnings, $publishErrors); - } - - // If checking lock errors, display them as errors, otherwise just show them as warnings - // Skip when it is a strict check and we don't want to check lock errors - if ($checkLock) { - $errors = array_merge($errors, $lockErrors); - } elseif (!$isStrict) { - $warnings = array_merge($warnings, $lockErrors); - } - - $messages = array( - 'error' => $errors, - 'warning' => $warnings, - ); - - foreach ($messages as $style => $msgs) { - foreach ($msgs as $msg) { - $io->writeError('<' . $style . '>' . $msg . ''); - } - } - } -} diff --git a/vendor/composer/composer/src/Composer/Compiler.php b/vendor/composer/composer/src/Composer/Compiler.php deleted file mode 100644 index 2c763d0..0000000 --- a/vendor/composer/composer/src/Composer/Compiler.php +++ /dev/null @@ -1,284 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Json\JsonFile; -use Composer\Spdx\SpdxLicenses; -use Composer\CaBundle\CaBundle; -use Symfony\Component\Finder\Finder; -use Symfony\Component\Process\Process; -use Seld\PharUtils\Timestamps; - -/** - * The Compiler class compiles composer into a phar - * - * @author Fabien Potencier - * @author Jordi Boggiano - */ -class Compiler -{ - private $version; - private $branchAliasVersion = ''; - private $versionDate; - - /** - * Compiles composer into a single phar file - * - * @param string $pharFile The full path to the file to create - * @throws \RuntimeException - */ - public function compile($pharFile = 'composer.phar') - { - if (file_exists($pharFile)) { - unlink($pharFile); - } - - $process = new Process('git log --pretty="%H" -n1 HEAD', __DIR__); - if ($process->run() != 0) { - throw new \RuntimeException('Can\'t run git log. You must ensure to run compile from composer git repository clone and that git binary is available.'); - } - $this->version = trim($process->getOutput()); - - $process = new Process('git log -n1 --pretty=%ci HEAD', __DIR__); - if ($process->run() != 0) { - throw new \RuntimeException('Can\'t run git log. You must ensure to run compile from composer git repository clone and that git binary is available.'); - } - - $this->versionDate = new \DateTime(trim($process->getOutput())); - $this->versionDate->setTimezone(new \DateTimeZone('UTC')); - - $process = new Process('git describe --tags --exact-match HEAD'); - if ($process->run() == 0) { - $this->version = trim($process->getOutput()); - } else { - // get branch-alias defined in composer.json for dev-master (if any) - $localConfig = __DIR__.'/../../composer.json'; - $file = new JsonFile($localConfig); - $localConfig = $file->read(); - if (isset($localConfig['extra']['branch-alias']['dev-master'])) { - $this->branchAliasVersion = $localConfig['extra']['branch-alias']['dev-master']; - } - } - - $phar = new \Phar($pharFile, 0, 'composer.phar'); - $phar->setSignatureAlgorithm(\Phar::SHA1); - - $phar->startBuffering(); - - $finderSort = function ($a, $b) { - return strcmp(strtr($a->getRealPath(), '\\', '/'), strtr($b->getRealPath(), '\\', '/')); - }; - - $finder = new Finder(); - $finder->files() - ->ignoreVCS(true) - ->name('*.php') - ->notName('Compiler.php') - ->notName('ClassLoader.php') - ->in(__DIR__.'/..') - ->sort($finderSort) - ; - - foreach ($finder as $file) { - $this->addFile($phar, $file); - } - $this->addFile($phar, new \SplFileInfo(__DIR__ . '/Autoload/ClassLoader.php'), false); - - $finder = new Finder(); - $finder->files() - ->name('*.json') - ->in(__DIR__.'/../../res') - ->in(SpdxLicenses::getResourcesDir()) - ->sort($finderSort) - ; - - foreach ($finder as $file) { - $this->addFile($phar, $file, false); - } - $this->addFile($phar, new \SplFileInfo(__DIR__ . '/../../vendor/symfony/console/Resources/bin/hiddeninput.exe'), false); - - $finder = new Finder(); - $finder->files() - ->ignoreVCS(true) - ->name('*.php') - ->name('LICENSE') - ->exclude('Tests') - ->exclude('tests') - ->exclude('docs') - ->in(__DIR__.'/../../vendor/symfony/') - ->in(__DIR__.'/../../vendor/seld/jsonlint/') - ->in(__DIR__.'/../../vendor/justinrainbow/json-schema/') - ->in(__DIR__.'/../../vendor/composer/spdx-licenses/') - ->in(__DIR__.'/../../vendor/composer/semver/') - ->in(__DIR__.'/../../vendor/composer/ca-bundle/') - ->in(__DIR__.'/../../vendor/composer/xdebug-handler/') - ->in(__DIR__.'/../../vendor/psr/') - ->sort($finderSort) - ; - - foreach ($finder as $file) { - $this->addFile($phar, $file); - } - - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/autoload.php')); - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_namespaces.php')); - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_psr4.php')); - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_classmap.php')); - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_files.php')); - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_real.php')); - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/autoload_static.php')); - if (file_exists(__DIR__.'/../../vendor/composer/include_paths.php')) { - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/include_paths.php')); - } - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../vendor/composer/ClassLoader.php')); - - $this->addFile($phar, new \SplFileInfo(CaBundle::getBundledCaBundlePath()), false); - - $this->addComposerBin($phar); - - // Stubs - $phar->setStub($this->getStub()); - - $phar->stopBuffering(); - - // disabled for interoperability with systems without gzip ext - // $phar->compressFiles(\Phar::GZ); - - $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../LICENSE'), false); - - unset($phar); - - // re-sign the phar with reproducible timestamp / signature - $util = new Timestamps($pharFile); - $util->updateTimestamps($this->versionDate); - $util->save($pharFile, \Phar::SHA1); - } - - /** - * @param \SplFileInfo $file - * @return string - */ - private function getRelativeFilePath($file) - { - $realPath = $file->getRealPath(); - $pathPrefix = dirname(dirname(__DIR__)).DIRECTORY_SEPARATOR; - - $pos = strpos($realPath, $pathPrefix); - $relativePath = ($pos !== false) ? substr_replace($realPath, '', $pos, strlen($pathPrefix)) : $realPath; - - return strtr($relativePath, '\\', '/'); - } - - private function addFile($phar, $file, $strip = true) - { - $path = $this->getRelativeFilePath($file); - $content = file_get_contents($file); - if ($strip) { - $content = $this->stripWhitespace($content); - } elseif ('LICENSE' === basename($file)) { - $content = "\n".$content."\n"; - } - - if ($path === 'src/Composer/Composer.php') { - $content = str_replace('@package_version@', $this->version, $content); - $content = str_replace('@package_branch_alias_version@', $this->branchAliasVersion, $content); - $content = str_replace('@release_date@', $this->versionDate->format('Y-m-d H:i:s'), $content); - $content = preg_replace('{SOURCE_VERSION = \'[^\']+\';}', 'SOURCE_VERSION = \'\';', $content); - } - - $phar->addFromString($path, $content); - } - - private function addComposerBin($phar) - { - $content = file_get_contents(__DIR__.'/../../bin/composer'); - $content = preg_replace('{^#!/usr/bin/env php\s*}', '', $content); - $phar->addFromString('bin/composer', $content); - } - - /** - * Removes whitespace from a PHP source string while preserving line numbers. - * - * @param string $source A PHP string - * @return string The PHP string with the whitespace removed - */ - private function stripWhitespace($source) - { - if (!function_exists('token_get_all')) { - return $source; - } - - $output = ''; - foreach (token_get_all($source) as $token) { - if (is_string($token)) { - $output .= $token; - } elseif (in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) { - $output .= str_repeat("\n", substr_count($token[1], "\n")); - } elseif (T_WHITESPACE === $token[0]) { - // reduce wide spaces - $whitespace = preg_replace('{[ \t]+}', ' ', $token[1]); - // normalize newlines to \n - $whitespace = preg_replace('{(?:\r\n|\r|\n)}', "\n", $whitespace); - // trim leading spaces - $whitespace = preg_replace('{\n +}', "\n", $whitespace); - $output .= $whitespace; - } else { - $output .= $token[1]; - } - } - - return $output; - } - - private function getStub() - { - $stub = <<<'EOF' -#!/usr/bin/env php - - * Jordi Boggiano - * - * For the full copyright and license information, please view - * the license that is located at the bottom of this file. - */ - -// Avoid APC causing random fatal errors per https://github.com/composer/composer/issues/264 -if (extension_loaded('apc') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN) && filter_var(ini_get('apc.cache_by_default'), FILTER_VALIDATE_BOOLEAN)) { - if (version_compare(phpversion('apc'), '3.0.12', '>=')) { - ini_set('apc.cache_by_default', 0); - } else { - fwrite(STDERR, 'Warning: APC <= 3.0.12 may cause fatal errors when running composer commands.'.PHP_EOL); - fwrite(STDERR, 'Update APC, or set apc.enable_cli or apc.cache_by_default to 0 in your php.ini.'.PHP_EOL); - } -} - -Phar::mapPhar('composer.phar'); - -EOF; - - // add warning once the phar is older than 60 days - if (preg_match('{^[a-f0-9]+$}', $this->version)) { - $warningTime = $this->versionDate->format('U') + 60 * 86400; - $stub .= "define('COMPOSER_DEV_WARNING_TIME', $warningTime);\n"; - } - - return $stub . <<<'EOF' -require 'phar://composer.phar/bin/composer'; - -__HALT_COMPILER(); -EOF; - } -} diff --git a/vendor/composer/composer/src/Composer/Composer.php b/vendor/composer/composer/src/Composer/Composer.php deleted file mode 100644 index 35cd782..0000000 --- a/vendor/composer/composer/src/Composer/Composer.php +++ /dev/null @@ -1,283 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Package\RootPackageInterface; -use Composer\Package\Locker; -use Composer\Repository\RepositoryManager; -use Composer\Installer\InstallationManager; -use Composer\Plugin\PluginManager; -use Composer\Downloader\DownloadManager; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Autoload\AutoloadGenerator; -use Composer\Package\Archiver\ArchiveManager; - -/** - * @author Jordi Boggiano - * @author Konstantin Kudryashiv - * @author Nils Adermann - */ -class Composer -{ - /* - * Examples of the following constants in the various configurations they can be in - * - * releases (phar): - * const VERSION = '1.8.2'; - * const BRANCH_ALIAS_VERSION = ''; - * const RELEASE_DATE = '2019-01-29 15:00:53'; - * const SOURCE_VERSION = ''; - * - * snapshot builds (phar): - * const VERSION = 'd3873a05650e168251067d9648845c220c50e2d7'; - * const BRANCH_ALIAS_VERSION = '1.9-dev'; - * const RELEASE_DATE = '2019-02-20 07:43:56'; - * const SOURCE_VERSION = ''; - * - * source (git clone): - * const VERSION = '1.9.3'; - * const BRANCH_ALIAS_VERSION = ''; - * const RELEASE_DATE = '2020-02-04 12:58:49'; - * const SOURCE_VERSION = '1.8-dev+source'; - */ - const VERSION = '1.9.3'; - const BRANCH_ALIAS_VERSION = ''; - const RELEASE_DATE = '2020-02-04 12:58:49'; - const SOURCE_VERSION = '1.9-dev+source'; - - public static function getVersion() - { - // no replacement done, this must be a source checkout - if (self::VERSION === '@package_version'.'@') { - return self::SOURCE_VERSION; - } - - // we have a branch alias and version is a commit id, this must be a snapshot build - if (self::BRANCH_ALIAS_VERSION !== '' && preg_match('{^[a-f0-9]{40}$}', self::VERSION)) { - return self::BRANCH_ALIAS_VERSION.'+'.self::VERSION; - } - - return self::VERSION; - } - - /** - * @var Package\RootPackageInterface - */ - private $package; - - /** - * @var Locker - */ - private $locker; - - /** - * @var Repository\RepositoryManager - */ - private $repositoryManager; - - /** - * @var Downloader\DownloadManager - */ - private $downloadManager; - - /** - * @var Installer\InstallationManager - */ - private $installationManager; - - /** - * @var Plugin\PluginManager - */ - private $pluginManager; - - /** - * @var Config - */ - private $config; - - /** - * @var EventDispatcher - */ - private $eventDispatcher; - - /** - * @var Autoload\AutoloadGenerator - */ - private $autoloadGenerator; - - /** - * @var ArchiveManager - */ - private $archiveManager; - - /** - * @param Package\RootPackageInterface $package - * @return void - */ - public function setPackage(RootPackageInterface $package) - { - $this->package = $package; - } - - /** - * @return Package\RootPackageInterface - */ - public function getPackage() - { - return $this->package; - } - - /** - * @param Config $config - */ - public function setConfig(Config $config) - { - $this->config = $config; - } - - /** - * @return Config - */ - public function getConfig() - { - return $this->config; - } - - /** - * @param Package\Locker $locker - */ - public function setLocker(Locker $locker) - { - $this->locker = $locker; - } - - /** - * @return Package\Locker - */ - public function getLocker() - { - return $this->locker; - } - - /** - * @param Repository\RepositoryManager $manager - */ - public function setRepositoryManager(RepositoryManager $manager) - { - $this->repositoryManager = $manager; - } - - /** - * @return Repository\RepositoryManager - */ - public function getRepositoryManager() - { - return $this->repositoryManager; - } - - /** - * @param Downloader\DownloadManager $manager - */ - public function setDownloadManager(DownloadManager $manager) - { - $this->downloadManager = $manager; - } - - /** - * @return Downloader\DownloadManager - */ - public function getDownloadManager() - { - return $this->downloadManager; - } - - /** - * @param ArchiveManager $manager - */ - public function setArchiveManager(ArchiveManager $manager) - { - $this->archiveManager = $manager; - } - - /** - * @return ArchiveManager - */ - public function getArchiveManager() - { - return $this->archiveManager; - } - - /** - * @param Installer\InstallationManager $manager - */ - public function setInstallationManager(InstallationManager $manager) - { - $this->installationManager = $manager; - } - - /** - * @return Installer\InstallationManager - */ - public function getInstallationManager() - { - return $this->installationManager; - } - - /** - * @param Plugin\PluginManager $manager - */ - public function setPluginManager(PluginManager $manager) - { - $this->pluginManager = $manager; - } - - /** - * @return Plugin\PluginManager - */ - public function getPluginManager() - { - return $this->pluginManager; - } - - /** - * @param EventDispatcher $eventDispatcher - */ - public function setEventDispatcher(EventDispatcher $eventDispatcher) - { - $this->eventDispatcher = $eventDispatcher; - } - - /** - * @return EventDispatcher - */ - public function getEventDispatcher() - { - return $this->eventDispatcher; - } - - /** - * @param Autoload\AutoloadGenerator $autoloadGenerator - */ - public function setAutoloadGenerator(AutoloadGenerator $autoloadGenerator) - { - $this->autoloadGenerator = $autoloadGenerator; - } - - /** - * @return Autoload\AutoloadGenerator - */ - public function getAutoloadGenerator() - { - return $this->autoloadGenerator; - } -} diff --git a/vendor/composer/composer/src/Composer/Config.php b/vendor/composer/composer/src/Composer/Config.php deleted file mode 100644 index 7abca7d..0000000 --- a/vendor/composer/composer/src/Composer/Config.php +++ /dev/null @@ -1,479 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Config\ConfigSourceInterface; -use Composer\Downloader\TransportException; -use Composer\IO\IOInterface; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; - -/** - * @author Jordi Boggiano - */ -class Config -{ - const RELATIVE_PATHS = 1; - - public static $defaultConfig = array( - 'process-timeout' => 300, - 'use-include-path' => false, - 'preferred-install' => 'auto', - 'notify-on-install' => true, - 'github-protocols' => array('https', 'ssh', 'git'), - 'vendor-dir' => 'vendor', - 'bin-dir' => '{$vendor-dir}/bin', - 'cache-dir' => '{$home}/cache', - 'data-dir' => '{$home}', - 'cache-files-dir' => '{$cache-dir}/files', - 'cache-repo-dir' => '{$cache-dir}/repo', - 'cache-vcs-dir' => '{$cache-dir}/vcs', - 'cache-ttl' => 15552000, // 6 months - 'cache-files-ttl' => null, // fallback to cache-ttl - 'cache-files-maxsize' => '300MiB', - 'bin-compat' => 'auto', - 'discard-changes' => false, - 'autoloader-suffix' => null, - 'sort-packages' => false, - 'optimize-autoloader' => false, - 'classmap-authoritative' => false, - 'apcu-autoloader' => false, - 'prepend-autoloader' => true, - 'github-domains' => array('github.com'), - 'bitbucket-expose-hostname' => true, - 'disable-tls' => false, - 'secure-http' => true, - 'cafile' => null, - 'capath' => null, - 'github-expose-hostname' => true, - 'gitlab-domains' => array('gitlab.com'), - 'store-auths' => 'prompt', - 'platform' => array(), - 'archive-format' => 'tar', - 'archive-dir' => '.', - 'htaccess-protect' => true, - 'use-github-api' => true, - // valid keys without defaults (auth config stuff): - // bitbucket-oauth - // github-oauth - // gitlab-oauth - // gitlab-token - // http-basic - ); - - public static $defaultRepositories = array( - 'packagist.org' => array( - 'type' => 'composer', - 'url' => 'https?://repo.packagist.org', - 'allow_ssl_downgrade' => true, - ), - ); - - private $config; - private $baseDir; - private $repositories; - /** @var ConfigSourceInterface */ - private $configSource; - /** @var ConfigSourceInterface */ - private $authConfigSource; - private $useEnvironment; - private $warnedHosts = array(); - - /** - * @param bool $useEnvironment Use COMPOSER_ environment variables to replace config settings - * @param string $baseDir Optional base directory of the config - */ - public function __construct($useEnvironment = true, $baseDir = null) - { - // load defaults - $this->config = static::$defaultConfig; - $this->repositories = static::$defaultRepositories; - $this->useEnvironment = (bool) $useEnvironment; - $this->baseDir = $baseDir; - } - - public function setConfigSource(ConfigSourceInterface $source) - { - $this->configSource = $source; - } - - public function getConfigSource() - { - return $this->configSource; - } - - public function setAuthConfigSource(ConfigSourceInterface $source) - { - $this->authConfigSource = $source; - } - - public function getAuthConfigSource() - { - return $this->authConfigSource; - } - - /** - * Merges new config values with the existing ones (overriding) - * - * @param array $config - */ - public function merge($config) - { - // override defaults with given config - if (!empty($config['config']) && is_array($config['config'])) { - foreach ($config['config'] as $key => $val) { - if (in_array($key, array('bitbucket-oauth', 'github-oauth', 'gitlab-oauth', 'gitlab-token', 'http-basic')) && isset($this->config[$key])) { - $this->config[$key] = array_merge($this->config[$key], $val); - } elseif ('preferred-install' === $key && isset($this->config[$key])) { - if (is_array($val) || is_array($this->config[$key])) { - if (is_string($val)) { - $val = array('*' => $val); - } - if (is_string($this->config[$key])) { - $this->config[$key] = array('*' => $this->config[$key]); - } - $this->config[$key] = array_merge($this->config[$key], $val); - // the full match pattern needs to be last - if (isset($this->config[$key]['*'])) { - $wildcard = $this->config[$key]['*']; - unset($this->config[$key]['*']); - $this->config[$key]['*'] = $wildcard; - } - } else { - $this->config[$key] = $val; - } - } else { - $this->config[$key] = $val; - } - } - } - - if (!empty($config['repositories']) && is_array($config['repositories'])) { - $this->repositories = array_reverse($this->repositories, true); - $newRepos = array_reverse($config['repositories'], true); - foreach ($newRepos as $name => $repository) { - // disable a repository by name - if (false === $repository) { - $this->disableRepoByName($name); - continue; - } - - // disable a repository with an anonymous {"name": false} repo - if (is_array($repository) && 1 === count($repository) && false === current($repository)) { - $this->disableRepoByName(key($repository)); - continue; - } - - // store repo - if (is_int($name)) { - $this->repositories[] = $repository; - } else { - if ($name === 'packagist') { // BC support for default "packagist" named repo - $this->repositories[$name . '.org'] = $repository; - } else { - $this->repositories[$name] = $repository; - } - } - } - $this->repositories = array_reverse($this->repositories, true); - } - } - - /** - * @return array - */ - public function getRepositories() - { - return $this->repositories; - } - - /** - * Returns a setting - * - * @param string $key - * @param int $flags Options (see class constants) - * @throws \RuntimeException - * @return mixed - */ - public function get($key, $flags = 0) - { - switch ($key) { - case 'vendor-dir': - case 'bin-dir': - case 'process-timeout': - case 'data-dir': - case 'cache-dir': - case 'cache-files-dir': - case 'cache-repo-dir': - case 'cache-vcs-dir': - case 'cafile': - case 'capath': - // convert foo-bar to COMPOSER_FOO_BAR and check if it exists since it overrides the local config - $env = 'COMPOSER_' . strtoupper(strtr($key, '-', '_')); - - $val = $this->getComposerEnv($env); - $val = rtrim((string) $this->process(false !== $val ? $val : $this->config[$key], $flags), '/\\'); - $val = Platform::expandPath($val); - - if (substr($key, -4) !== '-dir') { - return $val; - } - - return (($flags & self::RELATIVE_PATHS) == self::RELATIVE_PATHS) ? $val : $this->realpath($val); - - case 'htaccess-protect': - $value = $this->getComposerEnv('COMPOSER_HTACCESS_PROTECT'); - if (false === $value) { - $value = $this->config[$key]; - } - return $value !== 'false' && (bool) $value; - - case 'cache-ttl': - return (int) $this->config[$key]; - - case 'cache-files-maxsize': - if (!preg_match('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', $this->config[$key], $matches)) { - throw new \RuntimeException( - "Could not parse the value of 'cache-files-maxsize': {$this->config[$key]}" - ); - } - $size = $matches[1]; - if (isset($matches[2])) { - switch (strtolower($matches[2])) { - case 'g': - $size *= 1024; - // intentional fallthrough - // no break - case 'm': - $size *= 1024; - // intentional fallthrough - // no break - case 'k': - $size *= 1024; - break; - } - } - - return $size; - - case 'cache-files-ttl': - if (isset($this->config[$key])) { - return (int) $this->config[$key]; - } - - return (int) $this->config['cache-ttl']; - - case 'home': - $val = preg_replace('#^(\$HOME|~)(/|$)#', rtrim(getenv('HOME') ?: getenv('USERPROFILE'), '/\\') . '/', $this->config[$key]); - - return rtrim($this->process($val, $flags), '/\\'); - - case 'bin-compat': - $value = $this->getComposerEnv('COMPOSER_BIN_COMPAT') ?: $this->config[$key]; - - if (!in_array($value, array('auto', 'full'))) { - throw new \RuntimeException( - "Invalid value for 'bin-compat': {$value}. Expected auto, full" - ); - } - - return $value; - - case 'discard-changes': - if ($env = $this->getComposerEnv('COMPOSER_DISCARD_CHANGES')) { - if (!in_array($env, array('stash', 'true', 'false', '1', '0'), true)) { - throw new \RuntimeException( - "Invalid value for COMPOSER_DISCARD_CHANGES: {$env}. Expected 1, 0, true, false or stash" - ); - } - if ('stash' === $env) { - return 'stash'; - } - - // convert string value to bool - return $env !== 'false' && (bool) $env; - } - - if (!in_array($this->config[$key], array(true, false, 'stash'), true)) { - throw new \RuntimeException( - "Invalid value for 'discard-changes': {$this->config[$key]}. Expected true, false or stash" - ); - } - - return $this->config[$key]; - - case 'github-protocols': - $protos = $this->config['github-protocols']; - if ($this->config['secure-http'] && false !== ($index = array_search('git', $protos))) { - unset($protos[$index]); - } - if (reset($protos) === 'http') { - throw new \RuntimeException('The http protocol for github is not available anymore, update your config\'s github-protocols to use "https", "git" or "ssh"'); - } - - return $protos; - - case 'disable-tls': - return $this->config[$key] !== 'false' && (bool) $this->config[$key]; - case 'secure-http': - return $this->config[$key] !== 'false' && (bool) $this->config[$key]; - case 'use-github-api': - return $this->config[$key] !== 'false' && (bool) $this->config[$key]; - default: - if (!isset($this->config[$key])) { - return null; - } - - return $this->process($this->config[$key], $flags); - } - } - - public function all($flags = 0) - { - $all = array( - 'repositories' => $this->getRepositories(), - ); - foreach (array_keys($this->config) as $key) { - $all['config'][$key] = $this->get($key, $flags); - } - - return $all; - } - - public function raw() - { - return array( - 'repositories' => $this->getRepositories(), - 'config' => $this->config, - ); - } - - /** - * Checks whether a setting exists - * - * @param string $key - * @return bool - */ - public function has($key) - { - return array_key_exists($key, $this->config); - } - - /** - * Replaces {$refs} inside a config string - * - * @param string|int|null $value a config string that can contain {$refs-to-other-config} - * @param int $flags Options (see class constants) - * @return string|int|null - */ - private function process($value, $flags) - { - $config = $this; - - if (!is_string($value)) { - return $value; - } - - return preg_replace_callback('#\{\$(.+)\}#', function ($match) use ($config, $flags) { - return $config->get($match[1], $flags); - }, $value); - } - - /** - * Turns relative paths in absolute paths without realpath() - * - * Since the dirs might not exist yet we can not call realpath or it will fail. - * - * @param string $path - * @return string - */ - private function realpath($path) - { - if (preg_match('{^(?:/|[a-z]:|[a-z0-9.]+://)}i', $path)) { - return $path; - } - - return $this->baseDir . '/' . $path; - } - - /** - * Reads the value of a Composer environment variable - * - * This should be used to read COMPOSER_ environment variables - * that overload config values. - * - * @param string $var - * @return string|bool - */ - private function getComposerEnv($var) - { - if ($this->useEnvironment) { - return getenv($var); - } - - return false; - } - - private function disableRepoByName($name) - { - if (isset($this->repositories[$name])) { - unset($this->repositories[$name]); - } elseif ($name === 'packagist') { // BC support for default "packagist" named repo - unset($this->repositories['packagist.org']); - } - } - - /** - * Validates that the passed URL is allowed to be used by current config, or throws an exception. - * - * @param string $url - * @param IOInterface $io - */ - public function prohibitUrlByConfig($url, IOInterface $io = null) - { - // Return right away if the URL is malformed or custom (see issue #5173) - if (false === filter_var($url, FILTER_VALIDATE_URL)) { - return; - } - - // Extract scheme and throw exception on known insecure protocols - $scheme = parse_url($url, PHP_URL_SCHEME); - if (in_array($scheme, array('http', 'git', 'ftp', 'svn'))) { - if ($this->get('secure-http')) { - throw new TransportException("Your configuration does not allow connections to $url. See https://getcomposer.org/doc/06-config.md#secure-http for details."); - } elseif ($io) { - $host = parse_url($url, PHP_URL_HOST); - if (!isset($this->warnedHosts[$host])) { - $io->writeError("Warning: Accessing $host over $scheme which is an insecure protocol."); - } - $this->warnedHosts[$host] = true; - } - } - } - - /** - * Used by long-running custom scripts in composer.json - * - * "scripts": { - * "watch": [ - * "Composer\\Config::disableProcessTimeout", - * "vendor/bin/long-running-script --watch" - * ] - * } - */ - public static function disableProcessTimeout() - { - // Override global timeout set earlier by environment or config - ProcessExecutor::setTimeout(0); - } -} diff --git a/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php b/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php deleted file mode 100644 index 0d56fc0..0000000 --- a/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Config; - -/** - * Configuration Source Interface - * - * @author Jordi Boggiano - * @author Beau Simensen - */ -interface ConfigSourceInterface -{ - /** - * Add a repository - * - * @param string $name Name - * @param array $config Configuration - */ - public function addRepository($name, $config); - - /** - * Remove a repository - * - * @param string $name - */ - public function removeRepository($name); - - /** - * Add a config setting - * - * @param string $name Name - * @param string $value Value - */ - public function addConfigSetting($name, $value); - - /** - * Remove a config setting - * - * @param string $name - */ - public function removeConfigSetting($name); - - /** - * Add a property - * - * @param string $name Name - * @param string $value Value - */ - public function addProperty($name, $value); - - /** - * Remove a property - * - * @param string $name - */ - public function removeProperty($name); - - /** - * Add a package link - * - * @param string $type Type (require, require-dev, provide, suggest, replace, conflict) - * @param string $name Name - * @param string $value Value - */ - public function addLink($type, $name, $value); - - /** - * Remove a package link - * - * @param string $type Type (require, require-dev, provide, suggest, replace, conflict) - * @param string $name Name - */ - public function removeLink($type, $name); - - /** - * Gives a user-friendly name to this source (file path or so) - * - * @return string - */ - public function getName(); -} diff --git a/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php b/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php deleted file mode 100644 index 15d40d2..0000000 --- a/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php +++ /dev/null @@ -1,271 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Config; - -use Composer\Json\JsonFile; -use Composer\Json\JsonManipulator; -use Composer\Util\Silencer; - -/** - * JSON Configuration Source - * - * @author Jordi Boggiano - * @author Beau Simensen - */ -class JsonConfigSource implements ConfigSourceInterface -{ - /** - * @var JsonFile - */ - private $file; - - /** - * @var bool - */ - private $authConfig; - - /** - * Constructor - * - * @param JsonFile $file - * @param bool $authConfig - */ - public function __construct(JsonFile $file, $authConfig = false) - { - $this->file = $file; - $this->authConfig = $authConfig; - } - - /** - * {@inheritdoc} - */ - public function getName() - { - return $this->file->getPath(); - } - - /** - * {@inheritdoc} - */ - public function addRepository($name, $config) - { - $this->manipulateJson('addRepository', $name, $config, function (&$config, $repo, $repoConfig) { - // if converting from an array format to hashmap format, and there is a {"packagist.org":false} repo, we have - // to convert it to "packagist.org": false key on the hashmap otherwise it fails schema validation - if (isset($config['repositories'])) { - foreach ($config['repositories'] as $index => $val) { - if ($index === $repo) { - continue; - } - if (is_numeric($index) && ($val === array('packagist' => false) || $val === array('packagist.org' => false))) { - unset($config['repositories'][$index]); - $config['repositories']['packagist.org'] = false; - break; - } - } - } - - $config['repositories'][$repo] = $repoConfig; - }); - } - - /** - * {@inheritdoc} - */ - public function removeRepository($name) - { - $this->manipulateJson('removeRepository', $name, function (&$config, $repo) { - unset($config['repositories'][$repo]); - }); - } - - /** - * {@inheritdoc} - */ - public function addConfigSetting($name, $value) - { - $authConfig = $this->authConfig; - $this->manipulateJson('addConfigSetting', $name, $value, function (&$config, $key, $val) use ($authConfig) { - if (preg_match('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic|platform)\.}', $key)) { - list($key, $host) = explode('.', $key, 2); - if ($authConfig) { - $config[$key][$host] = $val; - } else { - $config['config'][$key][$host] = $val; - } - } else { - $config['config'][$key] = $val; - } - }); - } - - /** - * {@inheritdoc} - */ - public function removeConfigSetting($name) - { - $authConfig = $this->authConfig; - $this->manipulateJson('removeConfigSetting', $name, function (&$config, $key) use ($authConfig) { - if (preg_match('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic|platform)\.}', $key)) { - list($key, $host) = explode('.', $key, 2); - if ($authConfig) { - unset($config[$key][$host]); - } else { - unset($config['config'][$key][$host]); - } - } else { - unset($config['config'][$key]); - } - }); - } - - /** - * {@inheritdoc} - */ - public function addProperty($name, $value) - { - $this->manipulateJson('addProperty', $name, $value, function (&$config, $key, $val) { - if (substr($key, 0, 6) === 'extra.' || substr($key, 0, 8) === 'scripts.') { - $bits = explode('.', $key); - $last = array_pop($bits); - $arr = &$config[reset($bits)]; - foreach ($bits as $bit) { - if (!isset($arr[$bit])) { - $arr[$bit] = array(); - } - $arr = &$arr[$bit]; - } - $arr[$last] = $val; - } else { - $config[$key] = $val; - } - }); - } - - /** - * {@inheritdoc} - */ - public function removeProperty($name) - { - $authConfig = $this->authConfig; - $this->manipulateJson('removeProperty', $name, function (&$config, $key) { - if (substr($key, 0, 6) === 'extra.' || substr($key, 0, 8) === 'scripts.') { - $bits = explode('.', $key); - $last = array_pop($bits); - $arr = &$config[reset($bits)]; - foreach ($bits as $bit) { - if (!isset($arr[$bit])) { - return; - } - $arr = &$arr[$bit]; - } - unset($arr[$last]); - } else { - unset($config[$key]); - } - }); - } - - /** - * {@inheritdoc} - */ - public function addLink($type, $name, $value) - { - $this->manipulateJson('addLink', $type, $name, $value, function (&$config, $type, $name, $value) { - $config[$type][$name] = $value; - }); - } - - /** - * {@inheritdoc} - */ - public function removeLink($type, $name) - { - $this->manipulateJson('removeSubNode', $type, $name, function (&$config, $type, $name) { - unset($config[$type][$name]); - - if (0 === count($config[$type])) { - unset($config[$type]); - } - }); - } - - protected function manipulateJson($method, $args, $fallback) - { - $args = func_get_args(); - // remove method & fallback - array_shift($args); - $fallback = array_pop($args); - - if ($this->file->exists()) { - if (!is_writable($this->file->getPath())) { - throw new \RuntimeException(sprintf('The file "%s" is not writable.', $this->file->getPath())); - } - - if (!is_readable($this->file->getPath())) { - throw new \RuntimeException(sprintf('The file "%s" is not readable.', $this->file->getPath())); - } - - $contents = file_get_contents($this->file->getPath()); - } elseif ($this->authConfig) { - $contents = "{\n}\n"; - } else { - $contents = "{\n \"config\": {\n }\n}\n"; - } - - $manipulator = new JsonManipulator($contents); - - $newFile = !$this->file->exists(); - - // override manipulator method for auth config files - if ($this->authConfig && $method === 'addConfigSetting') { - $method = 'addSubNode'; - list($mainNode, $name) = explode('.', $args[0], 2); - $args = array($mainNode, $name, $args[1]); - } elseif ($this->authConfig && $method === 'removeConfigSetting') { - $method = 'removeSubNode'; - list($mainNode, $name) = explode('.', $args[0], 2); - $args = array($mainNode, $name); - } - - // try to update cleanly - if (call_user_func_array(array($manipulator, $method), $args)) { - file_put_contents($this->file->getPath(), $manipulator->getContents()); - } else { - // on failed clean update, call the fallback and rewrite the whole file - $config = $this->file->read(); - $this->arrayUnshiftRef($args, $config); - call_user_func_array($fallback, $args); - $this->file->write($config); - } - - if ($newFile) { - Silencer::call('chmod', $this->file->getPath(), 0600); - } - } - - /** - * Prepend a reference to an element to the beginning of an array. - * - * @param array $array - * @param mixed $value - * @return array - */ - private function arrayUnshiftRef(&$array, &$value) - { - $return = array_unshift($array, ''); - $array[0] = &$value; - - return $return; - } -} diff --git a/vendor/composer/composer/src/Composer/Console/Application.php b/vendor/composer/composer/src/Composer/Console/Application.php deleted file mode 100644 index e45ea80..0000000 --- a/vendor/composer/composer/src/Composer/Console/Application.php +++ /dev/null @@ -1,494 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Console; - -use Composer\IO\NullIO; -use Composer\Util\Platform; -use Composer\Util\Silencer; -use Symfony\Component\Console\Application as BaseApplication; -use Symfony\Component\Console\Exception\CommandNotFoundException; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Helper\QuestionHelper; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Composer\Command; -use Composer\Composer; -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\IO\ConsoleIO; -use Composer\Json\JsonValidationException; -use Composer\Util\ErrorHandler; -use Composer\EventDispatcher\ScriptExecutionException; -use Composer\Exception\NoSslException; - -/** - * The console application that handles the commands - * - * @author Ryan Weaver - * @author Jordi Boggiano - * @author François Pluchino - */ -class Application extends BaseApplication -{ - /** - * @var Composer - */ - protected $composer; - - /** - * @var IOInterface - */ - protected $io; - - private static $logo = ' ______ - / ____/___ ____ ___ ____ ____ ________ _____ - / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ -/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / -\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ - /_/ -'; - - private $hasPluginCommands = false; - private $disablePluginsByDefault = false; - - public function __construct() - { - static $shutdownRegistered = false; - - if (function_exists('ini_set') && extension_loaded('xdebug')) { - ini_set('xdebug.show_exception_trace', false); - ini_set('xdebug.scream', false); - } - - if (function_exists('date_default_timezone_set') && function_exists('date_default_timezone_get')) { - date_default_timezone_set(Silencer::call('date_default_timezone_get')); - } - - if (!$shutdownRegistered) { - $shutdownRegistered = true; - - register_shutdown_function(function () { - $lastError = error_get_last(); - - if ($lastError && $lastError['message'] && - (strpos($lastError['message'], 'Allowed memory') !== false /*Zend PHP out of memory error*/ || - strpos($lastError['message'], 'exceeded memory') !== false /*HHVM out of memory errors*/)) { - echo "\n". 'Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.'; - } - }); - } - - $this->io = new NullIO(); - - parent::__construct('Composer', Composer::getVersion()); - } - - /** - * {@inheritDoc} - */ - public function run(InputInterface $input = null, OutputInterface $output = null) - { - if (null === $output) { - $output = Factory::createOutput(); - } - - return parent::run($input, $output); - } - - /** - * {@inheritDoc} - */ - public function doRun(InputInterface $input, OutputInterface $output) - { - $this->disablePluginsByDefault = $input->hasParameterOption('--no-plugins'); - - if (getenv('COMPOSER_NO_INTERACTION')) { - $input->setInteractive(false); - } - - $io = $this->io = new ConsoleIO($input, $output, new HelperSet(array( - new QuestionHelper(), - ))); - ErrorHandler::register($io); - - if ($input->hasParameterOption('--no-cache')) { - $io->writeError('Disabling cache usage', true, IOInterface::DEBUG); - putenv('COMPOSER_CACHE_DIR='.(Platform::isWindows() ? 'nul' : '/dev/null')); - } - - // switch working dir - if ($newWorkDir = $this->getNewWorkingDir($input)) { - $oldWorkingDir = getcwd(); - chdir($newWorkDir); - $io->writeError('Changed CWD to ' . getcwd(), true, IOInterface::DEBUG); - } - - // determine command name to be executed without including plugin commands - $commandName = ''; - if ($name = $this->getCommandName($input)) { - try { - $commandName = $this->find($name)->getName(); - } catch (CommandNotFoundException $e) { - // we'll check command validity again later after plugins are loaded - $commandName = false; - } catch (\InvalidArgumentException $e) { - } - } - - // prompt user for dir change if no composer.json is present in current dir - if ($io->isInteractive() && !$newWorkDir && !in_array($commandName, array('', 'list', 'init', 'about', 'help', 'diagnose', 'self-update', 'global', 'create-project'), true) && !file_exists(Factory::getComposerFile())) { - $dir = dirname(getcwd()); - $home = realpath(getenv('HOME') ?: getenv('USERPROFILE') ?: '/'); - - // abort when we reach the home dir or top of the filesystem - while (dirname($dir) !== $dir && $dir !== $home) { - if (file_exists($dir.'/'.Factory::getComposerFile())) { - if ($io->askConfirmation('No composer.json in current directory, do you want to use the one at '.$dir.'? [Y,n]? ', true)) { - $oldWorkingDir = getcwd(); - chdir($dir); - } - break; - } - $dir = dirname($dir); - } - } - - if (!$this->disablePluginsByDefault && !$this->hasPluginCommands && 'global' !== $commandName) { - try { - foreach ($this->getPluginCommands() as $command) { - if ($this->has($command->getName())) { - $io->writeError('Plugin command '.$command->getName().' ('.get_class($command).') would override a Composer command and has been skipped'); - } else { - $this->add($command); - } - } - } catch (NoSslException $e) { - // suppress these as they are not relevant at this point - } - - $this->hasPluginCommands = true; - } - - // determine command name to be executed incl plugin commands, and check if it's a proxy command - $isProxyCommand = false; - if ($name = $this->getCommandName($input)) { - try { - $command = $this->find($name); - $commandName = $command->getName(); - $isProxyCommand = ($command instanceof Command\BaseCommand && $command->isProxyCommand()); - } catch (\InvalidArgumentException $e) { - } - } - - if (!$isProxyCommand) { - $io->writeError(sprintf( - 'Running %s (%s) with %s on %s', - Composer::getVersion(), - Composer::RELEASE_DATE, - defined('HHVM_VERSION') ? 'HHVM '.HHVM_VERSION : 'PHP '.PHP_VERSION, - function_exists('php_uname') ? php_uname('s') . ' / ' . php_uname('r') : 'Unknown OS' - ), true, IOInterface::DEBUG); - - if (PHP_VERSION_ID < 50302) { - $io->writeError('Composer only officially supports PHP 5.3.2 and above, you will most likely encounter problems with your PHP '.PHP_VERSION.', upgrading is strongly recommended.'); - } - - if (extension_loaded('xdebug') && !getenv('COMPOSER_DISABLE_XDEBUG_WARN')) { - $io->writeError('You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug'); - } - - if (defined('COMPOSER_DEV_WARNING_TIME') && $commandName !== 'self-update' && $commandName !== 'selfupdate' && time() > COMPOSER_DEV_WARNING_TIME) { - $io->writeError(sprintf('Warning: This development build of composer is over 60 days old. It is recommended to update it by running "%s self-update" to get the latest version.', $_SERVER['PHP_SELF'])); - } - - if (!Platform::isWindows() && function_exists('exec') && !getenv('COMPOSER_ALLOW_SUPERUSER') && !file_exists('/.dockerenv')) { - if (function_exists('posix_getuid') && posix_getuid() === 0) { - if ($commandName !== 'self-update' && $commandName !== 'selfupdate') { - $io->writeError('Do not run Composer as root/super user! See https://getcomposer.org/root for details'); - } - if ($uid = (int) getenv('SUDO_UID')) { - // Silently clobber any sudo credentials on the invoking user to avoid privilege escalations later on - // ref. https://github.com/composer/composer/issues/5119 - Silencer::call('exec', "sudo -u \\#{$uid} sudo -K > /dev/null 2>&1"); - } - } - // Silently clobber any remaining sudo leases on the current user as well to avoid privilege escalations - Silencer::call('exec', 'sudo -K > /dev/null 2>&1'); - } - - // Check system temp folder for usability as it can cause weird runtime issues otherwise - Silencer::call(function () use ($io) { - $tempfile = sys_get_temp_dir() . '/temp-' . md5(microtime()); - if (!(file_put_contents($tempfile, __FILE__) && (file_get_contents($tempfile) == __FILE__) && unlink($tempfile) && !file_exists($tempfile))) { - $io->writeError(sprintf('PHP temp directory (%s) does not exist or is not writable to Composer. Set sys_temp_dir in your php.ini', sys_get_temp_dir())); - } - }); - - // add non-standard scripts as own commands - $file = Factory::getComposerFile(); - if (is_file($file) && is_readable($file) && is_array($composer = json_decode(file_get_contents($file), true))) { - if (isset($composer['scripts']) && is_array($composer['scripts'])) { - foreach ($composer['scripts'] as $script => $dummy) { - if (!defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { - if ($this->has($script)) { - $io->writeError('A script named '.$script.' would override a Composer command and has been skipped'); - } else { - $description = null; - - if (isset($composer['scripts-descriptions'][$script])) { - $description = $composer['scripts-descriptions'][$script]; - } - - $this->add(new Command\ScriptAliasCommand($script, $description)); - } - } - } - } - } - } - - try { - if ($input->hasParameterOption('--profile')) { - $startTime = microtime(true); - $this->io->enableDebugging($startTime); - } - - $result = parent::doRun($input, $output); - - if (isset($oldWorkingDir)) { - chdir($oldWorkingDir); - } - - if (isset($startTime)) { - $io->writeError('Memory usage: '.round(memory_get_usage() / 1024 / 1024, 2).'MiB (peak: '.round(memory_get_peak_usage() / 1024 / 1024, 2).'MiB), time: '.round(microtime(true) - $startTime, 2).'s'); - } - - restore_error_handler(); - - return $result; - } catch (ScriptExecutionException $e) { - return $e->getCode(); - } catch (\Exception $e) { - $this->hintCommonErrors($e); - restore_error_handler(); - throw $e; - } - } - - /** - * @param InputInterface $input - * @throws \RuntimeException - * @return string - */ - private function getNewWorkingDir(InputInterface $input) - { - $workingDir = $input->getParameterOption(array('--working-dir', '-d')); - if (false !== $workingDir && !is_dir($workingDir)) { - throw new \RuntimeException('Invalid working directory specified, '.$workingDir.' does not exist.'); - } - - return $workingDir; - } - - /** - * {@inheritDoc} - */ - private function hintCommonErrors($exception) - { - $io = $this->getIO(); - - Silencer::suppress(); - try { - $composer = $this->getComposer(false, true); - if ($composer) { - $config = $composer->getConfig(); - - $minSpaceFree = 1024 * 1024; - if ((($df = disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) - || (($df = disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) - || (($df = disk_free_space($dir = sys_get_temp_dir())) !== false && $df < $minSpaceFree) - ) { - $io->writeError('The disk hosting '.$dir.' is full, this may be the cause of the following exception', true, IOInterface::QUIET); - } - } - } catch (\Exception $e) { - } - Silencer::restore(); - - if (Platform::isWindows() && false !== strpos($exception->getMessage(), 'The system cannot find the path specified')) { - $io->writeError('The following exception may be caused by a stale entry in your cmd.exe AutoRun', true, IOInterface::QUIET); - $io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#-the-system-cannot-find-the-path-specified-windows- for details', true, IOInterface::QUIET); - } - - if (false !== strpos($exception->getMessage(), 'fork failed - Cannot allocate memory')) { - $io->writeError('The following exception is caused by a lack of memory or swap, or not having swap configured', true, IOInterface::QUIET); - $io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details', true, IOInterface::QUIET); - } - } - - /** - * @param bool $required - * @param bool|null $disablePlugins - * @throws JsonValidationException - * @return \Composer\Composer - */ - public function getComposer($required = true, $disablePlugins = null) - { - if (null === $disablePlugins) { - $disablePlugins = $this->disablePluginsByDefault; - } - - if (null === $this->composer) { - try { - $this->composer = Factory::create($this->io, null, $disablePlugins); - } catch (\InvalidArgumentException $e) { - if ($required) { - $this->io->writeError($e->getMessage()); - exit(1); - } - } catch (JsonValidationException $e) { - $errors = ' - ' . implode(PHP_EOL . ' - ', $e->getErrors()); - $message = $e->getMessage() . ':' . PHP_EOL . $errors; - throw new JsonValidationException($message); - } - } - - return $this->composer; - } - - /** - * Removes the cached composer instance - */ - public function resetComposer() - { - $this->composer = null; - if ($this->getIO() && method_exists($this->getIO(), 'resetAuthentications')) { - $this->getIO()->resetAuthentications(); - } - } - - /** - * @return IOInterface - */ - public function getIO() - { - return $this->io; - } - - public function getHelp() - { - return self::$logo . parent::getHelp(); - } - - /** - * Initializes all the composer commands. - */ - protected function getDefaultCommands() - { - $commands = array_merge(parent::getDefaultCommands(), array( - new Command\AboutCommand(), - new Command\ConfigCommand(), - new Command\DependsCommand(), - new Command\ProhibitsCommand(), - new Command\InitCommand(), - new Command\InstallCommand(), - new Command\CreateProjectCommand(), - new Command\UpdateCommand(), - new Command\SearchCommand(), - new Command\ValidateCommand(), - new Command\ShowCommand(), - new Command\SuggestsCommand(), - new Command\RequireCommand(), - new Command\DumpAutoloadCommand(), - new Command\StatusCommand(), - new Command\ArchiveCommand(), - new Command\DiagnoseCommand(), - new Command\RunScriptCommand(), - new Command\LicensesCommand(), - new Command\GlobalCommand(), - new Command\ClearCacheCommand(), - new Command\RemoveCommand(), - new Command\HomeCommand(), - new Command\ExecCommand(), - new Command\OutdatedCommand(), - new Command\CheckPlatformReqsCommand(), - )); - - if ('phar:' === substr(__FILE__, 0, 5)) { - $commands[] = new Command\SelfUpdateCommand(); - } - - return $commands; - } - - /** - * {@inheritDoc} - */ - public function getLongVersion() - { - if (Composer::BRANCH_ALIAS_VERSION && Composer::BRANCH_ALIAS_VERSION !== '@package_branch_alias_version'.'@') { - return sprintf( - '%s version %s (%s) %s', - $this->getName(), - Composer::BRANCH_ALIAS_VERSION, - $this->getVersion(), - Composer::RELEASE_DATE - ); - } - - return parent::getLongVersion() . ' ' . Composer::RELEASE_DATE; - } - - /** - * {@inheritDoc} - */ - protected function getDefaultInputDefinition() - { - $definition = parent::getDefaultInputDefinition(); - $definition->addOption(new InputOption('--profile', null, InputOption::VALUE_NONE, 'Display timing and memory usage information')); - $definition->addOption(new InputOption('--no-plugins', null, InputOption::VALUE_NONE, 'Whether to disable plugins.')); - $definition->addOption(new InputOption('--working-dir', '-d', InputOption::VALUE_REQUIRED, 'If specified, use the given directory as working directory.')); - $definition->addOption(new InputOption('--no-cache', null, InputOption::VALUE_NONE, 'Prevent use of the cache')); - - return $definition; - } - - private function getPluginCommands() - { - $commands = array(); - - $composer = $this->getComposer(false, false); - if (null === $composer) { - $composer = Factory::createGlobal($this->io, false); - } - - if (null !== $composer) { - $pm = $composer->getPluginManager(); - foreach ($pm->getPluginCapabilities('Composer\Plugin\Capability\CommandProvider', array('composer' => $composer, 'io' => $this->io)) as $capability) { - $newCommands = $capability->getCommands(); - if (!is_array($newCommands)) { - throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' failed to return an array from getCommands'); - } - foreach ($newCommands as $command) { - if (!$command instanceof Command\BaseCommand) { - throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' returned an invalid value, we expected an array of Composer\Command\BaseCommand objects'); - } - } - $commands = array_merge($commands, $newCommands); - } - } - - return $commands; - } -} diff --git a/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php b/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php deleted file mode 100644 index 994fcbc..0000000 --- a/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php +++ /dev/null @@ -1,90 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Console; - -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * @author Jordi Boggiano - */ -class HtmlOutputFormatter extends OutputFormatter -{ - private static $availableForegroundColors = array( - 30 => 'black', - 31 => 'red', - 32 => 'green', - 33 => 'yellow', - 34 => 'blue', - 35 => 'magenta', - 36 => 'cyan', - 37 => 'white', - ); - private static $availableBackgroundColors = array( - 40 => 'black', - 41 => 'red', - 42 => 'green', - 43 => 'yellow', - 44 => 'blue', - 45 => 'magenta', - 46 => 'cyan', - 47 => 'white', - ); - private static $availableOptions = array( - 1 => 'bold', - 4 => 'underscore', - //5 => 'blink', - //7 => 'reverse', - //8 => 'conceal' - ); - - /** - * @param array $styles Array of "name => FormatterStyle" instances - */ - public function __construct(array $styles = array()) - { - parent::__construct(true, $styles); - } - - public function format($message) - { - $formatted = parent::format($message); - - $clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)'; - - return preg_replace_callback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", array($this, 'formatHtml'), $formatted); - } - - private function formatHtml($matches) - { - $out = ''.$matches[2].''; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php b/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php deleted file mode 100644 index 86b62c3..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php +++ /dev/null @@ -1,211 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -/** - * Stores decisions on installing, removing or keeping packages - * - * @author Nils Adermann - */ -class Decisions implements \Iterator, \Countable -{ - const DECISION_LITERAL = 0; - const DECISION_REASON = 1; - - protected $pool; - protected $decisionMap; - protected $decisionQueue = array(); - - public function __construct($pool) - { - $this->pool = $pool; - $this->decisionMap = array(); - } - - public function decide($literal, $level, $why) - { - $this->addDecision($literal, $level); - $this->decisionQueue[] = array( - self::DECISION_LITERAL => $literal, - self::DECISION_REASON => $why, - ); - } - - public function satisfy($literal) - { - $packageId = abs($literal); - - return ( - $literal > 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 || - $literal < 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 - ); - } - - public function conflict($literal) - { - $packageId = abs($literal); - - return ( - (isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 && $literal < 0) || - (isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 && $literal > 0) - ); - } - - public function decided($literalOrPackageId) - { - return !empty($this->decisionMap[abs($literalOrPackageId)]); - } - - public function undecided($literalOrPackageId) - { - return empty($this->decisionMap[abs($literalOrPackageId)]); - } - - public function decidedInstall($literalOrPackageId) - { - $packageId = abs($literalOrPackageId); - - return isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0; - } - - public function decisionLevel($literalOrPackageId) - { - $packageId = abs($literalOrPackageId); - if (isset($this->decisionMap[$packageId])) { - return abs($this->decisionMap[$packageId]); - } - - return 0; - } - - public function decisionRule($literalOrPackageId) - { - $packageId = abs($literalOrPackageId); - - foreach ($this->decisionQueue as $i => $decision) { - if ($packageId === abs($decision[self::DECISION_LITERAL])) { - return $decision[self::DECISION_REASON]; - } - } - - return null; - } - - public function atOffset($queueOffset) - { - return $this->decisionQueue[$queueOffset]; - } - - public function validOffset($queueOffset) - { - return $queueOffset >= 0 && $queueOffset < count($this->decisionQueue); - } - - public function lastReason() - { - return $this->decisionQueue[count($this->decisionQueue) - 1][self::DECISION_REASON]; - } - - public function lastLiteral() - { - return $this->decisionQueue[count($this->decisionQueue) - 1][self::DECISION_LITERAL]; - } - - public function reset() - { - while ($decision = array_pop($this->decisionQueue)) { - $this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; - } - } - - public function resetToOffset($offset) - { - while (count($this->decisionQueue) > $offset + 1) { - $decision = array_pop($this->decisionQueue); - $this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; - } - } - - public function revertLast() - { - $this->decisionMap[abs($this->lastLiteral())] = 0; - array_pop($this->decisionQueue); - } - - public function count() - { - return count($this->decisionQueue); - } - - public function rewind() - { - end($this->decisionQueue); - } - - public function current() - { - return current($this->decisionQueue); - } - - public function key() - { - return key($this->decisionQueue); - } - - public function next() - { - return prev($this->decisionQueue); - } - - public function valid() - { - return false !== current($this->decisionQueue); - } - - public function isEmpty() - { - return count($this->decisionQueue) === 0; - } - - protected function addDecision($literal, $level) - { - $packageId = abs($literal); - - $previousDecision = isset($this->decisionMap[$packageId]) ? $this->decisionMap[$packageId] : null; - if ($previousDecision != 0) { - $literalString = $this->pool->literalToString($literal); - $package = $this->pool->literalToPackage($literal); - throw new SolverBugException( - "Trying to decide $literalString on level $level, even though $package was previously decided as ".(int) $previousDecision."." - ); - } - - if ($literal > 0) { - $this->decisionMap[$packageId] = $level; - } else { - $this->decisionMap[$packageId] = -$level; - } - } - - public function __toString() - { - $decisionMap = $this->decisionMap; - ksort($decisionMap); - $str = '['; - foreach ($decisionMap as $packageId => $level) { - $str .= $packageId.':'.$level.','; - } - $str .= ']'; - return $str; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php b/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php deleted file mode 100644 index 542c6e6..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php +++ /dev/null @@ -1,285 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\PackageInterface; -use Composer\Package\AliasPackage; -use Composer\Package\BasePackage; -use Composer\Semver\Constraint\Constraint; - -/** - * @author Nils Adermann - * @author Jordi Boggiano - */ -class DefaultPolicy implements PolicyInterface -{ - private $preferStable; - private $preferLowest; - - public function __construct($preferStable = false, $preferLowest = false) - { - $this->preferStable = $preferStable; - $this->preferLowest = $preferLowest; - } - - public function versionCompare(PackageInterface $a, PackageInterface $b, $operator) - { - if ($this->preferStable && ($stabA = $a->getStability()) !== ($stabB = $b->getStability())) { - return BasePackage::$stabilities[$stabA] < BasePackage::$stabilities[$stabB]; - } - - $constraint = new Constraint($operator, $b->getVersion()); - $version = new Constraint('==', $a->getVersion()); - - return $constraint->matchSpecific($version, true); - } - - public function findUpdatePackages(Pool $pool, array $installedMap, PackageInterface $package, $mustMatchName = false) - { - $packages = array(); - - foreach ($pool->whatProvides($package->getName(), null, $mustMatchName) as $candidate) { - if ($candidate !== $package) { - $packages[] = $candidate; - } - } - - return $packages; - } - - public function getPriority(Pool $pool, PackageInterface $package) - { - return $pool->getPriority($package->getRepository()); - } - - public function selectPreferredPackages(Pool $pool, array $installedMap, array $literals, $requiredPackage = null) - { - $packages = $this->groupLiteralsByNamePreferInstalled($pool, $installedMap, $literals); - - foreach ($packages as &$literals) { - $policy = $this; - usort($literals, function ($a, $b) use ($policy, $pool, $installedMap, $requiredPackage) { - return $policy->compareByPriorityPreferInstalled($pool, $installedMap, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage, true); - }); - } - - foreach ($packages as &$literals) { - $literals = $this->pruneToHighestPriorityOrInstalled($pool, $installedMap, $literals); - - $literals = $this->pruneToBestVersion($pool, $literals); - - $literals = $this->pruneRemoteAliases($pool, $literals); - } - - $selected = call_user_func_array('array_merge', $packages); - - // now sort the result across all packages to respect replaces across packages - usort($selected, function ($a, $b) use ($policy, $pool, $installedMap, $requiredPackage) { - return $policy->compareByPriorityPreferInstalled($pool, $installedMap, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage); - }); - - return $selected; - } - - protected function groupLiteralsByNamePreferInstalled(Pool $pool, array $installedMap, $literals) - { - $packages = array(); - foreach ($literals as $literal) { - $packageName = $pool->literalToPackage($literal)->getName(); - - if (!isset($packages[$packageName])) { - $packages[$packageName] = array(); - } - - if (isset($installedMap[abs($literal)])) { - array_unshift($packages[$packageName], $literal); - } else { - $packages[$packageName][] = $literal; - } - } - - return $packages; - } - - /** - * @protected - */ - public function compareByPriorityPreferInstalled(Pool $pool, array $installedMap, PackageInterface $a, PackageInterface $b, $requiredPackage = null, $ignoreReplace = false) - { - if ($a->getRepository() === $b->getRepository()) { - // prefer aliases to the original package - if ($a->getName() === $b->getName()) { - $aAliased = $a instanceof AliasPackage; - $bAliased = $b instanceof AliasPackage; - if ($aAliased && !$bAliased) { - return -1; // use a - } - if (!$aAliased && $bAliased) { - return 1; // use b - } - } - - if (!$ignoreReplace) { - // return original, not replaced - if ($this->replaces($a, $b)) { - return 1; // use b - } - if ($this->replaces($b, $a)) { - return -1; // use a - } - - // for replacers not replacing each other, put a higher prio on replacing - // packages with the same vendor as the required package - if ($requiredPackage && false !== ($pos = strpos($requiredPackage, '/'))) { - $requiredVendor = substr($requiredPackage, 0, $pos); - - $aIsSameVendor = substr($a->getName(), 0, $pos) === $requiredVendor; - $bIsSameVendor = substr($b->getName(), 0, $pos) === $requiredVendor; - - if ($bIsSameVendor !== $aIsSameVendor) { - return $aIsSameVendor ? -1 : 1; - } - } - } - - // priority equal, sort by package id to make reproducible - if ($a->id === $b->id) { - return 0; - } - - return ($a->id < $b->id) ? -1 : 1; - } - - if (isset($installedMap[$a->id])) { - return -1; - } - - if (isset($installedMap[$b->id])) { - return 1; - } - - return ($this->getPriority($pool, $a) > $this->getPriority($pool, $b)) ? -1 : 1; - } - - /** - * Checks if source replaces a package with the same name as target. - * - * Replace constraints are ignored. This method should only be used for - * prioritisation, not for actual constraint verification. - * - * @param PackageInterface $source - * @param PackageInterface $target - * @return bool - */ - protected function replaces(PackageInterface $source, PackageInterface $target) - { - foreach ($source->getReplaces() as $link) { - if ($link->getTarget() === $target->getName() -// && (null === $link->getConstraint() || -// $link->getConstraint()->matches(new Constraint('==', $target->getVersion())))) { - ) { - return true; - } - } - - return false; - } - - protected function pruneToBestVersion(Pool $pool, $literals) - { - $operator = $this->preferLowest ? '<' : '>'; - $bestLiterals = array($literals[0]); - $bestPackage = $pool->literalToPackage($literals[0]); - foreach ($literals as $i => $literal) { - if (0 === $i) { - continue; - } - - $package = $pool->literalToPackage($literal); - - if ($this->versionCompare($package, $bestPackage, $operator)) { - $bestPackage = $package; - $bestLiterals = array($literal); - } elseif ($this->versionCompare($package, $bestPackage, '==')) { - $bestLiterals[] = $literal; - } - } - - return $bestLiterals; - } - - /** - * Assumes that installed packages come first and then all highest priority packages - */ - protected function pruneToHighestPriorityOrInstalled(Pool $pool, array $installedMap, array $literals) - { - $selected = array(); - - $priority = null; - - foreach ($literals as $literal) { - $package = $pool->literalToPackage($literal); - - if (isset($installedMap[$package->id])) { - $selected[] = $literal; - continue; - } - - if (null === $priority) { - $priority = $this->getPriority($pool, $package); - } - - if ($this->getPriority($pool, $package) != $priority) { - break; - } - - $selected[] = $literal; - } - - return $selected; - } - - /** - * Assumes that locally aliased (in root package requires) packages take priority over branch-alias ones - * - * If no package is a local alias, nothing happens - */ - protected function pruneRemoteAliases(Pool $pool, array $literals) - { - $hasLocalAlias = false; - - foreach ($literals as $literal) { - $package = $pool->literalToPackage($literal); - - if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { - $hasLocalAlias = true; - break; - } - } - - if (!$hasLocalAlias) { - return $literals; - } - - $selected = array(); - foreach ($literals as $literal) { - $package = $pool->literalToPackage($literal); - - if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { - $selected[] = $literal; - } - } - - return $selected; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php b/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php deleted file mode 100644 index df8a2a0..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\PackageInterface; -use Composer\Package\Link; - -/** - * @author Nils Adermann - */ -class GenericRule extends Rule -{ - protected $literals; - - /** - * @param array $literals - * @param int $reason A RULE_* constant describing the reason for generating this rule - * @param Link|PackageInterface $reasonData - * @param array $job The job this rule was created from - */ - public function __construct(array $literals, $reason, $reasonData, $job = null) - { - parent::__construct($reason, $reasonData, $job); - - // sort all packages ascending by id - sort($literals); - - $this->literals = $literals; - } - - public function getLiterals() - { - return $this->literals; - } - - public function getHash() - { - $data = unpack('ihash', md5(implode(',', $this->literals), true)); - - return $data['hash']; - } - - /** - * Checks if this rule is equal to another one - * - * Ignores whether either of the rules is disabled. - * - * @param Rule $rule The rule to check against - * @return bool Whether the rules are equal - */ - public function equals(Rule $rule) - { - return $this->literals === $rule->getLiterals(); - } - - public function isAssertion() - { - return 1 === count($this->literals); - } - - /** - * Formats a rule as a string of the format (Literal1|Literal2|...) - * - * @return string - */ - public function __toString() - { - $result = $this->isDisabled() ? 'disabled(' : '('; - - foreach ($this->literals as $i => $literal) { - if ($i != 0) { - $result .= '|'; - } - $result .= $literal; - } - - $result .= ')'; - - return $result; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php deleted file mode 100644 index 08c659c..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver\Operation; - -use Composer\Package\PackageInterface; - -/** - * Solver install operation. - * - * @author Konstantin Kudryashov - */ -class InstallOperation extends SolverOperation -{ - protected $package; - - /** - * Initializes operation. - * - * @param PackageInterface $package package instance - * @param string $reason operation reason - */ - public function __construct(PackageInterface $package, $reason = null) - { - parent::__construct($reason); - - $this->package = $package; - } - - /** - * Returns package instance. - * - * @return PackageInterface - */ - public function getPackage() - { - return $this->package; - } - - /** - * Returns job type. - * - * @return string - */ - public function getJobType() - { - return 'install'; - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - return 'Installing '.$this->package->getPrettyName().' ('.$this->formatVersion($this->package).')'; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php deleted file mode 100644 index 920e54e..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver\Operation; - -use Composer\Package\AliasPackage; -use Composer\Package\PackageInterface; - -/** - * Solver install operation. - * - * @author Nils Adermann - */ -class MarkAliasInstalledOperation extends SolverOperation -{ - protected $package; - - /** - * Initializes operation. - * - * @param AliasPackage $package package instance - * @param string $reason operation reason - */ - public function __construct(AliasPackage $package, $reason = null) - { - parent::__construct($reason); - - $this->package = $package; - } - - /** - * Returns package instance. - * - * @return PackageInterface - */ - public function getPackage() - { - return $this->package; - } - - /** - * Returns job type. - * - * @return string - */ - public function getJobType() - { - return 'markAliasInstalled'; - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - return 'Marking '.$this->package->getPrettyName().' ('.$this->formatVersion($this->package).') as installed, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->formatVersion($this->package->getAliasOf()).')'; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php deleted file mode 100644 index 77f3aef..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver\Operation; - -use Composer\Package\AliasPackage; -use Composer\Package\PackageInterface; - -/** - * Solver install operation. - * - * @author Nils Adermann - */ -class MarkAliasUninstalledOperation extends SolverOperation -{ - protected $package; - - /** - * Initializes operation. - * - * @param AliasPackage $package package instance - * @param string $reason operation reason - */ - public function __construct(AliasPackage $package, $reason = null) - { - parent::__construct($reason); - - $this->package = $package; - } - - /** - * Returns package instance. - * - * @return PackageInterface - */ - public function getPackage() - { - return $this->package; - } - - /** - * Returns job type. - * - * @return string - */ - public function getJobType() - { - return 'markAliasUninstalled'; - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - return 'Marking '.$this->package->getPrettyName().' ('.$this->formatVersion($this->package).') as uninstalled, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->formatVersion($this->package->getAliasOf()).')'; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php deleted file mode 100644 index 330cbce..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php +++ /dev/null @@ -1,42 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver\Operation; - -/** - * Solver operation interface. - * - * @author Konstantin Kudryashov - */ -interface OperationInterface -{ - /** - * Returns job type. - * - * @return string - */ - public function getJobType(); - - /** - * Returns operation reason. - * - * @return string - */ - public function getReason(); - - /** - * Serializes the operation in a human readable format - * - * @return string - */ - public function __toString(); -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php deleted file mode 100644 index e1a6858..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver\Operation; - -use Composer\Package\PackageInterface; - -/** - * Abstract solver operation class. - * - * @author Konstantin Kudryashov - */ -abstract class SolverOperation implements OperationInterface -{ - protected $reason; - - /** - * Initializes operation. - * - * @param string $reason operation reason - */ - public function __construct($reason = null) - { - $this->reason = $reason; - } - - /** - * Returns operation reason. - * - * @return string - */ - public function getReason() - { - return $this->reason; - } - - protected function formatVersion(PackageInterface $package) - { - return $package->getFullPrettyVersion(); - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php deleted file mode 100644 index b4a7381..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver\Operation; - -use Composer\Package\PackageInterface; - -/** - * Solver uninstall operation. - * - * @author Konstantin Kudryashov - */ -class UninstallOperation extends SolverOperation -{ - protected $package; - - /** - * Initializes operation. - * - * @param PackageInterface $package package instance - * @param string $reason operation reason - */ - public function __construct(PackageInterface $package, $reason = null) - { - parent::__construct($reason); - - $this->package = $package; - } - - /** - * Returns package instance. - * - * @return PackageInterface - */ - public function getPackage() - { - return $this->package; - } - - /** - * Returns job type. - * - * @return string - */ - public function getJobType() - { - return 'uninstall'; - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - return 'Uninstalling '.$this->package->getPrettyName().' ('.$this->formatVersion($this->package).')'; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php b/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php deleted file mode 100644 index 836725e..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php +++ /dev/null @@ -1,80 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver\Operation; - -use Composer\Package\PackageInterface; - -/** - * Solver update operation. - * - * @author Konstantin Kudryashov - */ -class UpdateOperation extends SolverOperation -{ - protected $initialPackage; - protected $targetPackage; - - /** - * Initializes update operation. - * - * @param PackageInterface $initial initial package - * @param PackageInterface $target target package (updated) - * @param string $reason update reason - */ - public function __construct(PackageInterface $initial, PackageInterface $target, $reason = null) - { - parent::__construct($reason); - - $this->initialPackage = $initial; - $this->targetPackage = $target; - } - - /** - * Returns initial package. - * - * @return PackageInterface - */ - public function getInitialPackage() - { - return $this->initialPackage; - } - - /** - * Returns target package. - * - * @return PackageInterface - */ - public function getTargetPackage() - { - return $this->targetPackage; - } - - /** - * Returns job type. - * - * @return string - */ - public function getJobType() - { - return 'update'; - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - return 'Updating '.$this->initialPackage->getPrettyName().' ('.$this->formatVersion($this->initialPackage).') to '. - $this->targetPackage->getPrettyName(). ' ('.$this->formatVersion($this->targetPackage).')'; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php b/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php deleted file mode 100644 index 3464bd5..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\PackageInterface; - -/** - * @author Nils Adermann - */ -interface PolicyInterface -{ - public function versionCompare(PackageInterface $a, PackageInterface $b, $operator); - - public function findUpdatePackages(Pool $pool, array $installedMap, PackageInterface $package); - - public function selectPreferredPackages(Pool $pool, array $installedMap, array $literals, $requiredPackage = null); -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php b/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php deleted file mode 100644 index 085aaa7..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php +++ /dev/null @@ -1,378 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\BasePackage; -use Composer\Package\AliasPackage; -use Composer\Package\Version\VersionParser; -use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Semver\Constraint\Constraint; -use Composer\Semver\Constraint\EmptyConstraint; -use Composer\Repository\RepositoryInterface; -use Composer\Repository\CompositeRepository; -use Composer\Repository\ComposerRepository; -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Repository\PlatformRepository; -use Composer\Package\PackageInterface; - -/** - * A package pool contains repositories that provide packages. - * - * @author Nils Adermann - * @author Jordi Boggiano - */ -class Pool implements \Countable -{ - const MATCH_NAME = -1; - const MATCH_NONE = 0; - const MATCH = 1; - const MATCH_PROVIDE = 2; - const MATCH_REPLACE = 3; - const MATCH_FILTERED = 4; - - protected $repositories = array(); - protected $providerRepos = array(); - protected $packages = array(); - protected $packageByName = array(); - protected $packageByExactName = array(); - protected $acceptableStabilities; - protected $stabilityFlags; - protected $versionParser; - protected $providerCache = array(); - protected $filterRequires; - protected $whitelist = null; - protected $id = 1; - - public function __construct($minimumStability = 'stable', array $stabilityFlags = array(), array $filterRequires = array()) - { - $this->versionParser = new VersionParser; - $this->acceptableStabilities = array(); - foreach (BasePackage::$stabilities as $stability => $value) { - if ($value <= BasePackage::$stabilities[$minimumStability]) { - $this->acceptableStabilities[$stability] = $value; - } - } - $this->stabilityFlags = $stabilityFlags; - $this->filterRequires = $filterRequires; - foreach ($filterRequires as $name => $constraint) { - if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) { - unset($this->filterRequires[$name]); - } - } - } - - public function setWhitelist($whitelist) - { - $this->whitelist = $whitelist; - $this->providerCache = array(); - } - - /** - * Adds a repository and its packages to this package pool - * - * @param RepositoryInterface $repo A package repository - * @param array $rootAliases - */ - public function addRepository(RepositoryInterface $repo, $rootAliases = array()) - { - if ($repo instanceof CompositeRepository) { - $repos = $repo->getRepositories(); - } else { - $repos = array($repo); - } - - foreach ($repos as $repo) { - $this->repositories[] = $repo; - - $exempt = $repo instanceof PlatformRepository || $repo instanceof InstalledRepositoryInterface; - - if ($repo instanceof ComposerRepository && $repo->hasProviders()) { - $this->providerRepos[] = $repo; - $repo->setRootAliases($rootAliases); - $repo->resetPackageIds(); - } else { - foreach ($repo->getPackages() as $package) { - $names = $package->getNames(); - $stability = $package->getStability(); - if ($exempt || $this->isPackageAcceptable($names, $stability)) { - $package->setId($this->id++); - $this->packages[] = $package; - $this->packageByExactName[$package->getName()][$package->id] = $package; - - foreach ($names as $provided) { - $this->packageByName[$provided][] = $package; - } - - // handle root package aliases - $name = $package->getName(); - if (isset($rootAliases[$name][$package->getVersion()])) { - $alias = $rootAliases[$name][$package->getVersion()]; - if ($package instanceof AliasPackage) { - $package = $package->getAliasOf(); - } - $aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']); - $aliasPackage->setRootPackageAlias(true); - $aliasPackage->setId($this->id++); - - $package->getRepository()->addPackage($aliasPackage); - $this->packages[] = $aliasPackage; - $this->packageByExactName[$aliasPackage->getName()][$aliasPackage->id] = $aliasPackage; - - foreach ($aliasPackage->getNames() as $name) { - $this->packageByName[$name][] = $aliasPackage; - } - } - } - } - } - } - } - - public function getPriority(RepositoryInterface $repo) - { - $priority = array_search($repo, $this->repositories, true); - - if (false === $priority) { - throw new \RuntimeException("Could not determine repository priority. The repository was not registered in the pool."); - } - - return -$priority; - } - - /** - * Retrieves the package object for a given package id. - * - * @param int $id - * @return PackageInterface - */ - public function packageById($id) - { - return $this->packages[$id - 1]; - } - - /** - * Returns how many packages have been loaded into the pool - */ - public function count() - { - return count($this->packages); - } - - /** - * Searches all packages providing the given package name and match the constraint - * - * @param string $name The package name to be searched for - * @param ConstraintInterface $constraint A constraint that all returned - * packages must match or null to return all - * @param bool $mustMatchName Whether the name of returned packages - * must match the given name - * @param bool $bypassFilters If enabled, filterRequires and stability matching is ignored - * @return PackageInterface[] A set of packages - */ - public function whatProvides($name, ConstraintInterface $constraint = null, $mustMatchName = false, $bypassFilters = false) - { - if ($bypassFilters) { - return $this->computeWhatProvides($name, $constraint, $mustMatchName, true); - } - - $key = ((int) $mustMatchName).$constraint; - if (isset($this->providerCache[$name][$key])) { - return $this->providerCache[$name][$key]; - } - - return $this->providerCache[$name][$key] = $this->computeWhatProvides($name, $constraint, $mustMatchName, $bypassFilters); - } - - /** - * @see whatProvides - */ - private function computeWhatProvides($name, $constraint, $mustMatchName = false, $bypassFilters = false) - { - $candidates = array(); - - foreach ($this->providerRepos as $repo) { - foreach ($repo->whatProvides($this, $name, $bypassFilters) as $candidate) { - $candidates[] = $candidate; - if ($candidate->id < 1) { - $candidate->setId($this->id++); - $this->packages[$this->id - 2] = $candidate; - } - } - } - - if ($mustMatchName) { - $candidates = array_filter($candidates, function ($candidate) use ($name) { - return $candidate->getName() == $name; - }); - if (isset($this->packageByExactName[$name])) { - $candidates = array_merge($candidates, $this->packageByExactName[$name]); - } - } elseif (isset($this->packageByName[$name])) { - $candidates = array_merge($candidates, $this->packageByName[$name]); - } - - $matches = $provideMatches = array(); - $nameMatch = false; - - foreach ($candidates as $candidate) { - $aliasOfCandidate = null; - - // alias packages are not white listed, make sure that the package - // being aliased is white listed - if ($candidate instanceof AliasPackage) { - $aliasOfCandidate = $candidate->getAliasOf(); - } - - if ($this->whitelist !== null && !$bypassFilters && ( - (!($candidate instanceof AliasPackage) && !isset($this->whitelist[$candidate->id])) || - ($candidate instanceof AliasPackage && !isset($this->whitelist[$aliasOfCandidate->id])) - )) { - continue; - } - switch ($this->match($candidate, $name, $constraint, $bypassFilters)) { - case self::MATCH_NONE: - break; - - case self::MATCH_NAME: - $nameMatch = true; - break; - - case self::MATCH: - $nameMatch = true; - $matches[] = $candidate; - break; - - case self::MATCH_PROVIDE: - $provideMatches[] = $candidate; - break; - - case self::MATCH_REPLACE: - $matches[] = $candidate; - break; - - case self::MATCH_FILTERED: - break; - - default: - throw new \UnexpectedValueException('Unexpected match type'); - } - } - - // if a package with the required name exists, we ignore providers - if ($nameMatch) { - return $matches; - } - - return array_merge($matches, $provideMatches); - } - - public function literalToPackage($literal) - { - $packageId = abs($literal); - - return $this->packageById($packageId); - } - - public function literalToPrettyString($literal, $installedMap) - { - $package = $this->literalToPackage($literal); - - if (isset($installedMap[$package->id])) { - $prefix = ($literal > 0 ? 'keep' : 'remove'); - } else { - $prefix = ($literal > 0 ? 'install' : 'don\'t install'); - } - - return $prefix.' '.$package->getPrettyString(); - } - - public function isPackageAcceptable($name, $stability) - { - foreach ((array) $name as $n) { - // allow if package matches the global stability requirement and has no exception - if (!isset($this->stabilityFlags[$n]) && isset($this->acceptableStabilities[$stability])) { - return true; - } - - // allow if package matches the package-specific stability flag - if (isset($this->stabilityFlags[$n]) && BasePackage::$stabilities[$stability] <= $this->stabilityFlags[$n]) { - return true; - } - } - - return false; - } - - /** - * Checks if the package matches the given constraint directly or through - * provided or replaced packages - * - * @param PackageInterface $candidate - * @param string $name Name of the package to be matched - * @param ConstraintInterface $constraint The constraint to verify - * @return int One of the MATCH* constants of this class or 0 if there is no match - */ - public function match($candidate, $name, ConstraintInterface $constraint = null, $bypassFilters) - { - $candidateName = $candidate->getName(); - $candidateVersion = $candidate->getVersion(); - $isDev = $candidate->getStability() === 'dev'; - $isAlias = $candidate instanceof AliasPackage; - - if (!$bypassFilters && !$isDev && !$isAlias && isset($this->filterRequires[$name])) { - $requireFilter = $this->filterRequires[$name]; - } else { - $requireFilter = new EmptyConstraint; - } - - if ($candidateName === $name) { - $pkgConstraint = new Constraint('==', $candidateVersion); - - if ($constraint === null || $constraint->matches($pkgConstraint)) { - return $requireFilter->matches($pkgConstraint) ? self::MATCH : self::MATCH_FILTERED; - } - - return self::MATCH_NAME; - } - - $provides = $candidate->getProvides(); - $replaces = $candidate->getReplaces(); - - // aliases create multiple replaces/provides for one target so they can not use the shortcut below - if (isset($replaces[0]) || isset($provides[0])) { - foreach ($provides as $link) { - if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { - return $requireFilter->matches($link->getConstraint()) ? self::MATCH_PROVIDE : self::MATCH_FILTERED; - } - } - - foreach ($replaces as $link) { - if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { - return $requireFilter->matches($link->getConstraint()) ? self::MATCH_REPLACE : self::MATCH_FILTERED; - } - } - - return self::MATCH_NONE; - } - - if (isset($provides[$name]) && ($constraint === null || $constraint->matches($provides[$name]->getConstraint()))) { - return $requireFilter->matches($provides[$name]->getConstraint()) ? self::MATCH_PROVIDE : self::MATCH_FILTERED; - } - - if (isset($replaces[$name]) && ($constraint === null || $constraint->matches($replaces[$name]->getConstraint()))) { - return $requireFilter->matches($replaces[$name]->getConstraint()) ? self::MATCH_REPLACE : self::MATCH_FILTERED; - } - - return self::MATCH_NONE; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php b/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php deleted file mode 100644 index df289a4..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php +++ /dev/null @@ -1,257 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\CompletePackageInterface; - -/** - * Represents a problem detected while solving dependencies - * - * @author Nils Adermann - */ -class Problem -{ - /** - * A map containing the id of each rule part of this problem as a key - * @var array - */ - protected $reasonSeen; - - /** - * A set of reasons for the problem, each is a rule or a job and a rule - * @var array - */ - protected $reasons = array(); - - protected $section = 0; - - protected $pool; - - public function __construct(Pool $pool) - { - $this->pool = $pool; - } - - /** - * Add a rule as a reason - * - * @param Rule $rule A rule which is a reason for this problem - */ - public function addRule(Rule $rule) - { - $this->addReason(spl_object_hash($rule), array( - 'rule' => $rule, - 'job' => $rule->getJob(), - )); - } - - /** - * Retrieve all reasons for this problem - * - * @return array The problem's reasons - */ - public function getReasons() - { - return $this->reasons; - } - - /** - * A human readable textual representation of the problem's reasons - * - * @param array $installedMap A map of all installed packages - * @return string - */ - public function getPrettyString(array $installedMap = array()) - { - $reasons = call_user_func_array('array_merge', array_reverse($this->reasons)); - - if (count($reasons) === 1) { - reset($reasons); - $reason = current($reasons); - - $job = $reason['job']; - - $packageName = $job['packageName']; - $constraint = $job['constraint']; - - if (isset($constraint)) { - $packages = $this->pool->whatProvides($packageName, $constraint); - } else { - $packages = array(); - } - - if ($job && $job['cmd'] === 'install' && empty($packages)) { - - // handle php/hhvm - if ($packageName === 'php' || $packageName === 'php-64bit' || $packageName === 'hhvm') { - $version = phpversion(); - $available = $this->pool->whatProvides($packageName); - - if (count($available)) { - $firstAvailable = reset($available); - $version = $firstAvailable->getPrettyVersion(); - $extra = $firstAvailable->getExtra(); - if ($firstAvailable instanceof CompletePackageInterface && isset($extra['config.platform']) && $extra['config.platform'] === true) { - $version .= '; ' . $firstAvailable->getDescription(); - } - } - - $msg = "\n - This package requires ".$packageName.$this->constraintToText($constraint).' but '; - - if (defined('HHVM_VERSION') || (count($available) && $packageName === 'hhvm')) { - return $msg . 'your HHVM version does not satisfy that requirement.'; - } - - if ($packageName === 'hhvm') { - return $msg . 'you are running this with PHP and not HHVM.'; - } - - return $msg . 'your PHP version ('. $version .') does not satisfy that requirement.'; - } - - // handle php extensions - if (0 === stripos($packageName, 'ext-')) { - if (false !== strpos($packageName, ' ')) { - return "\n - The requested PHP extension ".$packageName.' should be required as '.str_replace(' ', '-', $packageName).'.'; - } - - $ext = substr($packageName, 4); - $error = extension_loaded($ext) ? 'has the wrong version ('.(phpversion($ext) ?: '0').') installed' : 'is missing from your system'; - - return "\n - The requested PHP extension ".$packageName.$this->constraintToText($constraint).' '.$error.'. Install or enable PHP\'s '.$ext.' extension.'; - } - - // handle linked libs - if (0 === stripos($packageName, 'lib-')) { - if (strtolower($packageName) === 'lib-icu') { - $error = extension_loaded('intl') ? 'has the wrong version installed, try upgrading the intl extension.' : 'is missing from your system, make sure the intl extension is loaded.'; - - return "\n - The requested linked library ".$packageName.$this->constraintToText($constraint).' '.$error; - } - - return "\n - The requested linked library ".$packageName.$this->constraintToText($constraint).' has the wrong version installed or is missing from your system, make sure to load the extension providing it.'; - } - - if (!preg_match('{^[A-Za-z0-9_./-]+$}', $packageName)) { - $illegalChars = preg_replace('{[A-Za-z0-9_./-]+}', '', $packageName); - - return "\n - The requested package ".$packageName.' could not be found, it looks like its name is invalid, "'.$illegalChars.'" is not allowed in package names.'; - } - - if ($providers = $this->pool->whatProvides($packageName, $constraint, true, true)) { - return "\n - The requested package ".$packageName.$this->constraintToText($constraint).' is satisfiable by '.$this->getPackageList($providers).' but these conflict with your requirements or minimum-stability.'; - } - - if ($providers = $this->pool->whatProvides($packageName, null, true, true)) { - return "\n - The requested package ".$packageName.$this->constraintToText($constraint).' exists as '.$this->getPackageList($providers).' but these are rejected by your constraint.'; - } - - return "\n - The requested package ".$packageName.' could not be found in any version, there may be a typo in the package name.'; - } - } - - $messages = array(); - - foreach ($reasons as $reason) { - $rule = $reason['rule']; - $job = $reason['job']; - - if ($job) { - $messages[] = $this->jobToText($job); - } elseif ($rule) { - if ($rule instanceof Rule) { - $messages[] = $rule->getPrettyString($this->pool, $installedMap); - } - } - } - - return "\n - ".implode("\n - ", $messages); - } - - /** - * Store a reason descriptor but ignore duplicates - * - * @param string $id A canonical identifier for the reason - * @param string $reason The reason descriptor - */ - protected function addReason($id, $reason) - { - if (!isset($this->reasonSeen[$id])) { - $this->reasonSeen[$id] = true; - $this->reasons[$this->section][] = $reason; - } - } - - public function nextSection() - { - $this->section++; - } - - /** - * Turns a job into a human readable description - * - * @param array $job - * @return string - */ - protected function jobToText($job) - { - $packageName = $job['packageName']; - $constraint = $job['constraint']; - switch ($job['cmd']) { - case 'install': - $packages = $this->pool->whatProvides($packageName, $constraint); - if (!$packages) { - return 'No package found to satisfy install request for '.$packageName.$this->constraintToText($constraint); - } - - return 'Installation request for '.$packageName.$this->constraintToText($constraint).' -> satisfiable by '.$this->getPackageList($packages).'.'; - case 'update': - return 'Update request for '.$packageName.$this->constraintToText($constraint).'.'; - case 'remove': - return 'Removal request for '.$packageName.$this->constraintToText($constraint).''; - } - - if (isset($constraint)) { - $packages = $this->pool->whatProvides($packageName, $constraint); - } else { - $packages = array(); - } - - return 'Job(cmd='.$job['cmd'].', target='.$packageName.', packages=['.$this->getPackageList($packages).'])'; - } - - protected function getPackageList($packages) - { - $prepared = array(); - foreach ($packages as $package) { - $prepared[$package->getName()]['name'] = $package->getPrettyName(); - $prepared[$package->getName()]['versions'][$package->getVersion()] = $package->getPrettyVersion(); - } - foreach ($prepared as $name => $package) { - $prepared[$name] = $package['name'].'['.implode(', ', $package['versions']).']'; - } - - return implode(', ', $prepared); - } - - /** - * Turns a constraint into text usable in a sentence describing a job - * - * @param \Composer\Semver\Constraint\ConstraintInterface $constraint - * @return string - */ - protected function constraintToText($constraint) - { - return $constraint ? ' '.$constraint->getPrettyString() : ''; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Request.php b/vendor/composer/composer/src/Composer/DependencyResolver/Request.php deleted file mode 100644 index 85dc9c4..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Request.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Semver\Constraint\ConstraintInterface; - -/** - * @author Nils Adermann - */ -class Request -{ - protected $jobs; - - public function __construct() - { - $this->jobs = array(); - } - - public function install($packageName, ConstraintInterface $constraint = null) - { - $this->addJob($packageName, 'install', $constraint); - } - - public function update($packageName, ConstraintInterface $constraint = null) - { - $this->addJob($packageName, 'update', $constraint); - } - - public function remove($packageName, ConstraintInterface $constraint = null) - { - $this->addJob($packageName, 'remove', $constraint); - } - - /** - * Mark an existing package as being installed and having to remain installed - * - * These jobs will not be tempered with by the solver - * - * @param string $packageName - * @param ConstraintInterface|null $constraint - */ - public function fix($packageName, ConstraintInterface $constraint = null) - { - $this->addJob($packageName, 'install', $constraint, true); - } - - protected function addJob($packageName, $cmd, ConstraintInterface $constraint = null, $fixed = false) - { - $packageName = strtolower($packageName); - - $this->jobs[] = array( - 'cmd' => $cmd, - 'packageName' => $packageName, - 'constraint' => $constraint, - 'fixed' => $fixed, - ); - } - - public function updateAll() - { - $this->jobs[] = array('cmd' => 'update-all'); - } - - public function getJobs() - { - return $this->jobs; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php b/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php deleted file mode 100644 index 82c9c49..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php +++ /dev/null @@ -1,268 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\CompletePackage; -use Composer\Package\Link; -use Composer\Package\PackageInterface; - -/** - * @author Nils Adermann - * @author Ruben Gonzalez - */ -abstract class Rule -{ - // reason constants - const RULE_INTERNAL_ALLOW_UPDATE = 1; - const RULE_JOB_INSTALL = 2; - const RULE_JOB_REMOVE = 3; - const RULE_PACKAGE_CONFLICT = 6; - const RULE_PACKAGE_REQUIRES = 7; - const RULE_PACKAGE_OBSOLETES = 8; - const RULE_INSTALLED_PACKAGE_OBSOLETES = 9; - const RULE_PACKAGE_SAME_NAME = 10; - const RULE_PACKAGE_IMPLICIT_OBSOLETES = 11; - const RULE_LEARNED = 12; - const RULE_PACKAGE_ALIAS = 13; - - // bitfield defs - const BITFIELD_TYPE = 0; - const BITFIELD_REASON = 8; - const BITFIELD_DISABLED = 16; - - protected $bitfield; - protected $job; - protected $reasonData; - - /** - * @param int $reason A RULE_* constant describing the reason for generating this rule - * @param Link|PackageInterface $reasonData - * @param array $job The job this rule was created from - */ - public function __construct($reason, $reasonData, $job = null) - { - $this->reasonData = $reasonData; - - if ($job) { - $this->job = $job; - } - - $this->bitfield = (0 << self::BITFIELD_DISABLED) | - ($reason << self::BITFIELD_REASON) | - (255 << self::BITFIELD_TYPE); - } - - abstract public function getLiterals(); - - abstract public function getHash(); - - public function getJob() - { - return $this->job; - } - - abstract public function equals(Rule $rule); - - public function getReason() - { - return ($this->bitfield & (255 << self::BITFIELD_REASON)) >> self::BITFIELD_REASON; - } - - public function getReasonData() - { - return $this->reasonData; - } - - public function getRequiredPackage() - { - if ($this->getReason() === self::RULE_JOB_INSTALL) { - return $this->reasonData; - } - - if ($this->getReason() === self::RULE_PACKAGE_REQUIRES) { - return $this->reasonData->getTarget(); - } - } - - public function setType($type) - { - $this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_TYPE)) | ((255 & $type) << self::BITFIELD_TYPE); - } - - public function getType() - { - return ($this->bitfield & (255 << self::BITFIELD_TYPE)) >> self::BITFIELD_TYPE; - } - - public function disable() - { - $this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_DISABLED)) | (1 << self::BITFIELD_DISABLED); - } - - public function enable() - { - $this->bitfield &= ~(255 << self::BITFIELD_DISABLED); - } - - public function isDisabled() - { - return (bool) (($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); - } - - public function isEnabled() - { - return !(($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); - } - - abstract public function isAssertion(); - - public function getPrettyString(Pool $pool, array $installedMap = array()) - { - $literals = $this->getLiterals(); - - $ruleText = ''; - foreach ($literals as $i => $literal) { - if ($i != 0) { - $ruleText .= '|'; - } - $ruleText .= $pool->literalToPrettyString($literal, $installedMap); - } - - switch ($this->getReason()) { - case self::RULE_INTERNAL_ALLOW_UPDATE: - return $ruleText; - - case self::RULE_JOB_INSTALL: - return "Install command rule ($ruleText)"; - - case self::RULE_JOB_REMOVE: - return "Remove command rule ($ruleText)"; - - case self::RULE_PACKAGE_CONFLICT: - $package1 = $pool->literalToPackage($literals[0]); - $package2 = $pool->literalToPackage($literals[1]); - - return $package1->getPrettyString().' conflicts with '.$this->formatPackagesUnique($pool, array($package2)).'.'; - - case self::RULE_PACKAGE_REQUIRES: - $sourceLiteral = array_shift($literals); - $sourcePackage = $pool->literalToPackage($sourceLiteral); - - $requires = array(); - foreach ($literals as $literal) { - $requires[] = $pool->literalToPackage($literal); - } - - $text = $this->reasonData->getPrettyString($sourcePackage); - if ($requires) { - $text .= ' -> satisfiable by ' . $this->formatPackagesUnique($pool, $requires) . '.'; - } else { - $targetName = $this->reasonData->getTarget(); - - if ($targetName === 'php' || $targetName === 'php-64bit' || $targetName === 'hhvm') { - // handle php/hhvm - if (defined('HHVM_VERSION')) { - return $text . ' -> your HHVM version does not satisfy that requirement.'; - } - - $packages = $pool->whatProvides($targetName); - $package = count($packages) ? current($packages) : phpversion(); - - if ($targetName === 'hhvm') { - if ($package instanceof CompletePackage) { - return $text . ' -> your HHVM version ('.$package->getPrettyVersion().') does not satisfy that requirement.'; - } else { - return $text . ' -> you are running this with PHP and not HHVM.'; - } - } - - - if (!($package instanceof CompletePackage)) { - return $text . ' -> your PHP version ('.phpversion().') does not satisfy that requirement.'; - } - - $extra = $package->getExtra(); - - if (!empty($extra['config.platform'])) { - $text .= ' -> your PHP version ('.phpversion().') overridden by "config.platform.php" version ('.$package->getPrettyVersion().') does not satisfy that requirement.'; - } else { - $text .= ' -> your PHP version ('.$package->getPrettyVersion().') does not satisfy that requirement.'; - } - - return $text; - } - - if (0 === strpos($targetName, 'ext-')) { - // handle php extensions - $ext = substr($targetName, 4); - $error = extension_loaded($ext) ? 'has the wrong version ('.(phpversion($ext) ?: '0').') installed' : 'is missing from your system'; - - return $text . ' -> the requested PHP extension '.$ext.' '.$error.'.'; - } - - if (0 === strpos($targetName, 'lib-')) { - // handle linked libs - $lib = substr($targetName, 4); - - return $text . ' -> the requested linked library '.$lib.' has the wrong version installed or is missing from your system, make sure to have the extension providing it.'; - } - - if ($providers = $pool->whatProvides($targetName, $this->reasonData->getConstraint(), true, true)) { - return $text . ' -> satisfiable by ' . $this->formatPackagesUnique($pool, $providers) .' but these conflict with your requirements or minimum-stability.'; - } - - return $text . ' -> no matching package found.'; - } - - return $text; - - case self::RULE_PACKAGE_OBSOLETES: - return $ruleText; - case self::RULE_INSTALLED_PACKAGE_OBSOLETES: - return $ruleText; - case self::RULE_PACKAGE_SAME_NAME: - return 'Can only install one of: ' . $this->formatPackagesUnique($pool, $literals) . '.'; - case self::RULE_PACKAGE_IMPLICIT_OBSOLETES: - return $ruleText; - case self::RULE_LEARNED: - return 'Conclusion: '.$ruleText; - case self::RULE_PACKAGE_ALIAS: - return $ruleText; - default: - return '('.$ruleText.')'; - } - } - - /** - * @param Pool $pool - * @param array $packages - * - * @return string - */ - protected function formatPackagesUnique($pool, array $packages) - { - $prepared = array(); - foreach ($packages as $package) { - if (!is_object($package)) { - $package = $pool->literalToPackage($package); - } - $prepared[$package->getName()]['name'] = $package->getPrettyName(); - $prepared[$package->getName()]['versions'][$package->getVersion()] = $package->getPrettyVersion(); - } - foreach ($prepared as $name => $package) { - $prepared[$name] = $package['name'].'['.implode(', ', $package['versions']).']'; - } - - return implode(', ', $prepared); - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php b/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php deleted file mode 100644 index 6bf47db..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php +++ /dev/null @@ -1,113 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\PackageInterface; -use Composer\Package\Link; - -/** - * @author Nils Adermann - */ -class Rule2Literals extends Rule -{ - protected $literal1; - protected $literal2; - - /** - * @param int $literal1 - * @param int $literal2 - * @param int $reason A RULE_* constant describing the reason for generating this rule - * @param Link|PackageInterface $reasonData - * @param array $job The job this rule was created from - */ - public function __construct($literal1, $literal2, $reason, $reasonData, $job = null) - { - parent::__construct($reason, $reasonData, $job); - - if ($literal1 < $literal2) { - $this->literal1 = $literal1; - $this->literal2 = $literal2; - } else { - $this->literal1 = $literal2; - $this->literal2 = $literal1; - } - } - - public function getLiterals() - { - return array($this->literal1, $this->literal2); - } - - public function getHash() - { - return $this->literal1.','.$this->literal2; - } - - /** - * Checks if this rule is equal to another one - * - * Ignores whether either of the rules is disabled. - * - * @param Rule $rule The rule to check against - * @return bool Whether the rules are equal - */ - public function equals(Rule $rule) - { - // specialized fast-case - if ($rule instanceof self) { - if ($this->literal1 !== $rule->literal1) { - return false; - } - - if ($this->literal2 !== $rule->literal2) { - return false; - } - - return true; - } - - $literals = $rule->getLiterals(); - if (2 != count($literals)) { - return false; - } - - if ($this->literal1 !== $literals[0]) { - return false; - } - - if ($this->literal2 !== $literals[1]) { - return false; - } - - return true; - } - - public function isAssertion() - { - return false; - } - - /** - * Formats a rule as a string of the format (Literal1|Literal2|...) - * - * @return string - */ - public function __toString() - { - $result = $this->isDisabled() ? 'disabled(' : '('; - - $result .= $this->literal1 . '|' . $this->literal2 . ')'; - - return $result; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php deleted file mode 100644 index bf4de0d..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php +++ /dev/null @@ -1,176 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -/** - * @author Nils Adermann - */ -class RuleSet implements \IteratorAggregate, \Countable -{ - // highest priority => lowest number - const TYPE_PACKAGE = 0; - const TYPE_JOB = 1; - const TYPE_LEARNED = 4; - - /** - * READ-ONLY: Lookup table for rule id to rule object - * - * @var Rule[] - */ - public $ruleById; - - protected static $types = array( - 255 => 'UNKNOWN', - self::TYPE_PACKAGE => 'PACKAGE', - self::TYPE_JOB => 'JOB', - self::TYPE_LEARNED => 'LEARNED', - ); - - protected $rules; - protected $nextRuleId; - - protected $rulesByHash; - - public function __construct() - { - $this->nextRuleId = 0; - - foreach ($this->getTypes() as $type) { - $this->rules[$type] = array(); - } - - $this->rulesByHash = array(); - } - - public function add(Rule $rule, $type) - { - if (!isset(self::$types[$type])) { - throw new \OutOfBoundsException('Unknown rule type: ' . $type); - } - - $hash = $rule->getHash(); - - // Do not add if rule already exists - if (isset($this->rulesByHash[$hash])) { - $potentialDuplicates = $this->rulesByHash[$hash]; - if (is_array($potentialDuplicates)) { - foreach ($potentialDuplicates as $potentialDuplicate) { - if ($rule->equals($potentialDuplicate)) { - return; - } - } - } else { - if ($rule->equals($potentialDuplicates)) { - return; - } - } - } - - if (!isset($this->rules[$type])) { - $this->rules[$type] = array(); - } - - $this->rules[$type][] = $rule; - $this->ruleById[$this->nextRuleId] = $rule; - $rule->setType($type); - - $this->nextRuleId++; - - if (!isset($this->rulesByHash[$hash])) { - $this->rulesByHash[$hash] = $rule; - } elseif (is_array($this->rulesByHash[$hash])) { - $this->rulesByHash[$hash][] = $rule; - } else { - $originalRule = $this->rulesByHash[$hash]; - $this->rulesByHash[$hash] = array($originalRule, $rule); - } - } - - public function count() - { - return $this->nextRuleId; - } - - public function ruleById($id) - { - return $this->ruleById[$id]; - } - - public function getRules() - { - return $this->rules; - } - - public function getIterator() - { - return new RuleSetIterator($this->getRules()); - } - - public function getIteratorFor($types) - { - if (!is_array($types)) { - $types = array($types); - } - - $allRules = $this->getRules(); - $rules = array(); - - foreach ($types as $type) { - $rules[$type] = $allRules[$type]; - } - - return new RuleSetIterator($rules); - } - - public function getIteratorWithout($types) - { - if (!is_array($types)) { - $types = array($types); - } - - $rules = $this->getRules(); - - foreach ($types as $type) { - unset($rules[$type]); - } - - return new RuleSetIterator($rules); - } - - public function getTypes() - { - $types = self::$types; - unset($types[255]); - - return array_keys($types); - } - - public function getPrettyString(Pool $pool = null) - { - $string = "\n"; - foreach ($this->rules as $type => $rules) { - $string .= str_pad(self::$types[$type], 8, ' ') . ": "; - foreach ($rules as $rule) { - $string .= ($pool ? $rule->getPrettyString($pool) : $rule)."\n"; - } - $string .= "\n\n"; - } - - return $string; - } - - public function __toString() - { - return $this->getPrettyString(null); - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php deleted file mode 100644 index e8714a4..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php +++ /dev/null @@ -1,376 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\PackageInterface; -use Composer\Package\AliasPackage; -use Composer\Repository\PlatformRepository; - -/** - * @author Nils Adermann - */ -class RuleSetGenerator -{ - protected $policy; - protected $pool; - protected $rules; - protected $jobs; - protected $installedMap; - protected $whitelistedMap; - protected $addedMap; - protected $conflictAddedMap; - protected $addedPackages; - protected $addedPackagesByNames; - - public function __construct(PolicyInterface $policy, Pool $pool) - { - $this->policy = $policy; - $this->pool = $pool; - } - - /** - * Creates a new rule for the requirements of a package - * - * This rule is of the form (-A|B|C), where B and C are the providers of - * one requirement of the package A. - * - * @param PackageInterface $package The package with a requirement - * @param array $providers The providers of the requirement - * @param int $reason A RULE_* constant describing the - * reason for generating this rule - * @param mixed $reasonData Any data, e.g. the requirement name, - * that goes with the reason - * @return Rule|null The generated rule or null if tautological - */ - protected function createRequireRule(PackageInterface $package, array $providers, $reason, $reasonData = null) - { - $literals = array(-$package->id); - - foreach ($providers as $provider) { - // self fulfilling rule? - if ($provider === $package) { - return null; - } - $literals[] = $provider->id; - } - - return new GenericRule($literals, $reason, $reasonData); - } - - /** - * Creates a rule to install at least one of a set of packages - * - * The rule is (A|B|C) with A, B and C different packages. If the given - * set of packages is empty an impossible rule is generated. - * - * @param array $packages The set of packages to choose from - * @param int $reason A RULE_* constant describing the reason for - * generating this rule - * @param array $job The job this rule was created from - * @return Rule The generated rule - */ - protected function createInstallOneOfRule(array $packages, $reason, $job) - { - $literals = array(); - foreach ($packages as $package) { - $literals[] = $package->id; - } - - return new GenericRule($literals, $reason, $job['packageName'], $job); - } - - /** - * Creates a rule to remove a package - * - * The rule for a package A is (-A). - * - * @param PackageInterface $package The package to be removed - * @param int $reason A RULE_* constant describing the - * reason for generating this rule - * @param array $job The job this rule was created from - * @return Rule The generated rule - */ - protected function createRemoveRule(PackageInterface $package, $reason, $job) - { - return new GenericRule(array(-$package->id), $reason, $job['packageName'], $job); - } - - /** - * Creates a rule for two conflicting packages - * - * The rule for conflicting packages A and B is (-A|-B). A is called the issuer - * and B the provider. - * - * @param PackageInterface $issuer The package declaring the conflict - * @param PackageInterface $provider The package causing the conflict - * @param int $reason A RULE_* constant describing the - * reason for generating this rule - * @param mixed $reasonData Any data, e.g. the package name, that - * goes with the reason - * @return Rule|null The generated rule - */ - protected function createRule2Literals(PackageInterface $issuer, PackageInterface $provider, $reason, $reasonData = null) - { - // ignore self conflict - if ($issuer === $provider) { - return null; - } - - return new Rule2Literals(-$issuer->id, -$provider->id, $reason, $reasonData); - } - - /** - * Adds a rule unless it duplicates an existing one of any type - * - * To be able to directly pass in the result of one of the rule creation - * methods null is allowed which will not insert a rule. - * - * @param int $type A TYPE_* constant defining the rule type - * @param Rule $newRule The rule about to be added - */ - private function addRule($type, Rule $newRule = null) - { - if (!$newRule) { - return; - } - - $this->rules->add($newRule, $type); - } - - protected function whitelistFromPackage(PackageInterface $package) - { - $workQueue = new \SplQueue; - $workQueue->enqueue($package); - - while (!$workQueue->isEmpty()) { - $package = $workQueue->dequeue(); - if (isset($this->whitelistedMap[$package->id])) { - continue; - } - - $this->whitelistedMap[$package->id] = true; - - foreach ($package->getRequires() as $link) { - $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint(), true); - - foreach ($possibleRequires as $require) { - $workQueue->enqueue($require); - } - } - - $obsoleteProviders = $this->pool->whatProvides($package->getName(), null, true); - - foreach ($obsoleteProviders as $provider) { - if ($provider === $package) { - continue; - } - - if (($package instanceof AliasPackage) && $package->getAliasOf() === $provider) { - $workQueue->enqueue($provider); - } - } - } - } - - protected function addRulesForPackage(PackageInterface $package, $ignorePlatformReqs) - { - $workQueue = new \SplQueue; - $workQueue->enqueue($package); - - while (!$workQueue->isEmpty()) { - /** @var PackageInterface $package */ - $package = $workQueue->dequeue(); - if (isset($this->addedMap[$package->id])) { - continue; - } - - $this->addedMap[$package->id] = true; - - $this->addedPackages[] = $package; - foreach ($package->getNames() as $name) { - $this->addedPackagesByNames[$name][] = $package; - } - - foreach ($package->getRequires() as $link) { - if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) { - continue; - } - - $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); - - $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, $possibleRequires, Rule::RULE_PACKAGE_REQUIRES, $link)); - - foreach ($possibleRequires as $require) { - $workQueue->enqueue($require); - } - } - - $packageName = $package->getName(); - $obsoleteProviders = $this->pool->whatProvides($packageName, null); - - foreach ($obsoleteProviders as $provider) { - if ($provider === $package) { - continue; - } - - if (($package instanceof AliasPackage) && $package->getAliasOf() === $provider) { - $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, array($provider), Rule::RULE_PACKAGE_ALIAS, $package)); - } elseif (!$this->obsoleteImpossibleForAlias($package, $provider)) { - $reason = ($packageName == $provider->getName()) ? Rule::RULE_PACKAGE_SAME_NAME : Rule::RULE_PACKAGE_IMPLICIT_OBSOLETES; - $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $provider, $reason, $package)); - } - } - } - } - - protected function addConflictRules($ignorePlatformReqs = false) - { - /** @var PackageInterface $package */ - foreach ($this->addedPackages as $package) { - foreach ($package->getConflicts() as $link) { - if (!isset($this->addedPackagesByNames[$link->getTarget()])) { - continue; - } - - if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) { - continue; - } - - /** @var PackageInterface $possibleConflict */ - foreach ($this->addedPackagesByNames[$link->getTarget()] as $possibleConflict) { - $conflictMatch = $this->pool->match($possibleConflict, $link->getTarget(), $link->getConstraint(), true); - - if ($conflictMatch === Pool::MATCH || $conflictMatch === Pool::MATCH_REPLACE) { - $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $possibleConflict, Rule::RULE_PACKAGE_CONFLICT, $link)); - } - - } - } - - // check obsoletes and implicit obsoletes of a package - $isInstalled = isset($this->installedMap[$package->id]); - - foreach ($package->getReplaces() as $link) { - if (!isset($this->addedPackagesByNames[$link->getTarget()])) { - continue; - } - - /** @var PackageInterface $possibleConflict */ - foreach ($this->addedPackagesByNames[$link->getTarget()] as $provider) { - if ($provider === $package) { - continue; - } - - if (!$this->obsoleteImpossibleForAlias($package, $provider)) { - $reason = $isInstalled ? Rule::RULE_INSTALLED_PACKAGE_OBSOLETES : Rule::RULE_PACKAGE_OBSOLETES; - $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $provider, $reason, $link)); - } - } - } - } - } - - protected function obsoleteImpossibleForAlias($package, $provider) - { - $packageIsAlias = $package instanceof AliasPackage; - $providerIsAlias = $provider instanceof AliasPackage; - - $impossible = ( - ($packageIsAlias && $package->getAliasOf() === $provider) || - ($providerIsAlias && $provider->getAliasOf() === $package) || - ($packageIsAlias && $providerIsAlias && $provider->getAliasOf() === $package->getAliasOf()) - ); - - return $impossible; - } - - protected function whitelistFromJobs() - { - foreach ($this->jobs as $job) { - switch ($job['cmd']) { - case 'install': - $packages = $this->pool->whatProvides($job['packageName'], $job['constraint'], true); - foreach ($packages as $package) { - $this->whitelistFromPackage($package); - } - break; - } - } - } - - protected function addRulesForJobs($ignorePlatformReqs) - { - foreach ($this->jobs as $job) { - switch ($job['cmd']) { - case 'install': - if (!$job['fixed'] && $ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $job['packageName'])) { - break; - } - - $packages = $this->pool->whatProvides($job['packageName'], $job['constraint']); - if ($packages) { - foreach ($packages as $package) { - if (!isset($this->installedMap[$package->id])) { - $this->addRulesForPackage($package, $ignorePlatformReqs); - } - } - - $rule = $this->createInstallOneOfRule($packages, Rule::RULE_JOB_INSTALL, $job); - $this->addRule(RuleSet::TYPE_JOB, $rule); - } - break; - case 'remove': - // remove all packages with this name including uninstalled - // ones to make sure none of them are picked as replacements - $packages = $this->pool->whatProvides($job['packageName'], $job['constraint']); - foreach ($packages as $package) { - $rule = $this->createRemoveRule($package, Rule::RULE_JOB_REMOVE, $job); - $this->addRule(RuleSet::TYPE_JOB, $rule); - } - break; - } - } - } - - public function getRulesFor($jobs, $installedMap, $ignorePlatformReqs = false) - { - $this->jobs = $jobs; - $this->rules = new RuleSet; - $this->installedMap = $installedMap; - - $this->whitelistedMap = array(); - foreach ($this->installedMap as $package) { - $this->whitelistFromPackage($package); - } - $this->whitelistFromJobs(); - - $this->pool->setWhitelist($this->whitelistedMap); - - $this->addedMap = array(); - $this->conflictAddedMap = array(); - $this->addedPackages = array(); - $this->addedPackagesByNames = array(); - foreach ($this->installedMap as $package) { - $this->addRulesForPackage($package, $ignorePlatformReqs); - } - - $this->addRulesForJobs($ignorePlatformReqs); - - $this->addConflictRules($ignorePlatformReqs); - - // Remove references to packages - $this->addedPackages = $this->addedPackagesByNames = null; - - return $this->rules; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php deleted file mode 100644 index 8c04862..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php +++ /dev/null @@ -1,94 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -/** - * @author Nils Adermann - */ -class RuleSetIterator implements \Iterator -{ - protected $rules; - protected $types; - - protected $currentOffset; - protected $currentType; - protected $currentTypeOffset; - - public function __construct(array $rules) - { - $this->rules = $rules; - $this->types = array_keys($rules); - sort($this->types); - - $this->rewind(); - } - - public function current() - { - return $this->rules[$this->currentType][$this->currentOffset]; - } - - public function key() - { - return $this->currentType; - } - - public function next() - { - $this->currentOffset++; - - if (!isset($this->rules[$this->currentType])) { - return; - } - - if ($this->currentOffset >= count($this->rules[$this->currentType])) { - $this->currentOffset = 0; - - do { - $this->currentTypeOffset++; - - if (!isset($this->types[$this->currentTypeOffset])) { - $this->currentType = -1; - break; - } - - $this->currentType = $this->types[$this->currentTypeOffset]; - } while (isset($this->types[$this->currentTypeOffset]) && !count($this->rules[$this->currentType])); - } - } - - public function rewind() - { - $this->currentOffset = 0; - - $this->currentTypeOffset = -1; - $this->currentType = -1; - - do { - $this->currentTypeOffset++; - - if (!isset($this->types[$this->currentTypeOffset])) { - $this->currentType = -1; - break; - } - - $this->currentType = $this->types[$this->currentTypeOffset]; - } while (isset($this->types[$this->currentTypeOffset]) && !count($this->rules[$this->currentType])); - } - - public function valid() - { - return isset($this->rules[$this->currentType]) - && isset($this->rules[$this->currentType][$this->currentOffset]); - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php deleted file mode 100644 index 2fea0d6..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -/** - * An extension of SplDoublyLinkedList with seek and removal of current element - * - * SplDoublyLinkedList only allows deleting a particular offset and has no - * method to set the internal iterator to a particular offset. - * - * @author Nils Adermann - */ -class RuleWatchChain extends \SplDoublyLinkedList -{ - protected $offset = 0; - - /** - * Moves the internal iterator to the specified offset - * - * @param int $offset The offset to seek to. - */ - public function seek($offset) - { - $this->rewind(); - for ($i = 0; $i < $offset; $i++, $this->next()); - } - - /** - * Removes the current element from the list - * - * As SplDoublyLinkedList only allows deleting a particular offset and - * incorrectly sets the internal iterator if you delete the current value - * this method sets the internal iterator back to the following element - * using the seek method. - */ - public function remove() - { - $offset = $this->key(); - $this->offsetUnset($offset); - $this->seek($offset); - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php deleted file mode 100644 index 31a2241..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php +++ /dev/null @@ -1,144 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -/** - * The RuleWatchGraph efficiently propagates decisions to other rules - * - * All rules generated for solving a SAT problem should be inserted into the - * graph. When a decision on a literal is made, the graph can be used to - * propagate the decision to all other rules involving the literal, leading to - * other trivial decisions resulting from unit clauses. - * - * @author Nils Adermann - */ -class RuleWatchGraph -{ - protected $watchChains = array(); - - /** - * Inserts a rule node into the appropriate chains within the graph - * - * The node is prepended to the watch chains for each of the two literals it - * watches. - * - * Assertions are skipped because they only depend on a single package and - * have no alternative literal that could be true, so there is no need to - * watch changes in any literals. - * - * @param RuleWatchNode $node The rule node to be inserted into the graph - */ - public function insert(RuleWatchNode $node) - { - if ($node->getRule()->isAssertion()) { - return; - } - - foreach (array($node->watch1, $node->watch2) as $literal) { - if (!isset($this->watchChains[$literal])) { - $this->watchChains[$literal] = new RuleWatchChain; - } - - $this->watchChains[$literal]->unshift($node); - } - } - - /** - * Propagates a decision on a literal to all rules watching the literal - * - * If a decision, e.g. +A has been made, then all rules containing -A, e.g. - * (-A|+B|+C) now need to satisfy at least one of the other literals, so - * that the rule as a whole becomes true, since with +A applied the rule - * is now (false|+B|+C) so essentially (+B|+C). - * - * This means that all rules watching the literal -A need to be updated to - * watch 2 other literals which can still be satisfied instead. So literals - * that conflict with previously made decisions are not an option. - * - * Alternatively it can occur that a unit clause results: e.g. if in the - * above example the rule was (-A|+B), then A turning true means that - * B must now be decided true as well. - * - * @param int $decidedLiteral The literal which was decided (A in our example) - * @param int $level The level at which the decision took place and at which - * all resulting decisions should be made. - * @param Decisions $decisions Used to check previous decisions and to - * register decisions resulting from propagation - * @return Rule|null If a conflict is found the conflicting rule is returned - */ - public function propagateLiteral($decidedLiteral, $level, $decisions) - { - // we invert the decided literal here, example: - // A was decided => (-A|B) now requires B to be true, so we look for - // rules which are fulfilled by -A, rather than A. - $literal = -$decidedLiteral; - - if (!isset($this->watchChains[$literal])) { - return null; - } - - $chain = $this->watchChains[$literal]; - - $chain->rewind(); - while ($chain->valid()) { - $node = $chain->current(); - $otherWatch = $node->getOtherWatch($literal); - - if (!$node->getRule()->isDisabled() && !$decisions->satisfy($otherWatch)) { - $ruleLiterals = $node->getRule()->getLiterals(); - - $alternativeLiterals = array_filter($ruleLiterals, function ($ruleLiteral) use ($literal, $otherWatch, $decisions) { - return $literal !== $ruleLiteral && - $otherWatch !== $ruleLiteral && - !$decisions->conflict($ruleLiteral); - }); - - if ($alternativeLiterals) { - reset($alternativeLiterals); - $this->moveWatch($literal, current($alternativeLiterals), $node); - continue; - } - - if ($decisions->conflict($otherWatch)) { - return $node->getRule(); - } - - $decisions->decide($otherWatch, $level, $node->getRule()); - } - - $chain->next(); - } - - return null; - } - - /** - * Moves a rule node from one watch chain to another - * - * The rule node's watched literals are updated accordingly. - * - * @param int $fromLiteral A literal the node used to watch - * @param int $toLiteral A literal the node should watch now - * @param RuleWatchNode $node The rule node to be moved - */ - protected function moveWatch($fromLiteral, $toLiteral, $node) - { - if (!isset($this->watchChains[$toLiteral])) { - $this->watchChains[$toLiteral] = new RuleWatchChain; - } - - $node->moveWatch($fromLiteral, $toLiteral); - $this->watchChains[$fromLiteral]->remove(); - $this->watchChains[$toLiteral]->unshift($node); - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php b/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php deleted file mode 100644 index eeaa541..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php +++ /dev/null @@ -1,113 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -/** - * Wrapper around a Rule which keeps track of the two literals it watches - * - * Used by RuleWatchGraph to store rules in two RuleWatchChains. - * - * @author Nils Adermann - */ -class RuleWatchNode -{ - public $watch1; - public $watch2; - - protected $rule; - - /** - * Creates a new node watching the first and second literals of the rule. - * - * @param Rule $rule The rule to wrap - */ - public function __construct($rule) - { - $this->rule = $rule; - - $literals = $rule->getLiterals(); - - $literalCount = count($literals); - $this->watch1 = $literalCount > 0 ? $literals[0] : 0; - $this->watch2 = $literalCount > 1 ? $literals[1] : 0; - } - - /** - * Places the second watch on the rule's literal, decided at the highest level - * - * Useful for learned rules where the literal for the highest rule is most - * likely to quickly lead to further decisions. - * - * @param Decisions $decisions The decisions made so far by the solver - */ - public function watch2OnHighest(Decisions $decisions) - { - $literals = $this->rule->getLiterals(); - - // if there are only 2 elements, both are being watched anyway - if (count($literals) < 3) { - return; - } - - $watchLevel = 0; - - foreach ($literals as $literal) { - $level = $decisions->decisionLevel($literal); - - if ($level > $watchLevel) { - $this->watch2 = $literal; - $watchLevel = $level; - } - } - } - - /** - * Returns the rule this node wraps - * - * @return Rule - */ - public function getRule() - { - return $this->rule; - } - - /** - * Given one watched literal, this method returns the other watched literal - * - * @param int $literal The watched literal that should not be returned - * @return int A literal - */ - public function getOtherWatch($literal) - { - if ($this->watch1 == $literal) { - return $this->watch2; - } - - return $this->watch1; - } - - /** - * Moves a watch from one literal to another - * - * @param int $from The previously watched literal - * @param int $to The literal to be watched now - */ - public function moveWatch($from, $to) - { - if ($this->watch1 == $from) { - $this->watch1 = $to; - } else { - $this->watch2 = $to; - } - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php b/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php deleted file mode 100644 index dbfafd2..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php +++ /dev/null @@ -1,874 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\IO\IOInterface; -use Composer\Repository\RepositoryInterface; -use Composer\Repository\PlatformRepository; - -/** - * @author Nils Adermann - */ -class Solver -{ - const BRANCH_LITERALS = 0; - const BRANCH_LEVEL = 1; - - /** @var PolicyInterface */ - protected $policy; - /** @var Pool */ - protected $pool; - /** @var RepositoryInterface */ - protected $installed; - /** @var RuleSet */ - protected $rules; - /** @var RuleSetGenerator */ - protected $ruleSetGenerator; - /** @var array */ - protected $jobs; - - /** @var int[] */ - protected $updateMap = array(); - /** @var RuleWatchGraph */ - protected $watchGraph; - /** @var Decisions */ - protected $decisions; - /** @var int[] */ - protected $installedMap; - - /** @var int */ - protected $propagateIndex; - /** @var array[] */ - protected $branches = array(); - /** @var Problem[] */ - protected $problems = array(); - /** @var array */ - protected $learnedPool = array(); - /** @var array */ - protected $learnedWhy = array(); - - /** @var bool */ - public $testFlagLearnedPositiveLiteral = false; - - /** @var IOInterface */ - protected $io; - - /** - * @param PolicyInterface $policy - * @param Pool $pool - * @param RepositoryInterface $installed - * @param IOInterface $io - */ - public function __construct(PolicyInterface $policy, Pool $pool, RepositoryInterface $installed, IOInterface $io) - { - $this->io = $io; - $this->policy = $policy; - $this->pool = $pool; - $this->installed = $installed; - $this->ruleSetGenerator = new RuleSetGenerator($policy, $pool); - } - - /** - * @return int - */ - public function getRuleSetSize() - { - return count($this->rules); - } - - // aka solver_makeruledecisions - - private function makeAssertionRuleDecisions() - { - $decisionStart = count($this->decisions) - 1; - - $rulesCount = count($this->rules); - for ($ruleIndex = 0; $ruleIndex < $rulesCount; $ruleIndex++) { - $rule = $this->rules->ruleById[$ruleIndex]; - - if (!$rule->isAssertion() || $rule->isDisabled()) { - continue; - } - - $literals = $rule->getLiterals(); - $literal = $literals[0]; - - if (!$this->decisions->decided($literal)) { - $this->decisions->decide($literal, 1, $rule); - continue; - } - - if ($this->decisions->satisfy($literal)) { - continue; - } - - // found a conflict - if (RuleSet::TYPE_LEARNED === $rule->getType()) { - $rule->disable(); - continue; - } - - $conflict = $this->decisions->decisionRule($literal); - - if ($conflict && RuleSet::TYPE_PACKAGE === $conflict->getType()) { - $problem = new Problem($this->pool); - - $problem->addRule($rule); - $problem->addRule($conflict); - $this->disableProblem($rule); - $this->problems[] = $problem; - continue; - } - - // conflict with another job - $problem = new Problem($this->pool); - $problem->addRule($rule); - $problem->addRule($conflict); - - // push all of our rules (can only be job rules) - // asserting this literal on the problem stack - foreach ($this->rules->getIteratorFor(RuleSet::TYPE_JOB) as $assertRule) { - if ($assertRule->isDisabled() || !$assertRule->isAssertion()) { - continue; - } - - $assertRuleLiterals = $assertRule->getLiterals(); - $assertRuleLiteral = $assertRuleLiterals[0]; - - if (abs($literal) !== abs($assertRuleLiteral)) { - continue; - } - - $problem->addRule($assertRule); - $this->disableProblem($assertRule); - } - $this->problems[] = $problem; - - $this->decisions->resetToOffset($decisionStart); - $ruleIndex = -1; - } - } - - protected function setupInstalledMap() - { - $this->installedMap = array(); - foreach ($this->installed->getPackages() as $package) { - $this->installedMap[$package->id] = $package; - } - } - - /** - * @param bool $ignorePlatformReqs - */ - protected function checkForRootRequireProblems($ignorePlatformReqs) - { - foreach ($this->jobs as $job) { - switch ($job['cmd']) { - case 'update': - $packages = $this->pool->whatProvides($job['packageName'], $job['constraint']); - foreach ($packages as $package) { - if (isset($this->installedMap[$package->id])) { - $this->updateMap[$package->id] = true; - } - } - break; - - case 'update-all': - foreach ($this->installedMap as $package) { - $this->updateMap[$package->id] = true; - } - break; - - case 'install': - if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $job['packageName'])) { - break; - } - - if (!$this->pool->whatProvides($job['packageName'], $job['constraint'])) { - $problem = new Problem($this->pool); - $problem->addRule(new GenericRule(array(), null, null, $job)); - $this->problems[] = $problem; - } - break; - } - } - } - - /** - * @param Request $request - * @param bool $ignorePlatformReqs - * @return array - */ - public function solve(Request $request, $ignorePlatformReqs = false) - { - $this->jobs = $request->getJobs(); - - $this->setupInstalledMap(); - $this->rules = $this->ruleSetGenerator->getRulesFor($this->jobs, $this->installedMap, $ignorePlatformReqs); - $this->checkForRootRequireProblems($ignorePlatformReqs); - $this->decisions = new Decisions($this->pool); - $this->watchGraph = new RuleWatchGraph; - - foreach ($this->rules as $rule) { - $this->watchGraph->insert(new RuleWatchNode($rule)); - } - - /* make decisions based on job/update assertions */ - $this->makeAssertionRuleDecisions(); - - $this->io->writeError('Resolving dependencies through SAT', true, IOInterface::DEBUG); - $before = microtime(true); - $this->runSat(true); - $this->io->writeError('', true, IOInterface::DEBUG); - $this->io->writeError(sprintf('Dependency resolution completed in %.3f seconds', microtime(true) - $before), true, IOInterface::VERBOSE); - - // decide to remove everything that's installed and undecided - foreach ($this->installedMap as $packageId => $void) { - if ($this->decisions->undecided($packageId)) { - $this->decisions->decide(-$packageId, 1, null); - } - } - - if ($this->problems) { - throw new SolverProblemsException($this->problems, $this->installedMap); - } - - $transaction = new Transaction($this->policy, $this->pool, $this->installedMap, $this->decisions); - - return $transaction->getOperations(); - } - - /** - * Makes a decision and propagates it to all rules. - * - * Evaluates each term affected by the decision (linked through watches) - * If we find unit rules we make new decisions based on them - * - * @param int $level - * @return Rule|null A rule on conflict, otherwise null. - */ - protected function propagate($level) - { - while ($this->decisions->validOffset($this->propagateIndex)) { - $decision = $this->decisions->atOffset($this->propagateIndex); - - $conflict = $this->watchGraph->propagateLiteral( - $decision[Decisions::DECISION_LITERAL], - $level, - $this->decisions - ); - - $this->propagateIndex++; - - if ($conflict) { - return $conflict; - } - } - - return null; - } - - /** - * Reverts a decision at the given level. - * - * @param int $level - */ - private function revert($level) - { - while (!$this->decisions->isEmpty()) { - $literal = $this->decisions->lastLiteral(); - - if ($this->decisions->undecided($literal)) { - break; - } - - $decisionLevel = $this->decisions->decisionLevel($literal); - - if ($decisionLevel <= $level) { - break; - } - - $this->decisions->revertLast(); - $this->propagateIndex = count($this->decisions); - } - - while (!empty($this->branches) && $this->branches[count($this->branches) - 1][self::BRANCH_LEVEL] >= $level) { - array_pop($this->branches); - } - } - - /** - * setpropagatelearn - * - * add free decision (a positive literal) to decision queue - * increase level and propagate decision - * return if no conflict. - * - * in conflict case, analyze conflict rule, add resulting - * rule to learnt rule set, make decision from learnt - * rule (always unit) and re-propagate. - * - * returns the new solver level or 0 if unsolvable - * - * @param int $level - * @param string|int $literal - * @param bool $disableRules - * @param Rule $rule - * @return int - */ - private function setPropagateLearn($level, $literal, $disableRules, Rule $rule) - { - $level++; - - $this->decisions->decide($literal, $level, $rule); - - while (true) { - $rule = $this->propagate($level); - - if (!$rule) { - break; - } - - if ($level == 1) { - return $this->analyzeUnsolvable($rule, $disableRules); - } - - // conflict - list($learnLiteral, $newLevel, $newRule, $why) = $this->analyze($level, $rule); - - if ($newLevel <= 0 || $newLevel >= $level) { - throw new SolverBugException( - "Trying to revert to invalid level ".(int) $newLevel." from level ".(int) $level."." - ); - } elseif (!$newRule) { - throw new SolverBugException( - "No rule was learned from analyzing $rule at level $level." - ); - } - - $level = $newLevel; - - $this->revert($level); - - $this->rules->add($newRule, RuleSet::TYPE_LEARNED); - - $this->learnedWhy[spl_object_hash($newRule)] = $why; - - $ruleNode = new RuleWatchNode($newRule); - $ruleNode->watch2OnHighest($this->decisions); - $this->watchGraph->insert($ruleNode); - - $this->decisions->decide($learnLiteral, $level, $newRule); - } - - return $level; - } - - /** - * @param int $level - * @param array $decisionQueue - * @param bool $disableRules - * @param Rule $rule - * @return int - */ - private function selectAndInstall($level, array $decisionQueue, $disableRules, Rule $rule) - { - // choose best package to install from decisionQueue - $literals = $this->policy->selectPreferredPackages($this->pool, $this->installedMap, $decisionQueue, $rule->getRequiredPackage()); - - $selectedLiteral = array_shift($literals); - - // if there are multiple candidates, then branch - if (count($literals)) { - $this->branches[] = array($literals, $level); - } - - return $this->setPropagateLearn($level, $selectedLiteral, $disableRules, $rule); - } - - /** - * @param int $level - * @param Rule $rule - * @return array - */ - protected function analyze($level, Rule $rule) - { - $analyzedRule = $rule; - $ruleLevel = 1; - $num = 0; - $l1num = 0; - $seen = array(); - $learnedLiterals = array(null); - - $decisionId = count($this->decisions); - - $this->learnedPool[] = array(); - - while (true) { - $this->learnedPool[count($this->learnedPool) - 1][] = $rule; - - foreach ($rule->getLiterals() as $literal) { - // skip the one true literal - if ($this->decisions->satisfy($literal)) { - continue; - } - - if (isset($seen[abs($literal)])) { - continue; - } - $seen[abs($literal)] = true; - - $l = $this->decisions->decisionLevel($literal); - - if (1 === $l) { - $l1num++; - } elseif ($level === $l) { - $num++; - } else { - // not level1 or conflict level, add to new rule - $learnedLiterals[] = $literal; - - if ($l > $ruleLevel) { - $ruleLevel = $l; - } - } - } - - $l1retry = true; - while ($l1retry) { - $l1retry = false; - - if (!$num && !--$l1num) { - // all level 1 literals done - break 2; - } - - while (true) { - if ($decisionId <= 0) { - throw new SolverBugException( - "Reached invalid decision id $decisionId while looking through $rule for a literal present in the analyzed rule $analyzedRule." - ); - } - - $decisionId--; - - $decision = $this->decisions->atOffset($decisionId); - $literal = $decision[Decisions::DECISION_LITERAL]; - - if (isset($seen[abs($literal)])) { - break; - } - } - - unset($seen[abs($literal)]); - - if ($num && 0 === --$num) { - if ($literal < 0) { - $this->testFlagLearnedPositiveLiteral = true; - } - $learnedLiterals[0] = -$literal; - - if (!$l1num) { - break 2; - } - - foreach ($learnedLiterals as $i => $learnedLiteral) { - if ($i !== 0) { - unset($seen[abs($learnedLiteral)]); - } - } - // only level 1 marks left - $l1num++; - $l1retry = true; - } - } - - $decision = $this->decisions->atOffset($decisionId); - $rule = $decision[Decisions::DECISION_REASON]; - } - - $why = count($this->learnedPool) - 1; - - if (!$learnedLiterals[0]) { - throw new SolverBugException( - "Did not find a learnable literal in analyzed rule $analyzedRule." - ); - } - - $newRule = new GenericRule($learnedLiterals, Rule::RULE_LEARNED, $why); - - return array($learnedLiterals[0], $ruleLevel, $newRule, $why); - } - - /** - * @param Problem $problem - * @param Rule $conflictRule - */ - private function analyzeUnsolvableRule(Problem $problem, Rule $conflictRule) - { - if ($conflictRule->getType() == RuleSet::TYPE_LEARNED) { - $why = spl_object_hash($conflictRule); - $learnedWhy = $this->learnedWhy[$why]; - $problemRules = $this->learnedPool[$learnedWhy]; - - foreach ($problemRules as $problemRule) { - $this->analyzeUnsolvableRule($problem, $problemRule); - } - - return; - } - - if ($conflictRule->getType() == RuleSet::TYPE_PACKAGE) { - // package rules cannot be part of a problem - return; - } - - $problem->nextSection(); - $problem->addRule($conflictRule); - } - - /** - * @param Rule $conflictRule - * @param bool $disableRules - * @return int - */ - private function analyzeUnsolvable(Rule $conflictRule, $disableRules) - { - $problem = new Problem($this->pool); - $problem->addRule($conflictRule); - - $this->analyzeUnsolvableRule($problem, $conflictRule); - - $this->problems[] = $problem; - - $seen = array(); - $literals = $conflictRule->getLiterals(); - - foreach ($literals as $literal) { - // skip the one true literal - if ($this->decisions->satisfy($literal)) { - continue; - } - $seen[abs($literal)] = true; - } - - foreach ($this->decisions as $decision) { - $literal = $decision[Decisions::DECISION_LITERAL]; - - // skip literals that are not in this rule - if (!isset($seen[abs($literal)])) { - continue; - } - - $why = $decision[Decisions::DECISION_REASON]; - - $problem->addRule($why); - $this->analyzeUnsolvableRule($problem, $why); - - $literals = $why->getLiterals(); - - foreach ($literals as $literal) { - // skip the one true literal - if ($this->decisions->satisfy($literal)) { - continue; - } - $seen[abs($literal)] = true; - } - } - - if ($disableRules) { - foreach ($this->problems[count($this->problems) - 1] as $reason) { - $this->disableProblem($reason['rule']); - } - - $this->resetSolver(); - - return 1; - } - - return 0; - } - - /** - * @param Rule $why - */ - private function disableProblem(Rule $why) - { - $job = $why->getJob(); - - if (!$job) { - $why->disable(); - - return; - } - - // disable all rules of this job - foreach ($this->rules as $rule) { - /** @var Rule $rule */ - if ($job === $rule->getJob()) { - $rule->disable(); - } - } - } - - private function resetSolver() - { - $this->decisions->reset(); - - $this->propagateIndex = 0; - $this->branches = array(); - - $this->enableDisableLearnedRules(); - $this->makeAssertionRuleDecisions(); - } - - /** - * enable/disable learnt rules - * - * we have enabled or disabled some of our rules. We now re-enable all - * of our learnt rules except the ones that were learnt from rules that - * are now disabled. - */ - private function enableDisableLearnedRules() - { - foreach ($this->rules->getIteratorFor(RuleSet::TYPE_LEARNED) as $rule) { - $why = $this->learnedWhy[spl_object_hash($rule)]; - $problemRules = $this->learnedPool[$why]; - - $foundDisabled = false; - foreach ($problemRules as $problemRule) { - if ($problemRule->isDisabled()) { - $foundDisabled = true; - break; - } - } - - if ($foundDisabled && $rule->isEnabled()) { - $rule->disable(); - } elseif (!$foundDisabled && $rule->isDisabled()) { - $rule->enable(); - } - } - } - - /** - * @param bool $disableRules - */ - private function runSat($disableRules = true) - { - $this->propagateIndex = 0; - - /* - * here's the main loop: - * 1) propagate new decisions (only needed once) - * 2) fulfill jobs - * 3) fulfill all unresolved rules - * 4) minimalize solution if we had choices - * if we encounter a problem, we rewind to a safe level and restart - * with step 1 - */ - - $decisionQueue = array(); - $decisionSupplementQueue = array(); - /** - * @todo this makes $disableRules always false; determine the rationale and possibly remove dead code? - */ - $disableRules = array(); - - $level = 1; - $systemLevel = $level + 1; - $installedPos = 0; - - while (true) { - if (1 === $level) { - $conflictRule = $this->propagate($level); - if (null !== $conflictRule) { - if ($this->analyzeUnsolvable($conflictRule, $disableRules)) { - continue; - } - - return; - } - } - - // handle job rules - if ($level < $systemLevel) { - $iterator = $this->rules->getIteratorFor(RuleSet::TYPE_JOB); - foreach ($iterator as $rule) { - if ($rule->isEnabled()) { - $decisionQueue = array(); - $noneSatisfied = true; - - foreach ($rule->getLiterals() as $literal) { - if ($this->decisions->satisfy($literal)) { - $noneSatisfied = false; - break; - } - if ($literal > 0 && $this->decisions->undecided($literal)) { - $decisionQueue[] = $literal; - } - } - - if ($noneSatisfied && count($decisionQueue)) { - // prune all update packages until installed version - // except for requested updates - if (count($this->installed) != count($this->updateMap)) { - $prunedQueue = array(); - foreach ($decisionQueue as $literal) { - if (isset($this->installedMap[abs($literal)])) { - $prunedQueue[] = $literal; - if (isset($this->updateMap[abs($literal)])) { - $prunedQueue = $decisionQueue; - break; - } - } - } - $decisionQueue = $prunedQueue; - } - } - - if ($noneSatisfied && count($decisionQueue)) { - $oLevel = $level; - $level = $this->selectAndInstall($level, $decisionQueue, $disableRules, $rule); - - if (0 === $level) { - return; - } - if ($level <= $oLevel) { - break; - } - } - } - } - - $systemLevel = $level + 1; - - // jobs left - $iterator->next(); - if ($iterator->valid()) { - continue; - } - } - - if ($level < $systemLevel) { - $systemLevel = $level; - } - - $rulesCount = count($this->rules); - $pass = 1; - - $this->io->writeError('Looking at all rules.', true, IOInterface::DEBUG); - for ($i = 0, $n = 0; $n < $rulesCount; $i++, $n++) { - if ($i == $rulesCount) { - if (1 === $pass) { - $this->io->writeError("Something's changed, looking at all rules again (pass #$pass)", false, IOInterface::DEBUG); - } else { - $this->io->overwriteError("Something's changed, looking at all rules again (pass #$pass)", false, null, IOInterface::DEBUG); - } - - $i = 0; - $pass++; - } - - $rule = $this->rules->ruleById[$i]; - $literals = $rule->getLiterals(); - - if ($rule->isDisabled()) { - continue; - } - - $decisionQueue = array(); - - // make sure that - // * all negative literals are installed - // * no positive literal is installed - // i.e. the rule is not fulfilled and we - // just need to decide on the positive literals - // - foreach ($literals as $literal) { - if ($literal <= 0) { - if (!$this->decisions->decidedInstall($literal)) { - continue 2; // next rule - } - } else { - if ($this->decisions->decidedInstall($literal)) { - continue 2; // next rule - } - if ($this->decisions->undecided($literal)) { - $decisionQueue[] = $literal; - } - } - } - - // need to have at least 2 item to pick from - if (count($decisionQueue) < 2) { - continue; - } - - $level = $this->selectAndInstall($level, $decisionQueue, $disableRules, $rule); - - if (0 === $level) { - return; - } - - // something changed, so look at all rules again - $rulesCount = count($this->rules); - $n = -1; - } - - if ($level < $systemLevel) { - continue; - } - - // minimization step - if (count($this->branches)) { - $lastLiteral = null; - $lastLevel = null; - $lastBranchIndex = 0; - $lastBranchOffset = 0; - - for ($i = count($this->branches) - 1; $i >= 0; $i--) { - list($literals, $l) = $this->branches[$i]; - - foreach ($literals as $offset => $literal) { - if ($literal && $literal > 0 && $this->decisions->decisionLevel($literal) > $l + 1) { - $lastLiteral = $literal; - $lastBranchIndex = $i; - $lastBranchOffset = $offset; - $lastLevel = $l; - } - } - } - - if ($lastLiteral) { - unset($this->branches[$lastBranchIndex][self::BRANCH_LITERALS][$lastBranchOffset]); - - $level = $lastLevel; - $this->revert($level); - - $why = $this->decisions->lastReason(); - - $level = $this->setPropagateLearn($level, $lastLiteral, $disableRules, $why); - - if ($level == 0) { - return; - } - - continue; - } - } - - break; - } - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php b/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php deleted file mode 100644 index 6920411..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php +++ /dev/null @@ -1,27 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -/** - * @author Nils Adermann - */ -class SolverBugException extends \RuntimeException -{ - public function __construct($message) - { - parent::__construct( - $message."\nThis exception was most likely caused by a bug in Composer.\n". - "Please report the command you ran, the exact error you received, and your composer.json on https://github.com/composer/composer/issues - thank you!\n" - ); - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php b/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php deleted file mode 100644 index 1428956..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php +++ /dev/null @@ -1,88 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Util\IniHelper; - -/** - * @author Nils Adermann - */ -class SolverProblemsException extends \RuntimeException -{ - protected $problems; - protected $installedMap; - - public function __construct(array $problems, array $installedMap) - { - $this->problems = $problems; - $this->installedMap = $installedMap; - - parent::__construct($this->createMessage(), 2); - } - - protected function createMessage() - { - $text = "\n"; - $hasExtensionProblems = false; - foreach ($this->problems as $i => $problem) { - $text .= " Problem ".($i + 1).$problem->getPrettyString($this->installedMap)."\n"; - - if (!$hasExtensionProblems && $this->hasExtensionProblems($problem->getReasons())) { - $hasExtensionProblems = true; - } - } - - if (strpos($text, 'could not be found') || strpos($text, 'no matching package found')) { - $text .= "\nPotential causes:\n - A typo in the package name\n - The package is not available in a stable-enough version according to your minimum-stability setting\n see for more details.\n - It's a private package and you forgot to add a custom repository to find it\n\nRead for further common problems."; - } - - if ($hasExtensionProblems) { - $text .= $this->createExtensionHint(); - } - - return $text; - } - - public function getProblems() - { - return $this->problems; - } - - private function createExtensionHint() - { - $paths = IniHelper::getAll(); - - if (count($paths) === 1 && empty($paths[0])) { - return ''; - } - - $text = "\n To enable extensions, verify that they are enabled in your .ini files:\n - "; - $text .= implode("\n - ", $paths); - $text .= "\n You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode."; - - return $text; - } - - private function hasExtensionProblems(array $reasonSets) - { - foreach ($reasonSets as $reasonSet) { - foreach ($reasonSet as $reason) { - if (isset($reason["rule"]) && 0 === strpos($reason["rule"]->getRequiredPackage(), 'ext-')) { - return true; - } - } - } - - return false; - } -} diff --git a/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php b/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php deleted file mode 100644 index c8d3bbe..0000000 --- a/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php +++ /dev/null @@ -1,244 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\DependencyResolver; - -use Composer\Package\AliasPackage; - -/** - * @author Nils Adermann - */ -class Transaction -{ - protected $policy; - protected $pool; - protected $installedMap; - protected $decisions; - protected $transaction; - - public function __construct($policy, $pool, $installedMap, $decisions) - { - $this->policy = $policy; - $this->pool = $pool; - $this->installedMap = $installedMap; - $this->decisions = $decisions; - $this->transaction = array(); - } - - public function getOperations() - { - $installMeansUpdateMap = $this->findUpdates(); - - $updateMap = array(); - $installMap = array(); - $uninstallMap = array(); - - foreach ($this->decisions as $i => $decision) { - $literal = $decision[Decisions::DECISION_LITERAL]; - $reason = $decision[Decisions::DECISION_REASON]; - - $package = $this->pool->literalToPackage($literal); - - // wanted & installed || !wanted & !installed - if (($literal > 0) == isset($this->installedMap[$package->id])) { - continue; - } - - if ($literal > 0) { - if (isset($installMeansUpdateMap[abs($literal)]) && !$package instanceof AliasPackage) { - $source = $installMeansUpdateMap[abs($literal)]; - - $updateMap[$package->id] = array( - 'package' => $package, - 'source' => $source, - 'reason' => $reason, - ); - - // avoid updates to one package from multiple origins - unset($installMeansUpdateMap[abs($literal)]); - $ignoreRemove[$source->id] = true; - } else { - $installMap[$package->id] = array( - 'package' => $package, - 'reason' => $reason, - ); - } - } - } - - foreach ($this->decisions as $i => $decision) { - $literal = $decision[Decisions::DECISION_LITERAL]; - $reason = $decision[Decisions::DECISION_REASON]; - $package = $this->pool->literalToPackage($literal); - - if ($literal <= 0 && - isset($this->installedMap[$package->id]) && - !isset($ignoreRemove[$package->id])) { - $uninstallMap[$package->id] = array( - 'package' => $package, - 'reason' => $reason, - ); - } - } - - $this->transactionFromMaps($installMap, $updateMap, $uninstallMap); - - return $this->transaction; - } - - protected function transactionFromMaps($installMap, $updateMap, $uninstallMap) - { - $queue = array_map( - function ($operation) { - return $operation['package']; - }, - $this->findRootPackages($installMap, $updateMap) - ); - - $visited = array(); - - while (!empty($queue)) { - $package = array_pop($queue); - $packageId = $package->id; - - if (!isset($visited[$packageId])) { - $queue[] = $package; - - if ($package instanceof AliasPackage) { - $queue[] = $package->getAliasOf(); - } else { - foreach ($package->getRequires() as $link) { - $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); - - foreach ($possibleRequires as $require) { - $queue[] = $require; - } - } - } - - $visited[$package->id] = true; - } else { - if (isset($installMap[$packageId])) { - $this->install( - $installMap[$packageId]['package'], - $installMap[$packageId]['reason'] - ); - unset($installMap[$packageId]); - } - if (isset($updateMap[$packageId])) { - $this->update( - $updateMap[$packageId]['source'], - $updateMap[$packageId]['package'], - $updateMap[$packageId]['reason'] - ); - unset($updateMap[$packageId]); - } - } - } - - foreach ($uninstallMap as $uninstall) { - $this->uninstall($uninstall['package'], $uninstall['reason']); - } - } - - protected function findRootPackages($installMap, $updateMap) - { - $packages = $installMap + $updateMap; - $roots = $packages; - - foreach ($packages as $packageId => $operation) { - $package = $operation['package']; - - if (!isset($roots[$packageId])) { - continue; - } - - foreach ($package->getRequires() as $link) { - $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); - - foreach ($possibleRequires as $require) { - if ($require !== $package) { - unset($roots[$require->id]); - } - } - } - } - - return $roots; - } - - protected function findUpdates() - { - $installMeansUpdateMap = array(); - - foreach ($this->decisions as $i => $decision) { - $literal = $decision[Decisions::DECISION_LITERAL]; - $package = $this->pool->literalToPackage($literal); - - if ($package instanceof AliasPackage) { - continue; - } - - // !wanted & installed - if ($literal <= 0 && isset($this->installedMap[$package->id])) { - $updates = $this->policy->findUpdatePackages($this->pool, $this->installedMap, $package); - - $literals = array($package->id); - - foreach ($updates as $update) { - $literals[] = $update->id; - } - - foreach ($literals as $updateLiteral) { - if ($updateLiteral !== $literal) { - $installMeansUpdateMap[abs($updateLiteral)] = $package; - } - } - } - } - - return $installMeansUpdateMap; - } - - protected function install($package, $reason) - { - if ($package instanceof AliasPackage) { - return $this->markAliasInstalled($package, $reason); - } - - $this->transaction[] = new Operation\InstallOperation($package, $reason); - } - - protected function update($from, $to, $reason) - { - $this->transaction[] = new Operation\UpdateOperation($from, $to, $reason); - } - - protected function uninstall($package, $reason) - { - if ($package instanceof AliasPackage) { - return $this->markAliasUninstalled($package, $reason); - } - - $this->transaction[] = new Operation\UninstallOperation($package, $reason); - } - - protected function markAliasInstalled($package, $reason) - { - $this->transaction[] = new Operation\MarkAliasInstalledOperation($package, $reason); - } - - protected function markAliasUninstalled($package, $reason) - { - $this->transaction[] = new Operation\MarkAliasUninstalledOperation($package, $reason); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php b/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php deleted file mode 100644 index d041a7f..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php +++ /dev/null @@ -1,135 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; -use Symfony\Component\Finder\Finder; -use Composer\IO\IOInterface; - -/** - * Base downloader for archives - * - * @author Kirill chEbba Chebunin - * @author Jordi Boggiano - * @author François Pluchino - */ -abstract class ArchiveDownloader extends FileDownloader -{ - /** - * {@inheritDoc} - * @throws \RuntimeException - * @throws \UnexpectedValueException - */ - public function download(PackageInterface $package, $path, $output = true) - { - $temporaryDir = $this->config->get('vendor-dir').'/composer/'.substr(md5(uniqid('', true)), 0, 8); - $retries = 3; - while ($retries--) { - $fileName = parent::download($package, $path, $output); - - if ($output) { - $this->io->writeError(' Extracting archive', false, IOInterface::VERBOSE); - } - - try { - $this->filesystem->ensureDirectoryExists($temporaryDir); - try { - $this->extract($fileName, $temporaryDir); - } catch (\Exception $e) { - // remove cache if the file was corrupted - parent::clearLastCacheWrite($package); - throw $e; - } - - $this->filesystem->unlink($fileName); - - $contentDir = $this->getFolderContent($temporaryDir); - - // only one dir in the archive, extract its contents out of it - if (1 === count($contentDir) && is_dir(reset($contentDir))) { - $contentDir = $this->getFolderContent((string) reset($contentDir)); - } - - // move files back out of the temp dir - foreach ($contentDir as $file) { - $file = (string) $file; - $this->filesystem->rename($file, $path . '/' . basename($file)); - } - - $this->filesystem->removeDirectory($temporaryDir); - if ($this->filesystem->isDirEmpty($this->config->get('vendor-dir').'/composer/')) { - $this->filesystem->removeDirectory($this->config->get('vendor-dir').'/composer/'); - } - if ($this->filesystem->isDirEmpty($this->config->get('vendor-dir'))) { - $this->filesystem->removeDirectory($this->config->get('vendor-dir')); - } - } catch (\Exception $e) { - // clean up - $this->filesystem->removeDirectory($path); - $this->filesystem->removeDirectory($temporaryDir); - - // retry downloading if we have an invalid zip file - if ($retries && $e instanceof \UnexpectedValueException && class_exists('ZipArchive') && $e->getCode() === \ZipArchive::ER_NOZIP) { - $this->io->writeError(''); - if ($this->io->isDebug()) { - $this->io->writeError(' Invalid zip file ('.$e->getMessage().'), retrying...'); - } else { - $this->io->writeError(' Invalid zip file, retrying...'); - } - usleep(500000); - continue; - } - - throw $e; - } - - break; - } - } - - /** - * {@inheritdoc} - */ - protected function getFileName(PackageInterface $package, $path) - { - return rtrim($path.'/'.md5($path.spl_object_hash($package)).'.'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_EXTENSION), '.'); - } - - /** - * Extract file to directory - * - * @param string $file Extracted file - * @param string $path Directory - * - * @throws \UnexpectedValueException If can not extract downloaded file to path - */ - abstract protected function extract($file, $path); - - /** - * Returns the folder content, excluding dotfiles - * - * @param string $dir Directory - * @return \SplFileInfo[] - */ - private function getFolderContent($dir) - { - $finder = Finder::create() - ->ignoreVCS(false) - ->ignoreDotFiles(false) - ->notName('.DS_Store') - ->depth(0) - ->in($dir); - - return iterator_to_array($finder); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php b/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php deleted file mode 100644 index 3fb1dc5..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; - -/** - * ChangeReport interface. - * - * @author Sascha Egerer - */ -interface ChangeReportInterface -{ - /** - * Checks for changes to the local copy - * - * @param PackageInterface $package package instance - * @param string $path package directory - * @return string|null changes or null - */ - public function getLocalChanges(PackageInterface $package, $path); -} diff --git a/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php b/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php deleted file mode 100644 index 15c00a6..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php +++ /dev/null @@ -1,325 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; -use Composer\IO\IOInterface; -use Composer\Util\Filesystem; - -/** - * Downloaders manager. - * - * @author Konstantin Kudryashov - */ -class DownloadManager -{ - private $io; - private $preferDist = false; - private $preferSource = false; - private $packagePreferences = array(); - private $filesystem; - private $downloaders = array(); - - /** - * Initializes download manager. - * - * @param IOInterface $io The Input Output Interface - * @param bool $preferSource prefer downloading from source - * @param Filesystem|null $filesystem custom Filesystem object - */ - public function __construct(IOInterface $io, $preferSource = false, Filesystem $filesystem = null) - { - $this->io = $io; - $this->preferSource = $preferSource; - $this->filesystem = $filesystem ?: new Filesystem(); - } - - /** - * Makes downloader prefer source installation over the dist. - * - * @param bool $preferSource prefer downloading from source - * @return DownloadManager - */ - public function setPreferSource($preferSource) - { - $this->preferSource = $preferSource; - - return $this; - } - - /** - * Makes downloader prefer dist installation over the source. - * - * @param bool $preferDist prefer downloading from dist - * @return DownloadManager - */ - public function setPreferDist($preferDist) - { - $this->preferDist = $preferDist; - - return $this; - } - - /** - * Sets fine tuned preference settings for package level source/dist selection. - * - * @param array $preferences array of preferences by package patterns - * @return DownloadManager - */ - public function setPreferences(array $preferences) - { - $this->packagePreferences = $preferences; - - return $this; - } - - /** - * Sets whether to output download progress information for all registered - * downloaders - * - * @param bool $outputProgress - * @return DownloadManager - */ - public function setOutputProgress($outputProgress) - { - foreach ($this->downloaders as $downloader) { - $downloader->setOutputProgress($outputProgress); - } - - return $this; - } - - /** - * Sets installer downloader for a specific installation type. - * - * @param string $type installation type - * @param DownloaderInterface $downloader downloader instance - * @return DownloadManager - */ - public function setDownloader($type, DownloaderInterface $downloader) - { - $type = strtolower($type); - $this->downloaders[$type] = $downloader; - - return $this; - } - - /** - * Returns downloader for a specific installation type. - * - * @param string $type installation type - * @throws \InvalidArgumentException if downloader for provided type is not registered - * @return DownloaderInterface - */ - public function getDownloader($type) - { - $type = strtolower($type); - if (!isset($this->downloaders[$type])) { - throw new \InvalidArgumentException(sprintf('Unknown downloader type: %s. Available types: %s.', $type, implode(', ', array_keys($this->downloaders)))); - } - - return $this->downloaders[$type]; - } - - /** - * Returns downloader for already installed package. - * - * @param PackageInterface $package package instance - * @throws \InvalidArgumentException if package has no installation source specified - * @throws \LogicException if specific downloader used to load package with - * wrong type - * @return DownloaderInterface|null - */ - public function getDownloaderForInstalledPackage(PackageInterface $package) - { - $installationSource = $package->getInstallationSource(); - - if ('metapackage' === $package->getType()) { - return; - } - - if ('dist' === $installationSource) { - $downloader = $this->getDownloader($package->getDistType()); - } elseif ('source' === $installationSource) { - $downloader = $this->getDownloader($package->getSourceType()); - } else { - throw new \InvalidArgumentException( - 'Package '.$package.' seems not been installed properly' - ); - } - - if ($installationSource !== $downloader->getInstallationSource()) { - throw new \LogicException(sprintf( - 'Downloader "%s" is a %s type downloader and can not be used to download %s for package %s', - get_class($downloader), - $downloader->getInstallationSource(), - $installationSource, - $package - )); - } - - return $downloader; - } - - /** - * Downloads package into target dir. - * - * @param PackageInterface $package package instance - * @param string $targetDir target dir - * @param bool $preferSource prefer installation from source - * - * @throws \InvalidArgumentException if package have no urls to download from - * @throws \RuntimeException - */ - public function download(PackageInterface $package, $targetDir, $preferSource = null) - { - $preferSource = null !== $preferSource ? $preferSource : $this->preferSource; - $sourceType = $package->getSourceType(); - $distType = $package->getDistType(); - - $sources = array(); - if ($sourceType) { - $sources[] = 'source'; - } - if ($distType) { - $sources[] = 'dist'; - } - - if (empty($sources)) { - throw new \InvalidArgumentException('Package '.$package.' must have a source or dist specified'); - } - - if (!$preferSource && ($this->preferDist || 'dist' === $this->resolvePackageInstallPreference($package))) { - $sources = array_reverse($sources); - } - - $this->filesystem->ensureDirectoryExists($targetDir); - - foreach ($sources as $i => $source) { - if (isset($e)) { - $this->io->writeError(' Now trying to download from ' . $source . ''); - } - $package->setInstallationSource($source); - try { - $downloader = $this->getDownloaderForInstalledPackage($package); - if ($downloader) { - $downloader->download($package, $targetDir); - } - break; - } catch (\RuntimeException $e) { - if ($i === count($sources) - 1) { - throw $e; - } - - $this->io->writeError( - ' Failed to download '. - $package->getPrettyName(). - ' from ' . $source . ': '. - $e->getMessage().'' - ); - } - } - } - - /** - * Updates package from initial to target version. - * - * @param PackageInterface $initial initial package version - * @param PackageInterface $target target package version - * @param string $targetDir target dir - * - * @throws \InvalidArgumentException if initial package is not installed - */ - public function update(PackageInterface $initial, PackageInterface $target, $targetDir) - { - $downloader = $this->getDownloaderForInstalledPackage($initial); - if (!$downloader) { - return; - } - - $installationSource = $initial->getInstallationSource(); - - if ('dist' === $installationSource) { - $initialType = $initial->getDistType(); - $targetType = $target->getDistType(); - } else { - $initialType = $initial->getSourceType(); - $targetType = $target->getSourceType(); - } - - // upgrading from a dist stable package to a dev package, force source reinstall - if ($target->isDev() && 'dist' === $installationSource) { - $downloader->remove($initial, $targetDir); - $this->download($target, $targetDir); - - return; - } - - if ($initialType === $targetType) { - $target->setInstallationSource($installationSource); - try { - $downloader->update($initial, $target, $targetDir); - - return; - } catch (\RuntimeException $e) { - if (!$this->io->isInteractive()) { - throw $e; - } - $this->io->writeError(' Update failed ('.$e->getMessage().')'); - if (!$this->io->askConfirmation(' Would you like to try reinstalling the package instead [yes]? ', true)) { - throw $e; - } - } - } - - $downloader->remove($initial, $targetDir); - $this->download($target, $targetDir, 'source' === $installationSource); - } - - /** - * Removes package from target dir. - * - * @param PackageInterface $package package instance - * @param string $targetDir target dir - */ - public function remove(PackageInterface $package, $targetDir) - { - $downloader = $this->getDownloaderForInstalledPackage($package); - if ($downloader) { - $downloader->remove($package, $targetDir); - } - } - - /** - * Determines the install preference of a package - * - * @param PackageInterface $package package instance - * - * @return string - */ - protected function resolvePackageInstallPreference(PackageInterface $package) - { - foreach ($this->packagePreferences as $pattern => $preference) { - $pattern = '{^'.str_replace('\\*', '.*', preg_quote($pattern)).'$}i'; - if (preg_match($pattern, $package->getName())) { - if ('dist' === $preference || (!$package->isDev() && 'auto' === $preference)) { - return 'dist'; - } - - return 'source'; - } - } - - return $package->isDev() ? 'source' : 'dist'; - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php b/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php deleted file mode 100644 index 713bf36..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php +++ /dev/null @@ -1,64 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; - -/** - * Downloader interface. - * - * @author Konstantin Kudryashov - * @author Jordi Boggiano - */ -interface DownloaderInterface -{ - /** - * Returns installation source (either source or dist). - * - * @return string "source" or "dist" - */ - public function getInstallationSource(); - - /** - * Downloads specific package into specific folder. - * - * @param PackageInterface $package package instance - * @param string $path download path - */ - public function download(PackageInterface $package, $path); - - /** - * Updates specific package in specific folder from initial to target version. - * - * @param PackageInterface $initial initial package - * @param PackageInterface $target updated package - * @param string $path download path - */ - public function update(PackageInterface $initial, PackageInterface $target, $path); - - /** - * Removes specific package from specific folder. - * - * @param PackageInterface $package package instance - * @param string $path download path - */ - public function remove(PackageInterface $package, $path); - - /** - * Sets whether to output download progress information or not - * - * @param bool $outputProgress - * @return DownloaderInterface - */ - public function setOutputProgress($outputProgress); -} diff --git a/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php b/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php deleted file mode 100644 index 7fbd4ee..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; - -/** - * DVCS Downloader interface. - * - * @author James Titcumb - */ -interface DvcsDownloaderInterface -{ - /** - * Checks for unpushed changes to a current branch - * - * @param PackageInterface $package package directory - * @param string $path package directory - * @return string|null changes or null - */ - public function getUnpushedChanges(PackageInterface $package, $path); -} diff --git a/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php b/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php deleted file mode 100644 index 819fbce..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php +++ /dev/null @@ -1,322 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Config; -use Composer\Cache; -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\IO\NullIO; -use Composer\Package\Comparer\Comparer; -use Composer\Package\PackageInterface; -use Composer\Package\Version\VersionParser; -use Composer\Plugin\PluginEvents; -use Composer\Plugin\PreFileDownloadEvent; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Util\Filesystem; -use Composer\Util\RemoteFilesystem; -use Composer\Util\Url as UrlUtil; - -/** - * Base downloader for files - * - * @author Kirill chEbba Chebunin - * @author Jordi Boggiano - * @author François Pluchino - * @author Nils Adermann - */ -class FileDownloader implements DownloaderInterface, ChangeReportInterface -{ - protected $io; - protected $config; - protected $rfs; - protected $filesystem; - protected $cache; - protected $outputProgress = true; - private $lastCacheWrites = array(); - private $eventDispatcher; - - /** - * Constructor. - * - * @param IOInterface $io The IO instance - * @param Config $config The config - * @param EventDispatcher $eventDispatcher The event dispatcher - * @param Cache $cache Optional cache instance - * @param RemoteFilesystem $rfs The remote filesystem - * @param Filesystem $filesystem The filesystem - */ - public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, RemoteFilesystem $rfs = null, Filesystem $filesystem = null) - { - $this->io = $io; - $this->config = $config; - $this->eventDispatcher = $eventDispatcher; - $this->rfs = $rfs ?: Factory::createRemoteFilesystem($this->io, $config); - $this->filesystem = $filesystem ?: new Filesystem(); - $this->cache = $cache; - - if ($this->cache && $this->cache->gcIsNecessary()) { - $this->cache->gc($config->get('cache-files-ttl'), $config->get('cache-files-maxsize')); - } - } - - /** - * {@inheritDoc} - */ - public function getInstallationSource() - { - return 'dist'; - } - - /** - * {@inheritDoc} - */ - public function download(PackageInterface $package, $path, $output = true) - { - if (!$package->getDistUrl()) { - throw new \InvalidArgumentException('The given package is missing url information'); - } - - if ($output) { - $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . "): ", false); - } - - $urls = $package->getDistUrls(); - while ($url = array_shift($urls)) { - try { - $fileName = $this->doDownload($package, $path, $url); - break; - } catch (\Exception $e) { - if ($this->io->isDebug()) { - $this->io->writeError(''); - $this->io->writeError('Failed: ['.get_class($e).'] '.$e->getCode().': '.$e->getMessage()); - } elseif (count($urls)) { - $this->io->writeError(''); - $this->io->writeError(' Failed, trying the next URL ('.$e->getCode().': '.$e->getMessage().')', false); - } - - if (!count($urls)) { - throw $e; - } - } - } - - if ($output) { - $this->io->writeError(''); - } - - return $fileName; - } - - protected function doDownload(PackageInterface $package, $path, $url) - { - $this->filesystem->emptyDirectory($path); - - $fileName = $this->getFileName($package, $path); - - $processedUrl = $this->processUrl($package, $url); - $origin = RemoteFilesystem::getOrigin($processedUrl); - - $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->rfs, $processedUrl); - if ($this->eventDispatcher) { - $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); - } - $rfs = $preFileDownloadEvent->getRemoteFilesystem(); - - try { - $checksum = $package->getDistSha1Checksum(); - $cacheKey = $this->getCacheKey($package, $processedUrl); - - // use from cache if it is present and has a valid checksum or we have no checksum to check against - if ($this->cache && (!$checksum || $checksum === $this->cache->sha1($cacheKey)) && $this->cache->copyTo($cacheKey, $fileName)) { - $this->io->writeError('Loading from cache', false); - } else { - // download if cache restore failed - if (!$this->outputProgress) { - $this->io->writeError('Downloading', false); - } - - // try to download 3 times then fail hard - $retries = 3; - while ($retries--) { - try { - $rfs->copy($origin, $processedUrl, $fileName, $this->outputProgress, $package->getTransportOptions()); - break; - } catch (TransportException $e) { - // if we got an http response with a proper code, then requesting again will probably not help, abort - if ((0 !== $e->getCode() && !in_array($e->getCode(), array(500, 502, 503, 504))) || !$retries) { - throw $e; - } - $this->io->writeError(''); - $this->io->writeError(' Download failed, retrying...', true, IOInterface::VERBOSE); - usleep(500000); - } - } - - if (!$this->outputProgress) { - $this->io->writeError(' (100%)', false); - } - - if ($this->cache) { - $this->lastCacheWrites[$package->getName()] = $cacheKey; - $this->cache->copyFrom($cacheKey, $fileName); - } - } - - if (!file_exists($fileName)) { - throw new \UnexpectedValueException($url.' could not be saved to '.$fileName.', make sure the' - .' directory is writable and you have internet connectivity'); - } - - if ($checksum && hash_file('sha1', $fileName) !== $checksum) { - throw new \UnexpectedValueException('The checksum verification of the file failed (downloaded from '.$url.')'); - } - } catch (\Exception $e) { - // clean up - $this->filesystem->removeDirectory($path); - $this->clearLastCacheWrite($package); - throw $e; - } - - return $fileName; - } - - /** - * {@inheritDoc} - */ - public function setOutputProgress($outputProgress) - { - $this->outputProgress = $outputProgress; - - return $this; - } - - protected function clearLastCacheWrite(PackageInterface $package) - { - if ($this->cache && isset($this->lastCacheWrites[$package->getName()])) { - $this->cache->remove($this->lastCacheWrites[$package->getName()]); - unset($this->lastCacheWrites[$package->getName()]); - } - } - - /** - * {@inheritDoc} - */ - public function update(PackageInterface $initial, PackageInterface $target, $path) - { - $name = $target->getName(); - $from = $initial->getFullPrettyVersion(); - $to = $target->getFullPrettyVersion(); - - $actionName = VersionParser::isUpgrade($initial->getVersion(), $target->getVersion()) ? 'Updating' : 'Downgrading'; - $this->io->writeError(" - " . $actionName . " " . $name . " (" . $from . " => " . $to . "): ", false); - - $this->remove($initial, $path, false); - $this->download($target, $path, false); - - $this->io->writeError(''); - } - - /** - * {@inheritDoc} - */ - public function remove(PackageInterface $package, $path, $output = true) - { - if ($output) { - $this->io->writeError(" - Removing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); - } - if (!$this->filesystem->removeDirectory($path)) { - throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); - } - } - - /** - * Gets file name for specific package - * - * @param PackageInterface $package package instance - * @param string $path download path - * @return string file name - */ - protected function getFileName(PackageInterface $package, $path) - { - return $path.'/'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_BASENAME); - } - - /** - * Process the download url - * - * @param PackageInterface $package package the url is coming from - * @param string $url download url - * @throws \RuntimeException If any problem with the url - * @return string url - */ - protected function processUrl(PackageInterface $package, $url) - { - if (!extension_loaded('openssl') && 0 === strpos($url, 'https:')) { - throw new \RuntimeException('You must enable the openssl extension to download files via https'); - } - - if ($package->getDistReference()) { - $url = UrlUtil::updateDistReference($this->config, $url, $package->getDistReference()); - } - - return $url; - } - - private function getCacheKey(PackageInterface $package, $processedUrl) - { - // we use the complete download url here to avoid conflicting entries - // from different packages, which would potentially allow a given package - // in a third party repo to pre-populate the cache for the same package in - // packagist for example. - $cacheKey = sha1($processedUrl); - - return $package->getName().'/'.$cacheKey.'.'.$package->getDistType(); - } - - /** - * {@inheritDoc} - * @throws \RuntimeException - */ - public function getLocalChanges(PackageInterface $package, $targetDir) - { - $prevIO = $this->io; - $prevProgress = $this->outputProgress; - - $this->io = new NullIO; - $this->io->loadConfiguration($this->config); - $this->outputProgress = false; - $e = null; - - try { - $this->download($package, $targetDir.'_compare', false); - - $comparer = new Comparer(); - $comparer->setSource($targetDir.'_compare'); - $comparer->setUpdate($targetDir); - $comparer->doCompare(); - $output = $comparer->getChanged(true, true); - $this->filesystem->removeDirectory($targetDir.'_compare'); - } catch (\Exception $e) { - } - - $this->io = $prevIO; - $this->outputProgress = $prevProgress; - - if ($e) { - throw $e; - } - - return trim($output); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php b/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php deleted file mode 100644 index 891ab5e..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -/** - * Exception thrown when issues exist on local filesystem - * - * @author Javier Spagnoletti - */ -class FilesystemException extends \Exception -{ - public function __construct($message = '', $code = 0, \Exception $previous = null) - { - parent::__construct("Filesystem exception: \n".$message, $code, $previous); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php b/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php deleted file mode 100644 index 135e973..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php +++ /dev/null @@ -1,116 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; -use Composer\Util\ProcessExecutor; - -/** - * @author BohwaZ - */ -class FossilDownloader extends VcsDownloader -{ - /** - * {@inheritDoc} - */ - public function doDownload(PackageInterface $package, $path, $url) - { - // Ensure we are allowed to use this URL by config - $this->config->prohibitUrlByConfig($url, $this->io); - - $url = ProcessExecutor::escape($url); - $ref = ProcessExecutor::escape($package->getSourceReference()); - $repoFile = $path . '.fossil'; - $this->io->writeError("Cloning ".$package->getSourceReference()); - $command = sprintf('fossil clone %s %s', $url, ProcessExecutor::escape($repoFile)); - if (0 !== $this->process->execute($command, $ignoredOutput)) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - $command = sprintf('fossil open %s --nested', ProcessExecutor::escape($repoFile)); - if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - $command = sprintf('fossil update %s', $ref); - if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - } - - /** - * {@inheritDoc} - */ - public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) - { - // Ensure we are allowed to use this URL by config - $this->config->prohibitUrlByConfig($url, $this->io); - - $url = ProcessExecutor::escape($url); - $ref = ProcessExecutor::escape($target->getSourceReference()); - $this->io->writeError(" Updating to ".$target->getSourceReference()); - - if (!$this->hasMetadataRepository($path)) { - throw new \RuntimeException('The .fslckout file is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); - } - - $command = sprintf('fossil pull && fossil up %s', $ref); - if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - } - - /** - * {@inheritDoc} - */ - public function getLocalChanges(PackageInterface $package, $path) - { - if (!$this->hasMetadataRepository($path)) { - return null; - } - - $this->process->execute('fossil changes', $output, realpath($path)); - - return trim($output) ?: null; - } - - /** - * {@inheritDoc} - */ - protected function getCommitLogs($fromReference, $toReference, $path) - { - $command = sprintf('fossil timeline -t ci -W 0 -n 0 before %s', ProcessExecutor::escape($toReference)); - - if (0 !== $this->process->execute($command, $output, realpath($path))) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - - $log = ''; - $match = '/\d\d:\d\d:\d\d\s+\[' . $toReference . '\]/'; - - foreach ($this->process->splitLines($output) as $line) { - if (preg_match($match, $line)) { - break; - } - $log .= $line; - } - - return $log; - } - - /** - * {@inheritDoc} - */ - protected function hasMetadataRepository($path) - { - return is_file($path . '/.fslckout') || is_file($path . '/_FOSSIL_'); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php b/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php deleted file mode 100644 index edeaa76..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php +++ /dev/null @@ -1,528 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Config; -use Composer\IO\IOInterface; -use Composer\Package\PackageInterface; -use Composer\Util\Filesystem; -use Composer\Util\Git as GitUtil; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; -use Composer\Cache; - -/** - * @author Jordi Boggiano - */ -class GitDownloader extends VcsDownloader implements DvcsDownloaderInterface -{ - private $hasStashedChanges = false; - private $hasDiscardedChanges = false; - private $gitUtil; - - public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, Filesystem $fs = null) - { - parent::__construct($io, $config, $process, $fs); - $this->gitUtil = new GitUtil($this->io, $this->config, $this->process, $this->filesystem); - } - - /** - * {@inheritDoc} - */ - public function doDownload(PackageInterface $package, $path, $url) - { - GitUtil::cleanEnv(); - $path = $this->normalizePath($path); - $cachePath = $this->config->get('cache-vcs-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $url).'/'; - $ref = $package->getSourceReference(); - $flag = Platform::isWindows() ? '/D ' : ''; - - // --dissociate option is only available since git 2.3.0-rc0 - $gitVersion = $this->gitUtil->getVersion(); - $msg = "Cloning ".$this->getShortHash($ref); - - $command = 'git clone --no-checkout %url% %path% && cd '.$flag.'%path% && git remote add composer %url% && git fetch composer && git remote set-url origin %sanitizedUrl% && git remote set-url composer %sanitizedUrl%'; - if ($gitVersion && version_compare($gitVersion, '2.3.0-rc0', '>=') && Cache::isUsable($cachePath)) { - $this->io->writeError('', true, IOInterface::DEBUG); - $this->io->writeError(sprintf(' Cloning to cache at %s', ProcessExecutor::escape($cachePath)), true, IOInterface::DEBUG); - try { - if (!$this->gitUtil->fetchRefOrSyncMirror($url, $cachePath, $ref)) { - $this->io->writeError('Failed to update '.$url.' in cache, package installation for '.$package->getPrettyName().' might fail.'); - } - if (is_dir($cachePath)) { - $command = - 'git clone --no-checkout %cachePath% %path% --dissociate --reference %cachePath% ' - . '&& cd '.$flag.'%path% ' - . '&& git remote set-url origin %sanitizedUrl% && git remote add composer %sanitizedUrl%'; - $msg = "Cloning ".$this->getShortHash($ref).' from cache'; - } - } catch (\RuntimeException $e) { - if (0 === strpos(get_class($e), 'PHPUnit')) { - throw $e; - } - } - } - $this->io->writeError($msg); - - $commandCallable = function ($url) use ($path, $command, $cachePath) { - return str_replace( - array('%url%', '%path%', '%cachePath%', '%sanitizedUrl%'), - array( - ProcessExecutor::escape($url), - ProcessExecutor::escape($path), - ProcessExecutor::escape($cachePath), - ProcessExecutor::escape(preg_replace('{://([^@]+?):(.+?)@}', '://', $url)), - ), - $command - ); - }; - - $this->gitUtil->runCommand($commandCallable, $url, $path, true); - if ($url !== $package->getSourceUrl()) { - $this->updateOriginUrl($path, $package->getSourceUrl()); - } else { - $this->setPushUrl($path, $url); - } - - if ($newRef = $this->updateToCommit($path, $ref, $package->getPrettyVersion(), $package->getReleaseDate())) { - if ($package->getDistReference() === $package->getSourceReference()) { - $package->setDistReference($newRef); - } - $package->setSourceReference($newRef); - } - } - - /** - * {@inheritDoc} - */ - public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) - { - GitUtil::cleanEnv(); - if (!$this->hasMetadataRepository($path)) { - throw new \RuntimeException('The .git directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); - } - - $updateOriginUrl = false; - if ( - 0 === $this->process->execute('git remote -v', $output, $path) - && preg_match('{^origin\s+(?P\S+)}m', $output, $originMatch) - && preg_match('{^composer\s+(?P\S+)}m', $output, $composerMatch) - ) { - if ($originMatch['url'] === $composerMatch['url'] && $composerMatch['url'] !== $target->getSourceUrl()) { - $updateOriginUrl = true; - } - } - - $ref = $target->getSourceReference(); - $this->io->writeError(" Checking out ".$this->getShortHash($ref)); - $command = '(git remote set-url composer %s && git rev-parse --quiet --verify %s || (git fetch composer && git fetch --tags composer)) && git remote set-url composer %s'; - - $commandCallable = function ($url) use ($command, $ref) { - return sprintf( - $command, - ProcessExecutor::escape($url), - ProcessExecutor::escape($ref.'^{commit}'), - ProcessExecutor::escape(preg_replace('{://([^@]+?):(.+?)@}', '://', $url)) - ); - }; - - $this->gitUtil->runCommand($commandCallable, $url, $path); - if ($newRef = $this->updateToCommit($path, $ref, $target->getPrettyVersion(), $target->getReleaseDate())) { - if ($target->getDistReference() === $target->getSourceReference()) { - $target->setDistReference($newRef); - } - $target->setSourceReference($newRef); - } - - if ($updateOriginUrl) { - $this->updateOriginUrl($path, $target->getSourceUrl()); - } - } - - /** - * {@inheritDoc} - */ - public function getLocalChanges(PackageInterface $package, $path) - { - GitUtil::cleanEnv(); - if (!$this->hasMetadataRepository($path)) { - return; - } - - $command = 'git status --porcelain --untracked-files=no'; - if (0 !== $this->process->execute($command, $output, $path)) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - - return trim($output) ?: null; - } - - public function getUnpushedChanges(PackageInterface $package, $path) - { - GitUtil::cleanEnv(); - $path = $this->normalizePath($path); - if (!$this->hasMetadataRepository($path)) { - return; - } - - $command = 'git show-ref --head -d'; - if (0 !== $this->process->execute($command, $output, $path)) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - - $refs = trim($output); - if (!preg_match('{^([a-f0-9]+) HEAD$}mi', $refs, $match)) { - // could not match the HEAD for some reason - return; - } - - $headRef = $match[1]; - if (!preg_match_all('{^'.$headRef.' refs/heads/(.+)$}mi', $refs, $matches)) { - // not on a branch, we are either on a not-modified tag or some sort of detached head, so skip this - return; - } - - // use the first match as branch name for now - $branch = $matches[1][0]; - $unpushedChanges = null; - - // do two passes, as if we find anything we want to fetch and then re-try - for ($i = 0; $i <= 1; $i++) { - // try to find the a matching branch name in the composer remote - foreach ($matches[1] as $candidate) { - if (preg_match('{^[a-f0-9]+ refs/remotes/((?:composer|origin)/'.preg_quote($candidate).')$}mi', $refs, $match)) { - $branch = $candidate; - $remoteBranch = $match[1]; - break; - } - } - - // if it doesn't exist, then we assume it is an unpushed branch - // this is bad as we have no reference point to do a diff so we just bail listing - // the branch as being unpushed - if (!isset($remoteBranch)) { - $unpushedChanges = 'Branch ' . $branch . ' could not be found on the origin remote and appears to be unpushed'; - } else { - $command = sprintf('git diff --name-status %s...%s --', $remoteBranch, $branch); - if (0 !== $this->process->execute($command, $output, $path)) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - - $unpushedChanges = trim($output) ?: null; - } - - // first pass and we found unpushed changes, fetch from both remotes to make sure we have up to date - // remotes and then try again as outdated remotes can sometimes cause false-positives - if ($unpushedChanges && $i === 0) { - $this->process->execute('git fetch composer && git fetch origin', $output, $path); - } - - // abort after first pass if we didn't find anything - if (!$unpushedChanges) { - break; - } - } - - return $unpushedChanges; - } - - /** - * {@inheritDoc} - */ - protected function cleanChanges(PackageInterface $package, $path, $update) - { - GitUtil::cleanEnv(); - $path = $this->normalizePath($path); - - $unpushed = $this->getUnpushedChanges($package, $path); - if ($unpushed && ($this->io->isInteractive() || $this->config->get('discard-changes') !== true)) { - throw new \RuntimeException('Source directory ' . $path . ' has unpushed changes on the current branch: '."\n".$unpushed); - } - - if (!$changes = $this->getLocalChanges($package, $path)) { - return; - } - - if (!$this->io->isInteractive()) { - $discardChanges = $this->config->get('discard-changes'); - if (true === $discardChanges) { - return $this->discardChanges($path); - } - if ('stash' === $discardChanges) { - if (!$update) { - return parent::cleanChanges($package, $path, $update); - } - - return $this->stashChanges($path); - } - - return parent::cleanChanges($package, $path, $update); - } - - $changes = array_map(function ($elem) { - return ' '.$elem; - }, preg_split('{\s*\r?\n\s*}', $changes)); - $this->io->writeError(' The package has modified files:'); - $this->io->writeError(array_slice($changes, 0, 10)); - if (count($changes) > 10) { - $this->io->writeError(' ' . (count($changes) - 10) . ' more files modified, choose "v" to view the full list'); - } - - while (true) { - switch ($this->io->ask(' Discard changes [y,n,v,d,'.($update ? 's,' : '').'?]? ', '?')) { - case 'y': - $this->discardChanges($path); - break 2; - - case 's': - if (!$update) { - goto help; - } - - $this->stashChanges($path); - break 2; - - case 'n': - throw new \RuntimeException('Update aborted'); - - case 'v': - $this->io->writeError($changes); - break; - - case 'd': - $this->viewDiff($path); - break; - - case '?': - default: - help: - $this->io->writeError(array( - ' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), - ' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', - ' v - view modified files', - ' d - view local modifications (diff)', - )); - if ($update) { - $this->io->writeError(' s - stash changes and try to reapply them after the update'); - } - $this->io->writeError(' ? - print help'); - break; - } - } - } - - /** - * {@inheritDoc} - */ - protected function reapplyChanges($path) - { - $path = $this->normalizePath($path); - if ($this->hasStashedChanges) { - $this->hasStashedChanges = false; - $this->io->writeError(' Re-applying stashed changes'); - if (0 !== $this->process->execute('git stash pop', $output, $path)) { - throw new \RuntimeException("Failed to apply stashed changes:\n\n".$this->process->getErrorOutput()); - } - } - - $this->hasDiscardedChanges = false; - } - - /** - * Updates the given path to the given commit ref - * - * @param string $path - * @param string $reference - * @param string $branch - * @param \DateTime $date - * @throws \RuntimeException - * @return null|string if a string is returned, it is the commit reference that was checked out if the original could not be found - */ - protected function updateToCommit($path, $reference, $branch, $date) - { - $force = $this->hasDiscardedChanges || $this->hasStashedChanges ? '-f ' : ''; - - // This uses the "--" sequence to separate branch from file parameters. - // - // Otherwise git tries the branch name as well as file name. - // If the non-existent branch is actually the name of a file, the file - // is checked out. - $template = 'git checkout '.$force.'%s -- && git reset --hard %1$s --'; - $branch = preg_replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $branch); - - $branches = null; - if (0 === $this->process->execute('git branch -r', $output, $path)) { - $branches = $output; - } - - // check whether non-commitish are branches or tags, and fetch branches with the remote name - $gitRef = $reference; - if (!preg_match('{^[a-f0-9]{40}$}', $reference) - && $branches - && preg_match('{^\s+composer/'.preg_quote($reference).'$}m', $branches) - ) { - $command = sprintf('git checkout '.$force.'-B %s %s -- && git reset --hard %2$s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$reference)); - if (0 === $this->process->execute($command, $output, $path)) { - return; - } - } - - // try to checkout branch by name and then reset it so it's on the proper branch name - if (preg_match('{^[a-f0-9]{40}$}', $reference)) { - // add 'v' in front of the branch if it was stripped when generating the pretty name - if (!preg_match('{^\s+composer/'.preg_quote($branch).'$}m', $branches) && preg_match('{^\s+composer/v'.preg_quote($branch).'$}m', $branches)) { - $branch = 'v' . $branch; - } - - $command = sprintf('git checkout %s --', ProcessExecutor::escape($branch)); - $fallbackCommand = sprintf('git checkout '.$force.'-B %s %s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$branch)); - if (0 === $this->process->execute($command, $output, $path) - || 0 === $this->process->execute($fallbackCommand, $output, $path) - ) { - $command = sprintf('git reset --hard %s --', ProcessExecutor::escape($reference)); - if (0 === $this->process->execute($command, $output, $path)) { - return; - } - } - } - - $command = sprintf($template, ProcessExecutor::escape($gitRef)); - if (0 === $this->process->execute($command, $output, $path)) { - return; - } - - // reference was not found (prints "fatal: reference is not a tree: $ref") - if (false !== strpos($this->process->getErrorOutput(), $reference)) { - $this->io->writeError(' '.$reference.' is gone (history was rewritten?)'); - } - - throw new \RuntimeException(GitUtil::sanitizeUrl('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput())); - } - - protected function updateOriginUrl($path, $url) - { - $this->process->execute(sprintf('git remote set-url origin %s', ProcessExecutor::escape($url)), $output, $path); - $this->setPushUrl($path, $url); - } - - protected function setPushUrl($path, $url) - { - // set push url for github projects - if (preg_match('{^(?:https?|git)://'.GitUtil::getGitHubDomainsRegex($this->config).'/([^/]+)/([^/]+?)(?:\.git)?$}', $url, $match)) { - $protocols = $this->config->get('github-protocols'); - $pushUrl = 'git@'.$match[1].':'.$match[2].'/'.$match[3].'.git'; - if (!in_array('ssh', $protocols, true)) { - $pushUrl = 'https://' . $match[1] . '/'.$match[2].'/'.$match[3].'.git'; - } - $cmd = sprintf('git remote set-url --push origin %s', ProcessExecutor::escape($pushUrl)); - $this->process->execute($cmd, $ignoredOutput, $path); - } - } - - /** - * {@inheritDoc} - */ - protected function getCommitLogs($fromReference, $toReference, $path) - { - $path = $this->normalizePath($path); - $command = sprintf('git log %s..%s --pretty=format:"%%h - %%an: %%s"', ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); - - if (0 !== $this->process->execute($command, $output, $path)) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - - return $output; - } - - /** - * @param string $path - * @throws \RuntimeException - */ - protected function discardChanges($path) - { - $path = $this->normalizePath($path); - if (0 !== $this->process->execute('git reset --hard', $output, $path)) { - throw new \RuntimeException("Could not reset changes\n\n:".$this->process->getErrorOutput()); - } - - $this->hasDiscardedChanges = true; - } - - /** - * @param string $path - * @throws \RuntimeException - */ - protected function stashChanges($path) - { - $path = $this->normalizePath($path); - if (0 !== $this->process->execute('git stash --include-untracked', $output, $path)) { - throw new \RuntimeException("Could not stash changes\n\n:".$this->process->getErrorOutput()); - } - - $this->hasStashedChanges = true; - } - - /** - * @param string $path - * @throws \RuntimeException - */ - protected function viewDiff($path) - { - $path = $this->normalizePath($path); - if (0 !== $this->process->execute('git diff HEAD', $output, $path)) { - throw new \RuntimeException("Could not view diff\n\n:".$this->process->getErrorOutput()); - } - - $this->io->writeError($output); - } - - protected function normalizePath($path) - { - if (Platform::isWindows() && strlen($path) > 0) { - $basePath = $path; - $removed = array(); - - while (!is_dir($basePath) && $basePath !== '\\') { - array_unshift($removed, basename($basePath)); - $basePath = dirname($basePath); - } - - if ($basePath === '\\') { - return $path; - } - - $path = rtrim(realpath($basePath) . '/' . implode('/', $removed), '/'); - } - - return $path; - } - - /** - * {@inheritDoc} - */ - protected function hasMetadataRepository($path) - { - $path = $this->normalizePath($path); - - return is_dir($path.'/.git'); - } - - protected function getShortHash($reference) - { - if (!$this->io->isVerbose() && preg_match('{^[0-9a-f]{40}$}', $reference)) { - return substr($reference, 0, 10); - } - - return $reference; - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php b/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php deleted file mode 100644 index 19e4a45..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php +++ /dev/null @@ -1,84 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Config; -use Composer\Cache; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Package\PackageInterface; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; -use Composer\Util\RemoteFilesystem; -use Composer\IO\IOInterface; - -/** - * GZip archive downloader. - * - * @author Pavel Puchkin - */ -class GzipDownloader extends ArchiveDownloader -{ - protected $process; - - public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, ProcessExecutor $process = null, RemoteFilesystem $rfs = null) - { - $this->process = $process ?: new ProcessExecutor($io); - parent::__construct($io, $config, $eventDispatcher, $cache, $rfs); - } - - protected function extract($file, $path) - { - $targetFilepath = $path . DIRECTORY_SEPARATOR . basename(substr($file, 0, -3)); - - // Try to use gunzip on *nix - if (!Platform::isWindows()) { - $command = 'gzip -cd ' . ProcessExecutor::escape($file) . ' > ' . ProcessExecutor::escape($targetFilepath); - - if (0 === $this->process->execute($command, $ignoredOutput)) { - return; - } - - if (extension_loaded('zlib')) { - // Fallback to using the PHP extension. - $this->extractUsingExt($file, $targetFilepath); - - return; - } - - $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); - throw new \RuntimeException($processError); - } - - // Windows version of PHP has built-in support of gzip functions - $this->extractUsingExt($file, $targetFilepath); - } - - /** - * {@inheritdoc} - */ - protected function getFileName(PackageInterface $package, $path) - { - return $path.'/'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_BASENAME); - } - - private function extractUsingExt($file, $targetFilepath) - { - $archiveFile = gzopen($file, 'rb'); - $targetFile = fopen($targetFilepath, 'wb'); - while ($string = gzread($archiveFile, 4096)) { - fwrite($targetFile, $string, Platform::strlen($string)); - } - gzclose($archiveFile); - fclose($targetFile); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php b/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php deleted file mode 100644 index 2921cc4..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php +++ /dev/null @@ -1,100 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; -use Composer\Util\ProcessExecutor; -use Composer\Util\Hg as HgUtils; - -/** - * @author Per Bernhardt - */ -class HgDownloader extends VcsDownloader -{ - /** - * {@inheritDoc} - */ - public function doDownload(PackageInterface $package, $path, $url) - { - $hgUtils = new HgUtils($this->io, $this->config, $this->process); - - $cloneCommand = function ($url) use ($path) { - return sprintf('hg clone %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($path)); - }; - - $hgUtils->runCommand($cloneCommand, $url, $path); - - $ref = ProcessExecutor::escape($package->getSourceReference()); - $command = sprintf('hg up %s', $ref); - if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - } - - /** - * {@inheritDoc} - */ - public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) - { - $hgUtils = new HgUtils($this->io, $this->config, $this->process); - - $ref = $target->getSourceReference(); - $this->io->writeError(" Updating to ".$target->getSourceReference()); - - if (!$this->hasMetadataRepository($path)) { - throw new \RuntimeException('The .hg directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); - } - - $command = function ($url) use ($ref) { - return sprintf('hg pull %s && hg up %s', ProcessExecutor::escape($url), ProcessExecutor::escape($ref)); - }; - - $hgUtils->runCommand($command, $url, $path); - } - - /** - * {@inheritDoc} - */ - public function getLocalChanges(PackageInterface $package, $path) - { - if (!is_dir($path.'/.hg')) { - return null; - } - - $this->process->execute('hg st', $output, realpath($path)); - - return trim($output) ?: null; - } - - /** - * {@inheritDoc} - */ - protected function getCommitLogs($fromReference, $toReference, $path) - { - $command = sprintf('hg log -r %s:%s --style compact', ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); - - if (0 !== $this->process->execute($command, $output, realpath($path))) { - throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } - - return $output; - } - - /** - * {@inheritDoc} - */ - protected function hasMetadataRepository($path) - { - return is_dir($path . '/.hg'); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php b/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php deleted file mode 100644 index 5c4cbcf..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php +++ /dev/null @@ -1,224 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\Archiver\ArchivableFilesFinder; -use Composer\Package\Dumper\ArrayDumper; -use Composer\Package\PackageInterface; -use Composer\Package\Version\VersionGuesser; -use Composer\Package\Version\VersionParser; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; -use Composer\Util\Filesystem as ComposerFilesystem; -use Symfony\Component\Filesystem\Exception\IOException; -use Symfony\Component\Filesystem\Filesystem; - -/** - * Download a package from a local path. - * - * @author Samuel Roze - * @author Johann Reinke - */ -class PathDownloader extends FileDownloader implements VcsCapableDownloaderInterface -{ - const STRATEGY_SYMLINK = 10; - const STRATEGY_MIRROR = 20; - - /** - * {@inheritdoc} - */ - public function download(PackageInterface $package, $path, $output = true) - { - $url = $package->getDistUrl(); - $realUrl = realpath($url); - if (false === $realUrl || !file_exists($realUrl) || !is_dir($realUrl)) { - throw new \RuntimeException(sprintf( - 'Source path "%s" is not found for package %s', - $url, - $package->getName() - )); - } - - if (realpath($path) === $realUrl) { - if ($output) { - $this->io->writeError(sprintf( - ' - Installing %s (%s): Source already present', - $package->getName(), - $package->getFullPrettyVersion() - )); - } - - return; - } - - if (strpos(realpath($path) . DIRECTORY_SEPARATOR, $realUrl . DIRECTORY_SEPARATOR) === 0) { - // IMPORTANT NOTICE: If you wish to change this, don't. You are wasting your time and ours. - // - // Please see https://github.com/composer/composer/pull/5974 and https://github.com/composer/composer/pull/6174 - // for previous attempts that were shut down because they did not work well enough or introduced too many risks. - throw new \RuntimeException(sprintf( - 'Package %s cannot install to "%s" inside its source at "%s"', - $package->getName(), - realpath($path), - $realUrl - )); - } - - // Get the transport options with default values - $transportOptions = $package->getTransportOptions() + array('symlink' => null); - - // When symlink transport option is null, both symlink and mirror are allowed - $currentStrategy = self::STRATEGY_SYMLINK; - $allowedStrategies = array(self::STRATEGY_SYMLINK, self::STRATEGY_MIRROR); - - $mirrorPathRepos = getenv('COMPOSER_MIRROR_PATH_REPOS'); - if ($mirrorPathRepos) { - $currentStrategy = self::STRATEGY_MIRROR; - } - - if (true === $transportOptions['symlink']) { - $currentStrategy = self::STRATEGY_SYMLINK; - $allowedStrategies = array(self::STRATEGY_SYMLINK); - } elseif (false === $transportOptions['symlink']) { - $currentStrategy = self::STRATEGY_MIRROR; - $allowedStrategies = array(self::STRATEGY_MIRROR); - } - - // Check we can use junctions safely if we are on Windows - if (Platform::isWindows() && self::STRATEGY_SYMLINK === $currentStrategy && !$this->safeJunctions()) { - $currentStrategy = self::STRATEGY_MIRROR; - $allowedStrategies = array(self::STRATEGY_MIRROR); - } - - $fileSystem = new Filesystem(); - $this->filesystem->removeDirectory($path); - - if ($output) { - $this->io->writeError(sprintf( - ' - Installing %s (%s): ', - $package->getName(), - $package->getFullPrettyVersion() - ), false); - } - - $isFallback = false; - if (self::STRATEGY_SYMLINK == $currentStrategy) { - try { - if (Platform::isWindows()) { - // Implement symlinks as NTFS junctions on Windows - $this->io->writeError(sprintf('Junctioning from %s', $url), false); - $this->filesystem->junction($realUrl, $path); - } else { - $absolutePath = $path; - if (!$this->filesystem->isAbsolutePath($absolutePath)) { - $absolutePath = getcwd() . DIRECTORY_SEPARATOR . $path; - } - $shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl); - $path = rtrim($path, "/"); - $this->io->writeError(sprintf('Symlinking from %s', $url), false); - $fileSystem->symlink($shortestPath, $path); - } - } catch (IOException $e) { - if (in_array(self::STRATEGY_MIRROR, $allowedStrategies)) { - $this->io->writeError(''); - $this->io->writeError(' Symlink failed, fallback to use mirroring!'); - $currentStrategy = self::STRATEGY_MIRROR; - $isFallback = true; - } else { - throw new \RuntimeException(sprintf('Symlink from "%s" to "%s" failed!', $realUrl, $path)); - } - } - } - - // Fallback if symlink failed or if symlink is not allowed for the package - if (self::STRATEGY_MIRROR == $currentStrategy) { - $fs = new ComposerFilesystem(); - $realUrl = $fs->normalizePath($realUrl); - - $this->io->writeError(sprintf('%sMirroring from %s', $isFallback ? ' ' : '', $url), false); - $iterator = new ArchivableFilesFinder($realUrl, array()); - $fileSystem->mirror($realUrl, $path, $iterator); - } - - $this->io->writeError(''); - } - - /** - * {@inheritDoc} - */ - public function remove(PackageInterface $package, $path, $output = true) - { - $realUrl = realpath($package->getDistUrl()); - - if (realpath($path) === $realUrl) { - if ($output) { - $this->io->writeError(" - Removing " . $package->getName() . " (" . $package->getFullPrettyVersion() . "), source is still present in $path"); - } - - return; - } - - /** - * For junctions don't blindly rely on Filesystem::removeDirectory as it may be overzealous. If a process - * inadvertently locks the file the removal will fail, but it would fall back to recursive delete which - * is disastrous within a junction. So in that case we have no other real choice but to fail hard. - */ - if (Platform::isWindows() && $this->filesystem->isJunction($path)) { - if ($output) { - $this->io->writeError(" - Removing junction for " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); - } - if (!$this->filesystem->removeJunction($path)) { - $this->io->writeError(" Could not remove junction at " . $path . " - is another process locking it?"); - throw new \RuntimeException('Could not reliably remove junction for package ' . $package->getName()); - } - } else { - parent::remove($package, $path, $output); - } - } - - /** - * {@inheritDoc} - */ - public function getVcsReference(PackageInterface $package, $path) - { - $parser = new VersionParser; - $guesser = new VersionGuesser($this->config, new ProcessExecutor($this->io), $parser); - $dumper = new ArrayDumper; - - $packageConfig = $dumper->dump($package); - if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { - return $packageVersion['commit']; - } - } - - /** - * Returns true if junctions can be created and safely used on Windows - * - * A PHP bug makes junction detection fragile, leading to possible data loss - * when removing a package. See https://bugs.php.net/bug.php?id=77552 - * - * For safety we require a minimum version of Windows 7, so we can call the - * system rmdir which will preserve target content if given a junction. - * - * The PHP bug was fixed in 7.2.16 and 7.3.3 (requires at least Windows 7). - * - * @return bool - */ - private function safeJunctions() - { - // We need to call mklink, and rmdir on Windows 7 (version 6.1) - return function_exists('proc_open') && - (PHP_WINDOWS_VERSION_MAJOR > 6 || - (PHP_WINDOWS_VERSION_MAJOR === 6 && PHP_WINDOWS_VERSION_MINOR >= 1)); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php b/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php deleted file mode 100644 index 5eaf3ed..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php +++ /dev/null @@ -1,266 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Util\Filesystem; - -/** - * Extractor for pear packages. - * - * Composer cannot rely on tar files structure when place it inside package target dir. Correct source files - * disposition must be read from package.xml - * This extract pear package source files to target dir. - * - * @author Alexey Prilipko - */ -class PearPackageExtractor -{ - private static $rolesWithoutPackageNamePrefix = array('php', 'script', 'www'); - /** @var Filesystem */ - private $filesystem; - private $file; - - public function __construct($file) - { - if (!is_file($file)) { - throw new \UnexpectedValueException('PEAR package file is not found at '.$file); - } - - $this->filesystem = new Filesystem(); - $this->file = $file; - } - - /** - * Installs PEAR source files according to package.xml definitions and removes extracted files - * - * @param string $target target install location. all source installation would be performed relative to target path. - * @param array $roles types of files to install. default role for PEAR source files are 'php'. - * @param array $vars used for replacement tasks - * @throws \RuntimeException - * @throws \UnexpectedValueException - */ - public function extractTo($target, array $roles = array('php' => '/', 'script' => '/bin'), $vars = array()) - { - $extractionPath = $target.'/tarball'; - - try { - $archive = new \PharData($this->file); - $archive->extractTo($extractionPath, null, true); - - if (!is_file($this->combine($extractionPath, '/package.xml'))) { - throw new \RuntimeException('Invalid PEAR package. It must contain package.xml file.'); - } - - $fileCopyActions = $this->buildCopyActions($extractionPath, $roles, $vars); - $this->copyFiles($fileCopyActions, $extractionPath, $target, $roles, $vars); - $this->filesystem->removeDirectory($extractionPath); - } catch (\Exception $exception) { - throw new \UnexpectedValueException(sprintf('Failed to extract PEAR package %s to %s. Reason: %s', $this->file, $target, $exception->getMessage()), 0, $exception); - } - } - - /** - * Perform copy actions on files - * - * @param array $files array of copy actions ('from', 'to') with relative paths - * @param string $source path to source dir. - * @param string $target path to destination dir - * @param array $roles array [role => roleRoot] relative root for files having that role - * @param array $vars list of values can be used for replacement tasks - */ - private function copyFiles($files, $source, $target, $roles, $vars) - { - foreach ($files as $file) { - $from = $this->combine($source, $file['from']); - $to = $this->combine($target, $roles[$file['role']]); - $to = $this->combine($to, $file['to']); - $tasks = $file['tasks']; - $this->copyFile($from, $to, $tasks, $vars); - } - } - - private function copyFile($from, $to, $tasks, $vars) - { - if (!is_file($from)) { - throw new \RuntimeException('Invalid PEAR package. package.xml defines file that is not located inside tarball.'); - } - - $this->filesystem->ensureDirectoryExists(dirname($to)); - - if (0 == count($tasks)) { - $copied = copy($from, $to); - } else { - $content = file_get_contents($from); - $replacements = array(); - foreach ($tasks as $task) { - $pattern = $task['from']; - $varName = $task['to']; - if (isset($vars[$varName])) { - if ($varName === 'php_bin' && false === strpos($to, '.bat')) { - $replacements[$pattern] = preg_replace('{\.bat$}', '', $vars[$varName]); - } else { - $replacements[$pattern] = $vars[$varName]; - } - } - } - $content = strtr($content, $replacements); - - $copied = file_put_contents($to, $content); - } - - if (false === $copied) { - throw new \RuntimeException(sprintf('Failed to copy %s to %s', $from, $to)); - } - } - - /** - * Builds list of copy and list of remove actions that would transform extracted PEAR tarball into installed package. - * - * @param string $source string path to extracted files - * @param array $roles array [role => roleRoot] relative root for files having that role - * @param array $vars list of values can be used for replacement tasks - * @throws \RuntimeException - * @return array array of 'source' => 'target', where source is location of file in the tarball (relative to source - * path, and target is destination of file (also relative to $source path) - */ - private function buildCopyActions($source, array $roles, $vars) - { - /** @var \SimpleXmlElement $package */ - $package = simplexml_load_string(file_get_contents($this->combine($source, 'package.xml'))); - if (false === $package) { - throw new \RuntimeException('Package definition file is not valid.'); - } - - $packageSchemaVersion = $package['version']; - if ('1.0' == $packageSchemaVersion) { - $children = $package->release->filelist->children(); - $packageName = (string) $package->name; - $packageVersion = (string) $package->release->version; - $sourceDir = $packageName . '-' . $packageVersion; - $result = $this->buildSourceList10($children, $roles, $sourceDir, '', null, $packageName); - } elseif ('2.0' == $packageSchemaVersion || '2.1' == $packageSchemaVersion) { - $children = $package->contents->children(); - $packageName = (string) $package->name; - $packageVersion = (string) $package->version->release; - $sourceDir = $packageName . '-' . $packageVersion; - $result = $this->buildSourceList20($children, $roles, $sourceDir, '', null, $packageName); - - $namespaces = $package->getNamespaces(); - $package->registerXPathNamespace('ns', $namespaces['']); - $releaseNodes = $package->xpath('ns:phprelease'); - $this->applyRelease($result, $releaseNodes, $vars); - } else { - throw new \RuntimeException('Unsupported schema version of package definition file.'); - } - - return $result; - } - - private function applyRelease(&$actions, $releaseNodes, $vars) - { - foreach ($releaseNodes as $releaseNode) { - $requiredOs = $releaseNode->installconditions && $releaseNode->installconditions->os && $releaseNode->installconditions->os->name ? (string) $releaseNode->installconditions->os->name : ''; - if ($requiredOs && $vars['os'] != $requiredOs) { - continue; - } - - if ($releaseNode->filelist) { - foreach ($releaseNode->filelist->children() as $action) { - if ('install' == $action->getName()) { - $name = (string) $action['name']; - $as = (string) $action['as']; - if (isset($actions[$name])) { - $actions[$name]['to'] = $as; - } - } elseif ('ignore' == $action->getName()) { - $name = (string) $action['name']; - unset($actions[$name]); - } else { - // unknown action - } - } - } - break; - } - } - - private function buildSourceList10($children, $targetRoles, $source, $target, $role, $packageName) - { - $result = array(); - - // enumerating files - foreach ($children as $child) { - /** @var $child \SimpleXMLElement */ - if ($child->getName() == 'dir') { - $dirSource = $this->combine($source, (string) $child['name']); - $dirTarget = $child['baseinstalldir'] ?: $target; - $dirRole = $child['role'] ?: $role; - $dirFiles = $this->buildSourceList10($child->children(), $targetRoles, $dirSource, $dirTarget, $dirRole, $packageName); - $result = array_merge($result, $dirFiles); - } elseif ($child->getName() == 'file') { - $fileRole = (string) $child['role'] ?: $role; - if (isset($targetRoles[$fileRole])) { - $fileName = (string) ($child['name'] ?: $child[0]); // $child[0] means text content - $fileSource = $this->combine($source, $fileName); - $fileTarget = $this->combine((string) $child['baseinstalldir'] ?: $target, $fileName); - if (!in_array($fileRole, self::$rolesWithoutPackageNamePrefix)) { - $fileTarget = $packageName . '/' . $fileTarget; - } - $result[(string) $child['name']] = array('from' => $fileSource, 'to' => $fileTarget, 'role' => $fileRole, 'tasks' => array()); - } - } - } - - return $result; - } - - private function buildSourceList20($children, $targetRoles, $source, $target, $role, $packageName) - { - $result = array(); - - // enumerating files - foreach ($children as $child) { - /** @var $child \SimpleXMLElement */ - if ('dir' == $child->getName()) { - $dirSource = $this->combine($source, $child['name']); - $dirTarget = $child['baseinstalldir'] ?: $target; - $dirRole = $child['role'] ?: $role; - $dirFiles = $this->buildSourceList20($child->children(), $targetRoles, $dirSource, $dirTarget, $dirRole, $packageName); - $result = array_merge($result, $dirFiles); - } elseif ('file' == $child->getName()) { - $fileRole = (string) $child['role'] ?: $role; - if (isset($targetRoles[$fileRole])) { - $fileSource = $this->combine($source, (string) $child['name']); - $fileTarget = $this->combine((string) ($child['baseinstalldir'] ?: $target), (string) $child['name']); - $fileTasks = array(); - foreach ($child->children('http://pear.php.net/dtd/tasks-1.0') as $taskNode) { - if ('replace' == $taskNode->getName()) { - $fileTasks[] = array('from' => (string) $taskNode->attributes()->from, 'to' => (string) $taskNode->attributes()->to); - } - } - if (!in_array($fileRole, self::$rolesWithoutPackageNamePrefix)) { - $fileTarget = $packageName . '/' . $fileTarget; - } - $result[(string) $child['name']] = array('from' => $fileSource, 'to' => $fileTarget, 'role' => $fileRole, 'tasks' => $fileTasks); - } - } - } - - return $result; - } - - private function combine($left, $right) - { - return rtrim($left, '/') . '/' . ltrim($right, '/'); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php b/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php deleted file mode 100644 index 92091e2..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php +++ /dev/null @@ -1,112 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; -use Composer\Repository\VcsRepository; -use Composer\Util\Perforce; - -/** - * @author Matt Whittom - */ -class PerforceDownloader extends VcsDownloader -{ - /** @var Perforce */ - protected $perforce; - - /** - * {@inheritDoc} - */ - public function doDownload(PackageInterface $package, $path, $url) - { - $ref = $package->getSourceReference(); - $label = $this->getLabelFromSourceReference($ref); - - $this->io->writeError('Cloning ' . $ref); - $this->initPerforce($package, $path, $url); - $this->perforce->setStream($ref); - $this->perforce->p4Login(); - $this->perforce->writeP4ClientSpec(); - $this->perforce->connectClient(); - $this->perforce->syncCodeBase($label); - $this->perforce->cleanupClientSpec(); - } - - private function getLabelFromSourceReference($ref) - { - $pos = strpos($ref, '@'); - if (false !== $pos) { - return substr($ref, $pos + 1); - } - - return null; - } - - public function initPerforce(PackageInterface $package, $path, $url) - { - if (!empty($this->perforce)) { - $this->perforce->initializePath($path); - - return; - } - - $repository = $package->getRepository(); - $repoConfig = null; - if ($repository instanceof VcsRepository) { - $repoConfig = $this->getRepoConfig($repository); - } - $this->perforce = Perforce::create($repoConfig, $url, $path, $this->process, $this->io); - } - - private function getRepoConfig(VcsRepository $repository) - { - return $repository->getRepoConfig(); - } - - /** - * {@inheritDoc} - */ - public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) - { - $this->doDownload($target, $path, $url); - } - - /** - * {@inheritDoc} - */ - public function getLocalChanges(PackageInterface $package, $path) - { - $this->io->writeError('Perforce driver does not check for local changes before overriding', true); - } - - /** - * {@inheritDoc} - */ - protected function getCommitLogs($fromReference, $toReference, $path) - { - return $this->perforce->getCommitLogs($fromReference, $toReference); - } - - public function setPerforce($perforce) - { - $this->perforce = $perforce; - } - - /** - * {@inheritDoc} - */ - protected function hasMetadataRepository($path) - { - return true; - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php b/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php deleted file mode 100644 index 13fec24..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -/** - * Downloader for phar files - * - * @author Kirill chEbba Chebunin - */ -class PharDownloader extends ArchiveDownloader -{ - /** - * {@inheritDoc} - */ - protected function extract($file, $path) - { - // Can throw an UnexpectedValueException - $archive = new \Phar($file); - $archive->extractTo($path, null, true); - /* TODO: handle openssl signed phars - * https://github.com/composer/composer/pull/33#issuecomment-2250768 - * https://github.com/koto/phar-util - * http://blog.kotowicz.net/2010/08/hardening-php-how-to-securely-include.html - */ - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php b/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php deleted file mode 100644 index 40cd098..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Config; -use Composer\Cache; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Util\IniHelper; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; -use Composer\Util\RemoteFilesystem; -use Composer\IO\IOInterface; -use RarArchive; - -/** - * RAR archive downloader. - * - * Based on previous work by Jordi Boggiano ({@see ZipDownloader}). - * - * @author Derrick Nelson - */ -class RarDownloader extends ArchiveDownloader -{ - protected $process; - - public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, ProcessExecutor $process = null, RemoteFilesystem $rfs = null) - { - $this->process = $process ?: new ProcessExecutor($io); - parent::__construct($io, $config, $eventDispatcher, $cache, $rfs); - } - - protected function extract($file, $path) - { - $processError = null; - - // Try to use unrar on *nix - if (!Platform::isWindows()) { - $command = 'unrar x ' . ProcessExecutor::escape($file) . ' ' . ProcessExecutor::escape($path) . ' >/dev/null && chmod -R u+w ' . ProcessExecutor::escape($path); - - if (0 === $this->process->execute($command, $ignoredOutput)) { - return; - } - - $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); - } - - if (!class_exists('RarArchive')) { - // php.ini path is added to the error message to help users find the correct file - $iniMessage = IniHelper::getMessage(); - - $error = "Could not decompress the archive, enable the PHP rar extension or install unrar.\n" - . $iniMessage . "\n" . $processError; - - if (!Platform::isWindows()) { - $error = "Could not decompress the archive, enable the PHP rar extension.\n" . $iniMessage; - } - - throw new \RuntimeException($error); - } - - $rarArchive = RarArchive::open($file); - - if (false === $rarArchive) { - throw new \UnexpectedValueException('Could not open RAR archive: ' . $file); - } - - $entries = $rarArchive->getEntries(); - - if (false === $entries) { - throw new \RuntimeException('Could not retrieve RAR archive entries'); - } - - foreach ($entries as $entry) { - if (false === $entry->extract($path)) { - throw new \RuntimeException('Could not extract entry'); - } - } - - $rarArchive->close(); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php b/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php deleted file mode 100644 index e239581..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php +++ /dev/null @@ -1,225 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; -use Composer\Util\Svn as SvnUtil; -use Composer\Repository\VcsRepository; -use Composer\Util\ProcessExecutor; - -/** - * @author Ben Bieker - * @author Till Klampaeckel - */ -class SvnDownloader extends VcsDownloader -{ - protected $cacheCredentials = true; - - /** - * {@inheritDoc} - */ - public function doDownload(PackageInterface $package, $path, $url) - { - SvnUtil::cleanEnv(); - $ref = $package->getSourceReference(); - - $repo = $package->getRepository(); - if ($repo instanceof VcsRepository) { - $repoConfig = $repo->getRepoConfig(); - if (array_key_exists('svn-cache-credentials', $repoConfig)) { - $this->cacheCredentials = (bool) $repoConfig['svn-cache-credentials']; - } - } - - $this->io->writeError(" Checking out ".$package->getSourceReference()); - $this->execute($url, "svn co", sprintf("%s/%s", $url, $ref), null, $path); - } - - /** - * {@inheritDoc} - */ - public function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) - { - SvnUtil::cleanEnv(); - $ref = $target->getSourceReference(); - - if (!$this->hasMetadataRepository($path)) { - throw new \RuntimeException('The .svn directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); - } - - $util = new SvnUtil($url, $this->io, $this->config); - $flags = ""; - if (version_compare($util->binaryVersion(), '1.7.0', '>=')) { - $flags .= ' --ignore-ancestry'; - } - - $this->io->writeError(" Checking out " . $ref); - $this->execute($url, "svn switch" . $flags, sprintf("%s/%s", $url, $ref), $path); - } - - /** - * {@inheritDoc} - */ - public function getLocalChanges(PackageInterface $package, $path) - { - if (!$this->hasMetadataRepository($path)) { - return null; - } - - $this->process->execute('svn status --ignore-externals', $output, $path); - - return preg_match('{^ *[^X ] +}m', $output) ? $output : null; - } - - /** - * Execute an SVN command and try to fix up the process with credentials - * if necessary. - * - * @param string $baseUrl Base URL of the repository - * @param string $command SVN command to run - * @param string $url SVN url - * @param string $cwd Working directory - * @param string $path Target for a checkout - * @throws \RuntimeException - * @return string - */ - protected function execute($baseUrl, $command, $url, $cwd = null, $path = null) - { - $util = new SvnUtil($baseUrl, $this->io, $this->config); - $util->setCacheCredentials($this->cacheCredentials); - try { - return $util->execute($command, $url, $cwd, $path, $this->io->isVerbose()); - } catch (\RuntimeException $e) { - throw new \RuntimeException( - 'Package could not be downloaded, '.$e->getMessage() - ); - } - } - - /** - * {@inheritDoc} - */ - protected function cleanChanges(PackageInterface $package, $path, $update) - { - if (!$changes = $this->getLocalChanges($package, $path)) { - return; - } - - if (!$this->io->isInteractive()) { - if (true === $this->config->get('discard-changes')) { - return $this->discardChanges($path); - } - - return parent::cleanChanges($package, $path, $update); - } - - $changes = array_map(function ($elem) { - return ' '.$elem; - }, preg_split('{\s*\r?\n\s*}', $changes)); - $countChanges = count($changes); - $this->io->writeError(sprintf(' The package has modified file%s:', $countChanges === 1 ? '' : 's')); - $this->io->writeError(array_slice($changes, 0, 10)); - if ($countChanges > 10) { - $remaingChanges = $countChanges - 10; - $this->io->writeError( - sprintf( - ' '.$remaingChanges.' more file%s modified, choose "v" to view the full list', - $remaingChanges === 1 ? '' : 's' - ) - ); - } - - while (true) { - switch ($this->io->ask(' Discard changes [y,n,v,?]? ', '?')) { - case 'y': - $this->discardChanges($path); - break 2; - - case 'n': - throw new \RuntimeException('Update aborted'); - - case 'v': - $this->io->writeError($changes); - break; - - case '?': - default: - $this->io->writeError(array( - ' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), - ' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', - ' v - view modified files', - ' ? - print help', - )); - break; - } - } - } - - /** - * {@inheritDoc} - */ - protected function getCommitLogs($fromReference, $toReference, $path) - { - if (preg_match('{.*@(\d+)$}', $fromReference) && preg_match('{.*@(\d+)$}', $toReference)) { - // retrieve the svn base url from the checkout folder - $command = sprintf('svn info --non-interactive --xml %s', ProcessExecutor::escape($path)); - if (0 !== $this->process->execute($command, $output, $path)) { - throw new \RuntimeException( - 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput() - ); - } - - $urlPattern = '#(.*)#'; - if (preg_match($urlPattern, $output, $matches)) { - $baseUrl = $matches[1]; - } else { - throw new \RuntimeException( - 'Unable to determine svn url for path '. $path - ); - } - - // strip paths from references and only keep the actual revision - $fromRevision = preg_replace('{.*@(\d+)$}', '$1', $fromReference); - $toRevision = preg_replace('{.*@(\d+)$}', '$1', $toReference); - - $command = sprintf('svn log -r%s:%s --incremental', ProcessExecutor::escape($fromRevision), ProcessExecutor::escape($toRevision)); - - $util = new SvnUtil($baseUrl, $this->io, $this->config); - $util->setCacheCredentials($this->cacheCredentials); - try { - return $util->executeLocal($command, $path, null, $this->io->isVerbose()); - } catch (\RuntimeException $e) { - throw new \RuntimeException( - 'Failed to execute ' . $command . "\n\n".$e->getMessage() - ); - } - } - - return "Could not retrieve changes between $fromReference and $toReference due to missing revision information"; - } - - protected function discardChanges($path) - { - if (0 !== $this->process->execute('svn revert -R .', $output, $path)) { - throw new \RuntimeException("Could not reset changes\n\n:".$this->process->getErrorOutput()); - } - } - - /** - * {@inheritDoc} - */ - protected function hasMetadataRepository($path) - { - return is_dir($path.'/.svn'); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php b/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php deleted file mode 100644 index 34c43da..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -/** - * Downloader for tar files: tar, tar.gz or tar.bz2 - * - * @author Kirill chEbba Chebunin - */ -class TarDownloader extends ArchiveDownloader -{ - /** - * {@inheritDoc} - */ - protected function extract($file, $path) - { - // Can throw an UnexpectedValueException - $archive = new \PharData($file); - $archive->extractTo($path, null, true); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/TransportException.php b/vendor/composer/composer/src/Composer/Downloader/TransportException.php deleted file mode 100644 index c682df0..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/TransportException.php +++ /dev/null @@ -1,53 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -/** - * @author Jordi Boggiano - */ -class TransportException extends \RuntimeException -{ - protected $headers; - protected $response; - protected $statusCode; - - public function setHeaders($headers) - { - $this->headers = $headers; - } - - public function getHeaders() - { - return $this->headers; - } - - public function setResponse($response) - { - $this->response = $response; - } - - public function getResponse() - { - return $this->response; - } - - public function setStatusCode($statusCode) - { - $this->statusCode = $statusCode; - } - - public function getStatusCode() - { - return $this->statusCode; - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php b/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php deleted file mode 100644 index 39203d5..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Package\PackageInterface; - -/** - * VCS Capable Downloader interface. - * - * @author Steve Buzonas - */ -interface VcsCapableDownloaderInterface -{ - /** - * Gets the VCS Reference for the package at path - * - * @param PackageInterface $package package directory - * @param string $path package directory - * @return string|null reference or null - */ - public function getVcsReference(PackageInterface $package, $path); -} diff --git a/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php b/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php deleted file mode 100644 index aa66605..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php +++ /dev/null @@ -1,293 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Config; -use Composer\Package\Dumper\ArrayDumper; -use Composer\Package\PackageInterface; -use Composer\Package\Version\VersionGuesser; -use Composer\Package\Version\VersionParser; -use Composer\Util\ProcessExecutor; -use Composer\IO\IOInterface; -use Composer\Util\Filesystem; - -/** - * @author Jordi Boggiano - */ -abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterface, VcsCapableDownloaderInterface -{ - /** @var IOInterface */ - protected $io; - /** @var Config */ - protected $config; - /** @var ProcessExecutor */ - protected $process; - /** @var Filesystem */ - protected $filesystem; - - public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, Filesystem $fs = null) - { - $this->io = $io; - $this->config = $config; - $this->process = $process ?: new ProcessExecutor($io); - $this->filesystem = $fs ?: new Filesystem($this->process); - } - - /** - * {@inheritDoc} - */ - public function getInstallationSource() - { - return 'source'; - } - - /** - * {@inheritDoc} - */ - public function download(PackageInterface $package, $path) - { - if (!$package->getSourceReference()) { - throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information'); - } - - $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . "): ", false); - $this->filesystem->emptyDirectory($path); - - $urls = $package->getSourceUrls(); - while ($url = array_shift($urls)) { - try { - if (Filesystem::isLocalPath($url)) { - // realpath() below will not understand - // url that starts with "file://" - $needle = 'file://'; - $isFileProtocol = false; - if (0 === strpos($url, $needle)) { - $url = substr($url, strlen($needle)); - $isFileProtocol = true; - } - - // realpath() below will not understand %20 spaces etc. - if (false !== strpos($url, '%')) { - $url = rawurldecode($url); - } - - $url = realpath($url); - - if ($isFileProtocol) { - $url = $needle . $url; - } - } - $this->doDownload($package, $path, $url); - break; - } catch (\Exception $e) { - // rethrow phpunit exceptions to avoid hard to debug bug failures - if ($e instanceof \PHPUnit_Framework_Exception) { - throw $e; - } - if ($this->io->isDebug()) { - $this->io->writeError('Failed: ['.get_class($e).'] '.$e->getMessage()); - } elseif (count($urls)) { - $this->io->writeError(' Failed, trying the next URL'); - } - if (!count($urls)) { - throw $e; - } - } - } - } - - /** - * {@inheritDoc} - */ - public function update(PackageInterface $initial, PackageInterface $target, $path) - { - if (!$target->getSourceReference()) { - throw new \InvalidArgumentException('Package '.$target->getPrettyName().' is missing reference information'); - } - - $name = $target->getName(); - if ($initial->getPrettyVersion() == $target->getPrettyVersion()) { - if ($target->getSourceType() === 'svn') { - $from = $initial->getSourceReference(); - $to = $target->getSourceReference(); - } else { - $from = substr($initial->getSourceReference(), 0, 7); - $to = substr($target->getSourceReference(), 0, 7); - } - $name .= ' '.$initial->getPrettyVersion(); - } else { - $from = $initial->getFullPrettyVersion(); - $to = $target->getFullPrettyVersion(); - } - - $actionName = VersionParser::isUpgrade($initial->getVersion(), $target->getVersion()) ? 'Updating' : 'Downgrading'; - $this->io->writeError(" - " . $actionName . " " . $name . " (" . $from . " => " . $to . "): ", false); - - $this->cleanChanges($initial, $path, true); - $urls = $target->getSourceUrls(); - - $exception = null; - while ($url = array_shift($urls)) { - try { - if (Filesystem::isLocalPath($url)) { - $url = realpath($url); - } - $this->doUpdate($initial, $target, $path, $url); - - $exception = null; - break; - } catch (\Exception $exception) { - // rethrow phpunit exceptions to avoid hard to debug bug failures - if ($exception instanceof \PHPUnit_Framework_Exception) { - throw $exception; - } - if ($this->io->isDebug()) { - $this->io->writeError('Failed: ['.get_class($exception).'] '.$exception->getMessage()); - } elseif (count($urls)) { - $this->io->writeError(' Failed, trying the next URL'); - } - } - } - - $this->reapplyChanges($path); - - // print the commit logs if in verbose mode and VCS metadata is present - // because in case of missing metadata code would trigger another exception - if (!$exception && $this->io->isVerbose() && $this->hasMetadataRepository($path)) { - $message = 'Pulling in changes:'; - $logs = $this->getCommitLogs($initial->getSourceReference(), $target->getSourceReference(), $path); - - if (!trim($logs)) { - $message = 'Rolling back changes:'; - $logs = $this->getCommitLogs($target->getSourceReference(), $initial->getSourceReference(), $path); - } - - if (trim($logs)) { - $logs = implode("\n", array_map(function ($line) { - return ' ' . $line; - }, explode("\n", $logs))); - - // escape angle brackets for proper output in the console - $logs = str_replace('<', '\<', $logs); - - $this->io->writeError(' '.$message); - $this->io->writeError($logs); - } - } - - if (!$urls && $exception) { - throw $exception; - } - } - - /** - * {@inheritDoc} - */ - public function remove(PackageInterface $package, $path) - { - $this->io->writeError(" - Removing " . $package->getName() . " (" . $package->getPrettyVersion() . ")"); - $this->cleanChanges($package, $path, false); - if (!$this->filesystem->removeDirectory($path)) { - throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); - } - } - - /** - * Download progress information is not available for all VCS downloaders. - * {@inheritDoc} - */ - public function setOutputProgress($outputProgress) - { - return $this; - } - - /** - * {@inheritDoc} - */ - public function getVcsReference(PackageInterface $package, $path) - { - $parser = new VersionParser; - $guesser = new VersionGuesser($this->config, $this->process, $parser); - $dumper = new ArrayDumper; - - $packageConfig = $dumper->dump($package); - if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { - return $packageVersion['commit']; - } - } - - /** - * Prompt the user to check if changes should be stashed/removed or the operation aborted - * - * @param PackageInterface $package - * @param string $path - * @param bool $update if true (update) the changes can be stashed and reapplied after an update, - * if false (remove) the changes should be assumed to be lost if the operation is not aborted - * @throws \RuntimeException in case the operation must be aborted - */ - protected function cleanChanges(PackageInterface $package, $path, $update) - { - // the default implementation just fails if there are any changes, override in child classes to provide stash-ability - if (null !== $this->getLocalChanges($package, $path)) { - throw new \RuntimeException('Source directory ' . $path . ' has uncommitted changes.'); - } - } - - /** - * Guarantee that no changes have been made to the local copy - * - * @param string $path - * @throws \RuntimeException in case the operation must be aborted or the patch does not apply cleanly - */ - protected function reapplyChanges($path) - { - } - - /** - * Downloads specific package into specific folder. - * - * @param PackageInterface $package package instance - * @param string $path download path - * @param string $url package url - */ - abstract protected function doDownload(PackageInterface $package, $path, $url); - - /** - * Updates specific package in specific folder from initial to target version. - * - * @param PackageInterface $initial initial package - * @param PackageInterface $target updated package - * @param string $path download path - * @param string $url package url - */ - abstract protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url); - - /** - * Fetches the commit logs between two commits - * - * @param string $fromReference the source reference - * @param string $toReference the target reference - * @param string $path the package path - * @return string - */ - abstract protected function getCommitLogs($fromReference, $toReference, $path); - - /** - * Checks if VCS metadata repository has been initialized - * repository example: .git|.svn|.hg - * - * @param string $path - * @return bool - */ - abstract protected function hasMetadataRepository($path); -} diff --git a/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php b/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php deleted file mode 100644 index 4a9b854..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php +++ /dev/null @@ -1,60 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Config; -use Composer\Cache; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Package\PackageInterface; -use Composer\Util\ProcessExecutor; -use Composer\Util\RemoteFilesystem; -use Composer\IO\IOInterface; - -/** - * Xz archive downloader. - * - * @author Pavel Puchkin - * @author Pierre Rudloff - */ -class XzDownloader extends ArchiveDownloader -{ - protected $process; - - public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, ProcessExecutor $process = null, RemoteFilesystem $rfs = null) - { - $this->process = $process ?: new ProcessExecutor($io); - - parent::__construct($io, $config, $eventDispatcher, $cache, $rfs); - } - - protected function extract($file, $path) - { - $command = 'tar -xJf ' . ProcessExecutor::escape($file) . ' -C ' . ProcessExecutor::escape($path); - - if (0 === $this->process->execute($command, $ignoredOutput)) { - return; - } - - $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); - - throw new \RuntimeException($processError); - } - - /** - * {@inheritdoc} - */ - protected function getFileName(PackageInterface $package, $path) - { - return $path.'/'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_BASENAME); - } -} diff --git a/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php b/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php deleted file mode 100644 index 6534db3..0000000 --- a/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php +++ /dev/null @@ -1,230 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Downloader; - -use Composer\Config; -use Composer\Cache; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Package\PackageInterface; -use Composer\Util\IniHelper; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; -use Composer\Util\RemoteFilesystem; -use Composer\IO\IOInterface; -use Symfony\Component\Process\ExecutableFinder; -use ZipArchive; - -/** - * @author Jordi Boggiano - */ -class ZipDownloader extends ArchiveDownloader -{ - protected static $hasSystemUnzip; - private static $hasZipArchive; - private static $isWindows; - - protected $process; - private $zipArchiveObject; - - public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, Cache $cache = null, ProcessExecutor $process = null, RemoteFilesystem $rfs = null) - { - $this->process = $process ?: new ProcessExecutor($io); - parent::__construct($io, $config, $eventDispatcher, $cache, $rfs); - } - - /** - * {@inheritDoc} - */ - public function download(PackageInterface $package, $path, $output = true) - { - if (null === self::$hasSystemUnzip) { - $finder = new ExecutableFinder; - self::$hasSystemUnzip = (bool) $finder->find('unzip'); - } - - if (null === self::$hasZipArchive) { - self::$hasZipArchive = class_exists('ZipArchive'); - } - - if (!self::$hasZipArchive && !self::$hasSystemUnzip) { - // php.ini path is added to the error message to help users find the correct file - $iniMessage = IniHelper::getMessage(); - $error = "The zip extension and unzip command are both missing, skipping.\n" . $iniMessage; - - throw new \RuntimeException($error); - } - - if (null === self::$isWindows) { - self::$isWindows = Platform::isWindows(); - - if (!self::$isWindows && !self::$hasSystemUnzip) { - $this->io->writeError("As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension."); - $this->io->writeError("This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost."); - $this->io->writeError("Installing 'unzip' may remediate them."); - } - } - - return parent::download($package, $path, $output); - } - - /** - * extract $file to $path with "unzip" command - * - * @param string $file File to extract - * @param string $path Path where to extract file - * @param bool $isLastChance If true it is called as a fallback and should throw an exception - * @return bool Success status - */ - protected function extractWithSystemUnzip($file, $path, $isLastChance) - { - if (!self::$hasZipArchive) { - // Force Exception throwing if the Other alternative is not available - $isLastChance = true; - } - - if (!self::$hasSystemUnzip && !$isLastChance) { - // This was call as the favorite extract way, but is not available - // We switch to the alternative - return $this->extractWithZipArchive($file, $path, true); - } - - $processError = null; - // When called after a ZipArchive failed, perhaps there is some files to overwrite - $overwrite = $isLastChance ? '-o' : ''; - - $command = 'unzip -qq '.$overwrite.' '.ProcessExecutor::escape($file).' -d '.ProcessExecutor::escape($path); - - try { - if (0 === $this->process->execute($command, $ignoredOutput)) { - return true; - } - - $processError = new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); - } catch (\Exception $e) { - $processError = $e; - } - - if ($isLastChance) { - throw $processError; - } - - $this->io->writeError(' '.$processError->getMessage()); - $this->io->writeError(' The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)'); - $this->io->writeError(' Unzip with unzip command failed, falling back to ZipArchive class'); - - return $this->extractWithZipArchive($file, $path, true); - } - - /** - * extract $file to $path with ZipArchive - * - * @param string $file File to extract - * @param string $path Path where to extract file - * @param bool $isLastChance If true it is called as a fallback and should throw an exception - * @return bool Success status - */ - protected function extractWithZipArchive($file, $path, $isLastChance) - { - if (!self::$hasSystemUnzip) { - // Force Exception throwing if the Other alternative is not available - $isLastChance = true; - } - - if (!self::$hasZipArchive && !$isLastChance) { - // This was call as the favorite extract way, but is not available - // We switch to the alternative - return $this->extractWithSystemUnzip($file, $path, true); - } - - $processError = null; - $zipArchive = $this->zipArchiveObject ?: new ZipArchive(); - - try { - if (true === ($retval = $zipArchive->open($file))) { - $extractResult = $zipArchive->extractTo($path); - - if (true === $extractResult) { - $zipArchive->close(); - - return true; - } - - $processError = new \RuntimeException(rtrim("There was an error extracting the ZIP file, it is either corrupted or using an invalid format.\n")); - } else { - $processError = new \UnexpectedValueException(rtrim($this->getErrorMessage($retval, $file)."\n"), $retval); - } - } catch (\ErrorException $e) { - $processError = new \RuntimeException('The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems): '.$e->getMessage(), 0, $e); - } catch (\Exception $e) { - $processError = $e; - } - - if ($isLastChance) { - throw $processError; - } - - $this->io->writeError(' '.$processError->getMessage()); - $this->io->writeError(' Unzip with ZipArchive class failed, falling back to unzip command'); - - return $this->extractWithSystemUnzip($file, $path, true); - } - - /** - * extract $file to $path - * - * @param string $file File to extract - * @param string $path Path where to extract file - */ - public function extract($file, $path) - { - // Each extract calls its alternative if not available or fails - if (self::$isWindows) { - $this->extractWithZipArchive($file, $path, false); - } else { - $this->extractWithSystemUnzip($file, $path, false); - } - } - - /** - * Give a meaningful error message to the user. - * - * @param int $retval - * @param string $file - * @return string - */ - protected function getErrorMessage($retval, $file) - { - switch ($retval) { - case ZipArchive::ER_EXISTS: - return sprintf("File '%s' already exists.", $file); - case ZipArchive::ER_INCONS: - return sprintf("Zip archive '%s' is inconsistent.", $file); - case ZipArchive::ER_INVAL: - return sprintf("Invalid argument (%s)", $file); - case ZipArchive::ER_MEMORY: - return sprintf("Malloc failure (%s)", $file); - case ZipArchive::ER_NOENT: - return sprintf("No such zip file: '%s'", $file); - case ZipArchive::ER_NOZIP: - return sprintf("'%s' is not a zip archive.", $file); - case ZipArchive::ER_OPEN: - return sprintf("Can't open zip file: %s", $file); - case ZipArchive::ER_READ: - return sprintf("Zip read error (%s)", $file); - case ZipArchive::ER_SEEK: - return sprintf("Zip seek error (%s)", $file); - default: - return sprintf("'%s' is not a valid zip archive, got error code: %s", $file, $retval); - } - } -} diff --git a/vendor/composer/composer/src/Composer/EventDispatcher/Event.php b/vendor/composer/composer/src/Composer/EventDispatcher/Event.php deleted file mode 100644 index 2091f6b..0000000 --- a/vendor/composer/composer/src/Composer/EventDispatcher/Event.php +++ /dev/null @@ -1,103 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\EventDispatcher; - -/** - * The base event class - * - * @author Nils Adermann - */ -class Event -{ - /** - * @var string This event's name - */ - protected $name; - - /** - * @var array Arguments passed by the user, these will be forwarded to CLI script handlers - */ - protected $args; - - /** - * @var array Flags usable in PHP script handlers - */ - protected $flags; - - /** - * @var bool Whether the event should not be passed to more listeners - */ - private $propagationStopped = false; - - /** - * Constructor. - * - * @param string $name The event name - * @param array $args Arguments passed by the user - * @param array $flags Optional flags to pass data not as argument - */ - public function __construct($name, array $args = array(), array $flags = array()) - { - $this->name = $name; - $this->args = $args; - $this->flags = $flags; - } - - /** - * Returns the event's name. - * - * @return string The event name - */ - public function getName() - { - return $this->name; - } - - /** - * Returns the event's arguments. - * - * @return array The event arguments - */ - public function getArguments() - { - return $this->args; - } - - /** - * Returns the event's flags. - * - * @return array The event flags - */ - public function getFlags() - { - return $this->flags; - } - - /** - * Checks if stopPropagation has been called - * - * @return bool Whether propagation has been stopped - */ - public function isPropagationStopped() - { - return $this->propagationStopped; - } - - /** - * Prevents the event from being passed to further listeners - */ - public function stopPropagation() - { - $this->propagationStopped = true; - } -} diff --git a/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php b/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php deleted file mode 100644 index d5bdb4c..0000000 --- a/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php +++ /dev/null @@ -1,544 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\EventDispatcher; - -use Composer\DependencyResolver\PolicyInterface; -use Composer\DependencyResolver\Pool; -use Composer\DependencyResolver\Request; -use Composer\Installer\InstallerEvent; -use Composer\IO\IOInterface; -use Composer\Composer; -use Composer\DependencyResolver\Operation\OperationInterface; -use Composer\Repository\CompositeRepository; -use Composer\Script; -use Composer\Installer\PackageEvent; -use Composer\Installer\BinaryInstaller; -use Composer\Util\ProcessExecutor; -use Composer\Script\Event as ScriptEvent; -use Symfony\Component\Process\PhpExecutableFinder; - -/** - * The Event Dispatcher. - * - * Example in command: - * $dispatcher = new EventDispatcher($this->getComposer(), $this->getApplication()->getIO()); - * // ... - * $dispatcher->dispatch(ScriptEvents::POST_INSTALL_CMD); - * // ... - * - * @author François Pluchino - * @author Jordi Boggiano - * @author Nils Adermann - */ -class EventDispatcher -{ - protected $composer; - protected $io; - protected $loader; - protected $process; - protected $listeners; - private $eventStack; - - /** - * Constructor. - * - * @param Composer $composer The composer instance - * @param IOInterface $io The IOInterface instance - * @param ProcessExecutor $process - */ - public function __construct(Composer $composer, IOInterface $io, ProcessExecutor $process = null) - { - $this->composer = $composer; - $this->io = $io; - $this->process = $process ?: new ProcessExecutor($io); - $this->eventStack = array(); - } - - /** - * Dispatch an event - * - * @param string $eventName An event name - * @param Event $event - * @return int return code of the executed script if any, for php scripts a false return - * value is changed to 1, anything else to 0 - */ - public function dispatch($eventName, Event $event = null) - { - if (null === $event) { - $event = new Event($eventName); - } - - return $this->doDispatch($event); - } - - /** - * Dispatch a script event. - * - * @param string $eventName The constant in ScriptEvents - * @param bool $devMode - * @param array $additionalArgs Arguments passed by the user - * @param array $flags Optional flags to pass data not as argument - * @return int return code of the executed script if any, for php scripts a false return - * value is changed to 1, anything else to 0 - */ - public function dispatchScript($eventName, $devMode = false, $additionalArgs = array(), $flags = array()) - { - return $this->doDispatch(new Script\Event($eventName, $this->composer, $this->io, $devMode, $additionalArgs, $flags)); - } - - /** - * Dispatch a package event. - * - * @param string $eventName The constant in PackageEvents - * @param bool $devMode Whether or not we are in dev mode - * @param PolicyInterface $policy The policy - * @param Pool $pool The pool - * @param CompositeRepository $installedRepo The installed repository - * @param Request $request The request - * @param array $operations The list of operations - * @param OperationInterface $operation The package being installed/updated/removed - * - * @return int return code of the executed script if any, for php scripts a false return - * value is changed to 1, anything else to 0 - */ - public function dispatchPackageEvent($eventName, $devMode, PolicyInterface $policy, Pool $pool, CompositeRepository $installedRepo, Request $request, array $operations, OperationInterface $operation) - { - return $this->doDispatch(new PackageEvent($eventName, $this->composer, $this->io, $devMode, $policy, $pool, $installedRepo, $request, $operations, $operation)); - } - - /** - * Dispatch a installer event. - * - * @param string $eventName The constant in InstallerEvents - * @param bool $devMode Whether or not we are in dev mode - * @param PolicyInterface $policy The policy - * @param Pool $pool The pool - * @param CompositeRepository $installedRepo The installed repository - * @param Request $request The request - * @param array $operations The list of operations - * - * @return int return code of the executed script if any, for php scripts a false return - * value is changed to 1, anything else to 0 - */ - public function dispatchInstallerEvent($eventName, $devMode, PolicyInterface $policy, Pool $pool, CompositeRepository $installedRepo, Request $request, array $operations = array()) - { - return $this->doDispatch(new InstallerEvent($eventName, $this->composer, $this->io, $devMode, $policy, $pool, $installedRepo, $request, $operations)); - } - - /** - * Triggers the listeners of an event. - * - * @param Event $event The event object to pass to the event handlers/listeners. - * @throws \RuntimeException|\Exception - * @return int return code of the executed script if any, for php scripts a false return - * value is changed to 1, anything else to 0 - */ - protected function doDispatch(Event $event) - { - $pathStr = 'PATH'; - if (!isset($_SERVER[$pathStr]) && isset($_SERVER['Path'])) { - $pathStr = 'Path'; - } - - // add the bin dir to the PATH to make local binaries of deps usable in scripts - $binDir = $this->composer->getConfig()->get('bin-dir'); - if (is_dir($binDir)) { - $binDir = realpath($binDir); - if (isset($_SERVER[$pathStr]) && !preg_match('{(^|'.PATH_SEPARATOR.')'.preg_quote($binDir).'($|'.PATH_SEPARATOR.')}', $_SERVER[$pathStr])) { - $_SERVER[$pathStr] = $binDir.PATH_SEPARATOR.getenv($pathStr); - putenv($pathStr.'='.$_SERVER[$pathStr]); - } - } - - $listeners = $this->getListeners($event); - - $this->pushEvent($event); - - $return = 0; - foreach ($listeners as $callable) { - if (!is_string($callable)) { - if (!is_callable($callable)) { - $className = is_object($callable[0]) ? get_class($callable[0]) : $callable[0]; - - throw new \RuntimeException('Subscriber '.$className.'::'.$callable[1].' for event '.$event->getName().' is not callable, make sure the function is defined and public'); - } - $event = $this->checkListenerExpectedEvent($callable, $event); - $return = false === call_user_func($callable, $event) ? 1 : 0; - } elseif ($this->isComposerScript($callable)) { - $this->io->writeError(sprintf('> %s: %s', $event->getName(), $callable), true, IOInterface::VERBOSE); - - $script = explode(' ', substr($callable, 1)); - $scriptName = $script[0]; - unset($script[0]); - - $args = array_merge($script, $event->getArguments()); - $flags = $event->getFlags(); - if (substr($callable, 0, 10) === '@composer ') { - $exec = $this->getPhpExecCommand() . ' ' . ProcessExecutor::escape(getenv('COMPOSER_BINARY')) . substr($callable, 9); - if (0 !== ($exitCode = $this->process->execute($exec))) { - $this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); - - throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); - } - } else { - if (!$this->getListeners(new Event($scriptName))) { - $this->io->writeError(sprintf('You made a reference to a non-existent script %s', $callable), true, IOInterface::QUIET); - } - - try { - $scriptEvent = new Script\Event($scriptName, $event->getComposer(), $event->getIO(), $event->isDevMode(), $args, $flags); - $scriptEvent->setOriginatingEvent($event); - $return = $this->dispatch($scriptName, $scriptEvent); - } catch (ScriptExecutionException $e) { - $this->io->writeError(sprintf('Script %s was called via %s', $callable, $event->getName()), true, IOInterface::QUIET); - throw $e; - } - } - } elseif ($this->isPhpScript($callable)) { - $className = substr($callable, 0, strpos($callable, '::')); - $methodName = substr($callable, strpos($callable, '::') + 2); - - if (!class_exists($className)) { - $this->io->writeError('Class '.$className.' is not autoloadable, can not call '.$event->getName().' script', true, IOInterface::QUIET); - continue; - } - if (!is_callable($callable)) { - $this->io->writeError('Method '.$callable.' is not callable, can not call '.$event->getName().' script', true, IOInterface::QUIET); - continue; - } - - try { - $return = false === $this->executeEventPhpScript($className, $methodName, $event) ? 1 : 0; - } catch (\Exception $e) { - $message = "Script %s handling the %s event terminated with an exception"; - $this->io->writeError(''.sprintf($message, $callable, $event->getName()).'', true, IOInterface::QUIET); - throw $e; - } - } else { - $args = implode(' ', array_map(array('Composer\Util\ProcessExecutor', 'escape'), $event->getArguments())); - $exec = $callable . ($args === '' ? '' : ' '.$args); - if ($this->io->isVerbose()) { - $this->io->writeError(sprintf('> %s: %s', $event->getName(), $exec)); - } else { - $this->io->writeError(sprintf('> %s', $exec)); - } - - $possibleLocalBinaries = $this->composer->getPackage()->getBinaries(); - if ($possibleLocalBinaries) { - foreach ($possibleLocalBinaries as $localExec) { - if (preg_match('{\b'.preg_quote($callable).'$}', $localExec)) { - $caller = BinaryInstaller::determineBinaryCaller($localExec); - $exec = preg_replace('{^'.preg_quote($callable).'}', $caller . ' ' . $localExec, $exec); - break; - } - } - } - - if (substr($exec, 0, 5) === '@php ') { - $exec = $this->getPhpExecCommand() . ' ' . substr($exec, 5); - } else { - $finder = new PhpExecutableFinder(); - $phpPath = $finder->find(false); - if ($phpPath) { - putenv('PHP_BINARY=' . $phpPath); - } - } - - if (0 !== ($exitCode = $this->process->execute($exec))) { - $this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); - - throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); - } - } - - if ($event->isPropagationStopped()) { - break; - } - } - - $this->popEvent(); - - return $return; - } - - protected function getPhpExecCommand() - { - $finder = new PhpExecutableFinder(); - $phpPath = $finder->find(false); - if (!$phpPath) { - throw new \RuntimeException('Failed to locate PHP binary to execute '.$phpPath); - } - $phpArgs = $finder->findArguments(); - $phpArgs = $phpArgs ? ' ' . implode(' ', $phpArgs) : ''; - $allowUrlFOpenFlag = ' -d allow_url_fopen=' . ProcessExecutor::escape(ini_get('allow_url_fopen')); - $disableFunctionsFlag = ' -d disable_functions=' . ProcessExecutor::escape(ini_get('disable_functions')); - $memoryLimitFlag = ' -d memory_limit=' . ProcessExecutor::escape(ini_get('memory_limit')); - - return ProcessExecutor::escape($phpPath) . $phpArgs . $allowUrlFOpenFlag . $disableFunctionsFlag . $memoryLimitFlag; - } - - /** - * @param string $className - * @param string $methodName - * @param Event $event Event invoking the PHP callable - */ - protected function executeEventPhpScript($className, $methodName, Event $event) - { - $event = $this->checkListenerExpectedEvent(array($className, $methodName), $event); - - if ($this->io->isVerbose()) { - $this->io->writeError(sprintf('> %s: %s::%s', $event->getName(), $className, $methodName)); - } else { - $this->io->writeError(sprintf('> %s::%s', $className, $methodName)); - } - - return $className::$methodName($event); - } - - /** - * @param mixed $target - * @param Event $event - * @return Event - */ - protected function checkListenerExpectedEvent($target, Event $event) - { - if (in_array($event->getName(), array( - 'init', - 'command', - 'pre-file-download', - ), true)) { - return $event; - } - - try { - $reflected = new \ReflectionParameter($target, 0); - } catch (\Exception $e) { - return $event; - } - - $typehint = $reflected->getClass(); - - if (!$typehint instanceof \ReflectionClass) { - return $event; - } - - $expected = $typehint->getName(); - - // BC support - if (!$event instanceof $expected && $expected === 'Composer\Script\CommandEvent') { - trigger_error('The callback '.$this->serializeCallback($target).' declared at '.$reflected->getDeclaringFunction()->getFileName().' accepts a '.$expected.' but '.$event->getName().' events use a '.get_class($event).' instance. Please adjust your type hint accordingly, see https://getcomposer.org/doc/articles/scripts.md#event-classes', E_USER_DEPRECATED); - $event = new \Composer\Script\CommandEvent( - $event->getName(), - $event->getComposer(), - $event->getIO(), - $event->isDevMode(), - $event->getArguments() - ); - } - if (!$event instanceof $expected && $expected === 'Composer\Script\PackageEvent') { - trigger_error('The callback '.$this->serializeCallback($target).' declared at '.$reflected->getDeclaringFunction()->getFileName().' accepts a '.$expected.' but '.$event->getName().' events use a '.get_class($event).' instance. Please adjust your type hint accordingly, see https://getcomposer.org/doc/articles/scripts.md#event-classes', E_USER_DEPRECATED); - $event = new \Composer\Script\PackageEvent( - $event->getName(), - $event->getComposer(), - $event->getIO(), - $event->isDevMode(), - $event->getPolicy(), - $event->getPool(), - $event->getInstalledRepo(), - $event->getRequest(), - $event->getOperations(), - $event->getOperation() - ); - } - if (!$event instanceof $expected && $expected === 'Composer\Script\Event') { - trigger_error('The callback '.$this->serializeCallback($target).' declared at '.$reflected->getDeclaringFunction()->getFileName().' accepts a '.$expected.' but '.$event->getName().' events use a '.get_class($event).' instance. Please adjust your type hint accordingly, see https://getcomposer.org/doc/articles/scripts.md#event-classes', E_USER_DEPRECATED); - $event = new \Composer\Script\Event( - $event->getName(), - $event->getComposer(), - $event->getIO(), - $event->isDevMode(), - $event->getArguments(), - $event->getFlags() - ); - } - - return $event; - } - - private function serializeCallback($cb) - { - if (is_array($cb) && count($cb) === 2) { - if (is_object($cb[0])) { - $cb[0] = get_class($cb[0]); - } - if (is_string($cb[0]) && is_string($cb[1])) { - $cb = implode('::', $cb); - } - } - if (is_string($cb)) { - return $cb; - } - - return var_export($cb, true); - } - - /** - * Add a listener for a particular event - * - * @param string $eventName The event name - typically a constant - * @param callable $listener A callable expecting an event argument - * @param int $priority A higher value represents a higher priority - */ - public function addListener($eventName, $listener, $priority = 0) - { - $this->listeners[$eventName][$priority][] = $listener; - } - - /** - * Adds object methods as listeners for the events in getSubscribedEvents - * - * @see EventSubscriberInterface - * - * @param EventSubscriberInterface $subscriber - */ - public function addSubscriber(EventSubscriberInterface $subscriber) - { - foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { - if (is_string($params)) { - $this->addListener($eventName, array($subscriber, $params)); - } elseif (is_string($params[0])) { - $this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0); - } else { - foreach ($params as $listener) { - $this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0); - } - } - } - } - - /** - * Retrieves all listeners for a given event - * - * @param Event $event - * @return array All listeners: callables and scripts - */ - protected function getListeners(Event $event) - { - $scriptListeners = $this->getScriptListeners($event); - - if (!isset($this->listeners[$event->getName()][0])) { - $this->listeners[$event->getName()][0] = array(); - } - krsort($this->listeners[$event->getName()]); - - $listeners = $this->listeners; - $listeners[$event->getName()][0] = array_merge($listeners[$event->getName()][0], $scriptListeners); - - return call_user_func_array('array_merge', $listeners[$event->getName()]); - } - - /** - * Checks if an event has listeners registered - * - * @param Event $event - * @return bool - */ - public function hasEventListeners(Event $event) - { - $listeners = $this->getListeners($event); - - return count($listeners) > 0; - } - - /** - * Finds all listeners defined as scripts in the package - * - * @param Event $event Event object - * @return array Listeners - */ - protected function getScriptListeners(Event $event) - { - $package = $this->composer->getPackage(); - $scripts = $package->getScripts(); - - if (empty($scripts[$event->getName()])) { - return array(); - } - - if ($this->loader) { - $this->loader->unregister(); - } - - $generator = $this->composer->getAutoloadGenerator(); - if ($event instanceof ScriptEvent) { - $generator->setDevMode($event->isDevMode()); - } - - $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); - $packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $package, $packages); - $map = $generator->parseAutoloads($packageMap, $package); - $this->loader = $generator->createLoader($map); - $this->loader->register(); - - return $scripts[$event->getName()]; - } - - /** - * Checks if string given references a class path and method - * - * @param string $callable - * @return bool - */ - protected function isPhpScript($callable) - { - return false === strpos($callable, ' ') && false !== strpos($callable, '::'); - } - - /** - * Checks if string given references a composer run-script - * - * @param string $callable - * @return bool - */ - protected function isComposerScript($callable) - { - return '@' === substr($callable, 0, 1) && '@php ' !== substr($callable, 0, 5); - } - - /** - * Push an event to the stack of active event - * - * @param Event $event - * @throws \RuntimeException - * @return number - */ - protected function pushEvent(Event $event) - { - $eventName = $event->getName(); - if (in_array($eventName, $this->eventStack)) { - throw new \RuntimeException(sprintf("Circular call to script handler '%s' detected", $eventName)); - } - - return array_push($this->eventStack, $eventName); - } - - /** - * Pops the active event from the stack - * - * @return mixed - */ - protected function popEvent() - { - return array_pop($this->eventStack); - } -} diff --git a/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php b/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php deleted file mode 100644 index 6b0c4ca..0000000 --- a/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php +++ /dev/null @@ -1,48 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\EventDispatcher; - -/** - * An EventSubscriber knows which events it is interested in. - * - * If an EventSubscriber is added to an EventDispatcher, the manager invokes - * {@link getSubscribedEvents} and registers the subscriber as a listener for all - * returned events. - * - * @author Guilherme Blanco - * @author Jonathan Wage - * @author Roman Borschel - * @author Bernhard Schussek - */ -interface EventSubscriberInterface -{ - /** - * Returns an array of event names this subscriber wants to listen to. - * - * The array keys are event names and the value can be: - * - * * The method name to call (priority defaults to 0) - * * An array composed of the method name to call and the priority - * * An array of arrays composed of the method names to call and respective - * priorities, or 0 if unset - * - * For instance: - * - * * array('eventName' => 'methodName') - * * array('eventName' => array('methodName', $priority)) - * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) - * - * @return array The event names to listen to - */ - public static function getSubscribedEvents(); -} diff --git a/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php b/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php deleted file mode 100644 index 2b12ff6..0000000 --- a/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php +++ /dev/null @@ -1,20 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\EventDispatcher; - -/** - * @author Jordi Boggiano - */ -class ScriptExecutionException extends \RuntimeException -{ -} diff --git a/vendor/composer/composer/src/Composer/Exception/NoSslException.php b/vendor/composer/composer/src/Composer/Exception/NoSslException.php deleted file mode 100644 index 017cac3..0000000 --- a/vendor/composer/composer/src/Composer/Exception/NoSslException.php +++ /dev/null @@ -1,20 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Exception; - -/** - * @author Jordi Boggiano - */ -class NoSslException extends \RuntimeException -{ -} diff --git a/vendor/composer/composer/src/Composer/Factory.php b/vendor/composer/composer/src/Composer/Factory.php deleted file mode 100644 index 8a0ff1e..0000000 --- a/vendor/composer/composer/src/Composer/Factory.php +++ /dev/null @@ -1,653 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Config\JsonConfigSource; -use Composer\Json\JsonFile; -use Composer\IO\IOInterface; -use Composer\Package\Archiver; -use Composer\Package\Version\VersionGuesser; -use Composer\Repository\RepositoryManager; -use Composer\Repository\RepositoryFactory; -use Composer\Repository\WritableRepositoryInterface; -use Composer\Util\Filesystem; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; -use Composer\Util\RemoteFilesystem; -use Composer\Util\Silencer; -use Composer\Plugin\PluginEvents; -use Composer\EventDispatcher\Event; -use Seld\JsonLint\DuplicateKeyException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Formatter\OutputFormatterStyle; -use Symfony\Component\Console\Output\ConsoleOutput; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Autoload\AutoloadGenerator; -use Composer\Package\Version\VersionParser; -use Composer\Downloader\TransportException; -use Seld\JsonLint\JsonParser; - -/** - * Creates a configured instance of composer. - * - * @author Ryan Weaver - * @author Jordi Boggiano - * @author Igor Wiedler - * @author Nils Adermann - */ -class Factory -{ - /** - * @throws \RuntimeException - * @return string - */ - protected static function getHomeDir() - { - $home = getenv('COMPOSER_HOME'); - if ($home) { - return $home; - } - - if (Platform::isWindows()) { - if (!getenv('APPDATA')) { - throw new \RuntimeException('The APPDATA or COMPOSER_HOME environment variable must be set for composer to run correctly'); - } - - return rtrim(strtr(getenv('APPDATA'), '\\', '/'), '/') . '/Composer'; - } - - $userDir = self::getUserDir(); - if (is_dir($userDir . '/.composer')) { - return $userDir . '/.composer'; - } - - if (self::useXdg()) { - // XDG Base Directory Specifications - $xdgConfig = getenv('XDG_CONFIG_HOME') ?: $userDir . '/.config'; - - return $xdgConfig . '/composer'; - } - - return $userDir . '/.composer'; - } - - /** - * @param string $home - * @return string - */ - protected static function getCacheDir($home) - { - $cacheDir = getenv('COMPOSER_CACHE_DIR'); - if ($cacheDir) { - return $cacheDir; - } - - $homeEnv = getenv('COMPOSER_HOME'); - if ($homeEnv) { - return $homeEnv . '/cache'; - } - - if (Platform::isWindows()) { - if ($cacheDir = getenv('LOCALAPPDATA')) { - $cacheDir .= '/Composer'; - } else { - $cacheDir = $home . '/cache'; - } - - return rtrim(strtr($cacheDir, '\\', '/'), '/'); - } - - $userDir = self::getUserDir(); - if ($home === $userDir . '/.composer' && is_dir($home . '/cache')) { - return $home . '/cache'; - } - - if (self::useXdg()) { - $xdgCache = getenv('XDG_CACHE_HOME') ?: $userDir . '/.cache'; - - return $xdgCache . '/composer'; - } - - return $home . '/cache'; - } - - /** - * @param string $home - * @return string - */ - protected static function getDataDir($home) - { - $homeEnv = getenv('COMPOSER_HOME'); - if ($homeEnv) { - return $homeEnv; - } - - if (Platform::isWindows()) { - return strtr($home, '\\', '/'); - } - - $userDir = self::getUserDir(); - if ($home !== $userDir . '/.composer' && self::useXdg()) { - $xdgData = getenv('XDG_DATA_HOME') ?: $userDir . '/.local/share'; - - return $xdgData . '/composer'; - } - - return $home; - } - - /** - * @param IOInterface|null $io - * @return Config - */ - public static function createConfig(IOInterface $io = null, $cwd = null) - { - $cwd = $cwd ?: getcwd(); - - $config = new Config(true, $cwd); - - // determine and add main dirs to the config - $home = self::getHomeDir(); - $config->merge(array('config' => array( - 'home' => $home, - 'cache-dir' => self::getCacheDir($home), - 'data-dir' => self::getDataDir($home), - ))); - - // load global config - $file = new JsonFile($config->get('home').'/config.json'); - if ($file->exists()) { - if ($io && $io->isDebug()) { - $io->writeError('Loading config file ' . $file->getPath()); - } - $config->merge($file->read()); - } - $config->setConfigSource(new JsonConfigSource($file)); - - $htaccessProtect = (bool) $config->get('htaccess-protect'); - if ($htaccessProtect) { - // Protect directory against web access. Since HOME could be - // the www-data's user home and be web-accessible it is a - // potential security risk - $dirs = array($config->get('home'), $config->get('cache-dir'), $config->get('data-dir')); - foreach ($dirs as $dir) { - if (!file_exists($dir . '/.htaccess')) { - if (!is_dir($dir)) { - Silencer::call('mkdir', $dir, 0777, true); - } - Silencer::call('file_put_contents', $dir . '/.htaccess', 'Deny from all'); - } - } - } - - // load global auth file - $file = new JsonFile($config->get('home').'/auth.json'); - if ($file->exists()) { - if ($io && $io->isDebug()) { - $io->writeError('Loading config file ' . $file->getPath()); - } - $config->merge(array('config' => $file->read())); - } - $config->setAuthConfigSource(new JsonConfigSource($file, true)); - - // load COMPOSER_AUTH environment variable if set - if ($composerAuthEnv = getenv('COMPOSER_AUTH')) { - $authData = json_decode($composerAuthEnv, true); - - if (null === $authData) { - throw new \UnexpectedValueException('COMPOSER_AUTH environment variable is malformed, should be a valid JSON object'); - } - - if ($io && $io->isDebug()) { - $io->writeError('Loading auth config from COMPOSER_AUTH'); - } - $config->merge(array('config' => $authData)); - } - - return $config; - } - - public static function getComposerFile() - { - return trim(getenv('COMPOSER')) ?: './composer.json'; - } - - public static function createAdditionalStyles() - { - return array( - 'highlight' => new OutputFormatterStyle('red'), - 'warning' => new OutputFormatterStyle('black', 'yellow'), - ); - } - - /** - * Creates a ConsoleOutput instance - * - * @return ConsoleOutput - */ - public static function createOutput() - { - $styles = self::createAdditionalStyles(); - $formatter = new OutputFormatter(false, $styles); - - return new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, null, $formatter); - } - - /** - * @deprecated Use Composer\Repository\RepositoryFactory::defaultRepos instead - */ - public static function createDefaultRepositories(IOInterface $io = null, Config $config = null, RepositoryManager $rm = null) - { - return RepositoryFactory::defaultRepos($io, $config, $rm); - } - - /** - * Creates a Composer instance - * - * @param IOInterface $io IO instance - * @param array|string|null $localConfig either a configuration array or a filename to read from, if null it will - * read from the default filename - * @param bool $disablePlugins Whether plugins should not be loaded - * @param bool $fullLoad Whether to initialize everything or only main project stuff (used when loading the global composer) - * @throws \InvalidArgumentException - * @throws \UnexpectedValueException - * @return Composer - */ - public function createComposer(IOInterface $io, $localConfig = null, $disablePlugins = false, $cwd = null, $fullLoad = true) - { - $cwd = $cwd ?: getcwd(); - - // load Composer configuration - if (null === $localConfig) { - $localConfig = static::getComposerFile(); - } - - if (is_string($localConfig)) { - $composerFile = $localConfig; - - $file = new JsonFile($localConfig, null, $io); - - if (!$file->exists()) { - if ($localConfig === './composer.json' || $localConfig === 'composer.json') { - $message = 'Composer could not find a composer.json file in '.$cwd; - } else { - $message = 'Composer could not find the config file: '.$localConfig; - } - $instructions = 'To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section'; - throw new \InvalidArgumentException($message.PHP_EOL.$instructions); - } - - $file->validateSchema(JsonFile::LAX_SCHEMA); - $jsonParser = new JsonParser; - try { - $jsonParser->parse(file_get_contents($localConfig), JsonParser::DETECT_KEY_CONFLICTS); - } catch (DuplicateKeyException $e) { - $details = $e->getDetails(); - $io->writeError('Key '.$details['key'].' is a duplicate in '.$localConfig.' at line '.$details['line'].''); - } - - $localConfig = $file->read(); - } - - // Load config and override with local config/auth config - $config = static::createConfig($io, $cwd); - $config->merge($localConfig); - if (isset($composerFile)) { - $io->writeError('Loading config file ' . $composerFile, true, IOInterface::DEBUG); - $config->setConfigSource(new JsonConfigSource(new JsonFile(realpath($composerFile), null, $io))); - - $localAuthFile = new JsonFile(dirname(realpath($composerFile)) . '/auth.json', null, $io); - if ($localAuthFile->exists()) { - $io->writeError('Loading config file ' . $localAuthFile->getPath(), true, IOInterface::DEBUG); - $config->merge(array('config' => $localAuthFile->read())); - $config->setAuthConfigSource(new JsonConfigSource($localAuthFile, true)); - } - } - - $vendorDir = $config->get('vendor-dir'); - - // initialize composer - $composer = new Composer(); - $composer->setConfig($config); - - if ($fullLoad) { - // load auth configs into the IO instance - $io->loadConfiguration($config); - } - - $rfs = self::createRemoteFilesystem($io, $config); - - // initialize event dispatcher - $dispatcher = new EventDispatcher($composer, $io); - $composer->setEventDispatcher($dispatcher); - - // initialize repository manager - $rm = RepositoryFactory::manager($io, $config, $dispatcher, $rfs); - $composer->setRepositoryManager($rm); - - // load local repository - $this->addLocalRepository($io, $rm, $vendorDir); - - // force-set the version of the global package if not defined as - // guessing it adds no value and only takes time - if (!$fullLoad && !isset($localConfig['version'])) { - $localConfig['version'] = '1.0.0'; - } - - // load package - $parser = new VersionParser; - $guesser = new VersionGuesser($config, new ProcessExecutor($io), $parser); - $loader = new Package\Loader\RootPackageLoader($rm, $config, $parser, $guesser, $io); - $package = $loader->load($localConfig, 'Composer\Package\RootPackage', $cwd); - $composer->setPackage($package); - - // initialize installation manager - $im = $this->createInstallationManager(); - $composer->setInstallationManager($im); - - if ($fullLoad) { - // initialize download manager - $dm = $this->createDownloadManager($io, $config, $dispatcher, $rfs); - $composer->setDownloadManager($dm); - - // initialize autoload generator - $generator = new AutoloadGenerator($dispatcher, $io); - $composer->setAutoloadGenerator($generator); - - // initialize archive manager - $am = $this->createArchiveManager($config, $dm); - $composer->setArchiveManager($am); - } - - // add installers to the manager (must happen after download manager is created since they read it out of $composer) - $this->createDefaultInstallers($im, $composer, $io); - - if ($fullLoad) { - $globalComposer = null; - if (realpath($config->get('home')) !== $cwd) { - $globalComposer = $this->createGlobalComposer($io, $config, $disablePlugins); - } - - $pm = $this->createPluginManager($io, $composer, $globalComposer, $disablePlugins); - $composer->setPluginManager($pm); - - $pm->loadInstalledPlugins(); - } - - // init locker if possible - if ($fullLoad && isset($composerFile)) { - $lockFile = "json" === pathinfo($composerFile, PATHINFO_EXTENSION) - ? substr($composerFile, 0, -4).'lock' - : $composerFile . '.lock'; - - $locker = new Package\Locker($io, new JsonFile($lockFile, null, $io), $rm, $im, file_get_contents($composerFile)); - $composer->setLocker($locker); - } - - if ($fullLoad) { - $initEvent = new Event(PluginEvents::INIT); - $composer->getEventDispatcher()->dispatch($initEvent->getName(), $initEvent); - - // once everything is initialized we can - // purge packages from local repos if they have been deleted on the filesystem - if ($rm->getLocalRepository()) { - $this->purgePackages($rm->getLocalRepository(), $im); - } - } - - return $composer; - } - - /** - * @param IOInterface $io IO instance - * @param bool $disablePlugins Whether plugins should not be loaded - * @return Composer - */ - public static function createGlobal(IOInterface $io, $disablePlugins = false) - { - $factory = new static(); - - return $factory->createGlobalComposer($io, static::createConfig($io), $disablePlugins, true); - } - - /** - * @param Repository\RepositoryManager $rm - * @param string $vendorDir - */ - protected function addLocalRepository(IOInterface $io, RepositoryManager $rm, $vendorDir) - { - $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir.'/composer/installed.json', null, $io))); - } - - /** - * @param Config $config - * @return Composer|null - */ - protected function createGlobalComposer(IOInterface $io, Config $config, $disablePlugins, $fullLoad = false) - { - $composer = null; - try { - $composer = $this->createComposer($io, $config->get('home') . '/composer.json', $disablePlugins, $config->get('home'), $fullLoad); - } catch (\Exception $e) { - $io->writeError('Failed to initialize global composer: '.$e->getMessage(), true, IOInterface::DEBUG); - } - - return $composer; - } - - /** - * @param IO\IOInterface $io - * @param Config $config - * @param EventDispatcher $eventDispatcher - * @return Downloader\DownloadManager - */ - public function createDownloadManager(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, RemoteFilesystem $rfs = null) - { - $cache = null; - if ($config->get('cache-files-ttl') > 0) { - $cache = new Cache($io, $config->get('cache-files-dir'), 'a-z0-9_./'); - } - - $dm = new Downloader\DownloadManager($io); - switch ($preferred = $config->get('preferred-install')) { - case 'dist': - $dm->setPreferDist(true); - break; - case 'source': - $dm->setPreferSource(true); - break; - case 'auto': - default: - // noop - break; - } - - if (is_array($preferred)) { - $dm->setPreferences($preferred); - } - - $executor = new ProcessExecutor($io); - $fs = new Filesystem($executor); - - $dm->setDownloader('git', new Downloader\GitDownloader($io, $config, $executor, $fs)); - $dm->setDownloader('svn', new Downloader\SvnDownloader($io, $config, $executor, $fs)); - $dm->setDownloader('fossil', new Downloader\FossilDownloader($io, $config, $executor, $fs)); - $dm->setDownloader('hg', new Downloader\HgDownloader($io, $config, $executor, $fs)); - $dm->setDownloader('perforce', new Downloader\PerforceDownloader($io, $config)); - $dm->setDownloader('zip', new Downloader\ZipDownloader($io, $config, $eventDispatcher, $cache, $executor, $rfs)); - $dm->setDownloader('rar', new Downloader\RarDownloader($io, $config, $eventDispatcher, $cache, $executor, $rfs)); - $dm->setDownloader('tar', new Downloader\TarDownloader($io, $config, $eventDispatcher, $cache, $rfs)); - $dm->setDownloader('gzip', new Downloader\GzipDownloader($io, $config, $eventDispatcher, $cache, $executor, $rfs)); - $dm->setDownloader('xz', new Downloader\XzDownloader($io, $config, $eventDispatcher, $cache, $executor, $rfs)); - $dm->setDownloader('phar', new Downloader\PharDownloader($io, $config, $eventDispatcher, $cache, $rfs)); - $dm->setDownloader('file', new Downloader\FileDownloader($io, $config, $eventDispatcher, $cache, $rfs)); - $dm->setDownloader('path', new Downloader\PathDownloader($io, $config, $eventDispatcher, $cache, $rfs)); - - return $dm; - } - - /** - * @param Config $config The configuration - * @param Downloader\DownloadManager $dm Manager use to download sources - * @return Archiver\ArchiveManager - */ - public function createArchiveManager(Config $config, Downloader\DownloadManager $dm = null) - { - if (null === $dm) { - $io = new IO\NullIO(); - $io->loadConfiguration($config); - $dm = $this->createDownloadManager($io, $config); - } - - $am = new Archiver\ArchiveManager($dm); - $am->addArchiver(new Archiver\ZipArchiver); - $am->addArchiver(new Archiver\PharArchiver); - - return $am; - } - - /** - * @param IOInterface $io - * @param Composer $composer - * @param Composer $globalComposer - * @param bool $disablePlugins - * @return Plugin\PluginManager - */ - protected function createPluginManager(IOInterface $io, Composer $composer, Composer $globalComposer = null, $disablePlugins = false) - { - return new Plugin\PluginManager($io, $composer, $globalComposer, $disablePlugins); - } - - /** - * @return Installer\InstallationManager - */ - protected function createInstallationManager() - { - return new Installer\InstallationManager(); - } - - /** - * @param Installer\InstallationManager $im - * @param Composer $composer - * @param IO\IOInterface $io - */ - protected function createDefaultInstallers(Installer\InstallationManager $im, Composer $composer, IOInterface $io) - { - $im->addInstaller(new Installer\LibraryInstaller($io, $composer, null)); - $im->addInstaller(new Installer\PearInstaller($io, $composer, 'pear-library')); - $im->addInstaller(new Installer\PluginInstaller($io, $composer)); - $im->addInstaller(new Installer\MetapackageInstaller($io)); - } - - /** - * @param WritableRepositoryInterface $repo repository to purge packages from - * @param Installer\InstallationManager $im manager to check whether packages are still installed - */ - protected function purgePackages(WritableRepositoryInterface $repo, Installer\InstallationManager $im) - { - foreach ($repo->getPackages() as $package) { - if (!$im->isPackageInstalled($repo, $package)) { - $repo->removePackage($package); - } - } - } - - /** - * @param IOInterface $io IO instance - * @param mixed $config either a configuration array or a filename to read from, if null it will read from - * the default filename - * @param bool $disablePlugins Whether plugins should not be loaded - * @return Composer - */ - public static function create(IOInterface $io, $config = null, $disablePlugins = false) - { - $factory = new static(); - - return $factory->createComposer($io, $config, $disablePlugins); - } - - /** - * @param IOInterface $io IO instance - * @param Config $config Config instance - * @param array $options Array of options passed directly to RemoteFilesystem constructor - * @return RemoteFilesystem - */ - public static function createRemoteFilesystem(IOInterface $io, Config $config = null, $options = array()) - { - static $warned = false; - $disableTls = false; - if ($config && $config->get('disable-tls') === true) { - if (!$warned) { - $io->writeError('You are running Composer with SSL/TLS protection disabled.'); - } - $warned = true; - $disableTls = true; - } elseif (!extension_loaded('openssl')) { - throw new Exception\NoSslException('The openssl extension is required for SSL/TLS protection but is not available. ' - . 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); - } - $remoteFilesystemOptions = array(); - if ($disableTls === false) { - if ($config && $config->get('cafile')) { - $remoteFilesystemOptions['ssl']['cafile'] = $config->get('cafile'); - } - if ($config && $config->get('capath')) { - $remoteFilesystemOptions['ssl']['capath'] = $config->get('capath'); - } - $remoteFilesystemOptions = array_replace_recursive($remoteFilesystemOptions, $options); - } - try { - $remoteFilesystem = new RemoteFilesystem($io, $config, $remoteFilesystemOptions, $disableTls); - } catch (TransportException $e) { - if (false !== strpos($e->getMessage(), 'cafile')) { - $io->write('Unable to locate a valid CA certificate file. You must set a valid \'cafile\' option.'); - $io->write('A valid CA certificate file is required for SSL/TLS protection.'); - if (PHP_VERSION_ID < 50600) { - $io->write('It is recommended you upgrade to PHP 5.6+ which can detect your system CA file automatically.'); - } - $io->write('You can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); - } - throw $e; - } - - return $remoteFilesystem; - } - - /** - * @return bool - */ - private static function useXdg() - { - foreach (array_keys($_SERVER) as $key) { - if (substr($key, 0, 4) === 'XDG_') { - return true; - } - } - - return false; - } - - /** - * @throws \RuntimeException - * @return string - */ - private static function getUserDir() - { - $home = getenv('HOME'); - if (!$home) { - throw new \RuntimeException('The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly'); - } - - return rtrim(strtr($home, '\\', '/'), '/'); - } -} diff --git a/vendor/composer/composer/src/Composer/IO/BaseIO.php b/vendor/composer/composer/src/Composer/IO/BaseIO.php deleted file mode 100644 index cb2e99d..0000000 --- a/vendor/composer/composer/src/Composer/IO/BaseIO.php +++ /dev/null @@ -1,279 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\IO; - -use Composer\Config; -use Composer\Util\ProcessExecutor; -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; - -abstract class BaseIO implements IOInterface, LoggerInterface -{ - protected $authentications = array(); - - /** - * {@inheritDoc} - */ - public function getAuthentications() - { - return $this->authentications; - } - - /** - * {@inheritDoc} - */ - public function resetAuthentications() - { - $this->authentications = array(); - } - - /** - * {@inheritDoc} - */ - public function hasAuthentication($repositoryName) - { - return isset($this->authentications[$repositoryName]); - } - - /** - * {@inheritDoc} - */ - public function getAuthentication($repositoryName) - { - if (isset($this->authentications[$repositoryName])) { - return $this->authentications[$repositoryName]; - } - - return array('username' => null, 'password' => null); - } - - /** - * {@inheritDoc} - */ - public function setAuthentication($repositoryName, $username, $password = null) - { - $this->authentications[$repositoryName] = array('username' => $username, 'password' => $password); - } - - /** - * {@inheritDoc} - */ - public function writeRaw($messages, $newline = true, $verbosity = self::NORMAL) - { - $this->write($messages, $newline, $verbosity); - } - - /** - * {@inheritDoc} - */ - public function writeErrorRaw($messages, $newline = true, $verbosity = self::NORMAL) - { - $this->writeError($messages, $newline, $verbosity); - } - - /** - * Check for overwrite and set the authentication information for the repository. - * - * @param string $repositoryName The unique name of repository - * @param string $username The username - * @param string $password The password - */ - protected function checkAndSetAuthentication($repositoryName, $username, $password = null) - { - if ($this->hasAuthentication($repositoryName)) { - $auth = $this->getAuthentication($repositoryName); - if ($auth['username'] === $username && $auth['password'] === $password) { - return; - } - - $this->writeError( - sprintf( - "Warning: You should avoid overwriting already defined auth settings for %s.", - $repositoryName - ) - ); - } - $this->setAuthentication($repositoryName, $username, $password); - } - - /** - * {@inheritDoc} - */ - public function loadConfiguration(Config $config) - { - $bitbucketOauth = $config->get('bitbucket-oauth') ?: array(); - $githubOauth = $config->get('github-oauth') ?: array(); - $gitlabOauth = $config->get('gitlab-oauth') ?: array(); - $gitlabToken = $config->get('gitlab-token') ?: array(); - $httpBasic = $config->get('http-basic') ?: array(); - - // reload oauth tokens from config if available - - foreach ($bitbucketOauth as $domain => $cred) { - $this->checkAndSetAuthentication($domain, $cred['consumer-key'], $cred['consumer-secret']); - } - - foreach ($githubOauth as $domain => $token) { - if (!preg_match('{^[.a-z0-9]+$}', $token)) { - throw new \UnexpectedValueException('Your github oauth token for '.$domain.' contains invalid characters: "'.$token.'"'); - } - $this->checkAndSetAuthentication($domain, $token, 'x-oauth-basic'); - } - - foreach ($gitlabOauth as $domain => $token) { - $this->checkAndSetAuthentication($domain, $token, 'oauth2'); - } - - foreach ($gitlabToken as $domain => $token) { - $this->checkAndSetAuthentication($domain, $token, 'private-token'); - } - - // reload http basic credentials from config if available - foreach ($httpBasic as $domain => $cred) { - $this->checkAndSetAuthentication($domain, $cred['username'], $cred['password']); - } - - // setup process timeout - ProcessExecutor::setTimeout((int) $config->get('process-timeout')); - } - - /** - * System is unusable. - * - * @param string $message - * @param array $context - * @return null - */ - public function emergency($message, array $context = array()) - { - return $this->log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * @return null - */ - public function alert($message, array $context = array()) - { - return $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * @return null - */ - public function critical($message, array $context = array()) - { - return $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * @return null - */ - public function error($message, array $context = array()) - { - return $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * @return null - */ - public function warning($message, array $context = array()) - { - return $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * @return null - */ - public function notice($message, array $context = array()) - { - return $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * @return null - */ - public function info($message, array $context = array()) - { - return $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * @return null - */ - public function debug($message, array $context = array()) - { - return $this->log(LogLevel::DEBUG, $message, $context); - } - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * @return null - */ - public function log($level, $message, array $context = array()) - { - if (in_array($level, array(LogLevel::EMERGENCY, LogLevel::ALERT, LogLevel::CRITICAL, LogLevel::ERROR))) { - $this->writeError(''.$message.'', true, self::NORMAL); - } elseif ($level === LogLevel::WARNING) { - $this->writeError(''.$message.'', true, self::NORMAL); - } elseif ($level === LogLevel::NOTICE) { - $this->writeError(''.$message.'', true, self::VERBOSE); - } elseif ($level === LogLevel::INFO) { - $this->writeError(''.$message.'', true, self::VERY_VERBOSE); - } else { - $this->writeError($message, true, self::DEBUG); - } - } -} diff --git a/vendor/composer/composer/src/Composer/IO/BufferIO.php b/vendor/composer/composer/src/Composer/IO/BufferIO.php deleted file mode 100644 index db46713..0000000 --- a/vendor/composer/composer/src/Composer/IO/BufferIO.php +++ /dev/null @@ -1,86 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\IO; - -use Symfony\Component\Console\Helper\QuestionHelper; -use Symfony\Component\Console\Output\StreamOutput; -use Symfony\Component\Console\Formatter\OutputFormatterInterface; -use Symfony\Component\Console\Input\StreamableInputInterface; -use Symfony\Component\Console\Input\StringInput; -use Symfony\Component\Console\Helper\HelperSet; - -/** - * @author Jordi Boggiano - */ -class BufferIO extends ConsoleIO -{ - /** - * @param string $input - * @param int $verbosity - * @param OutputFormatterInterface|null $formatter - */ - public function __construct($input = '', $verbosity = StreamOutput::VERBOSITY_NORMAL, OutputFormatterInterface $formatter = null) - { - $input = new StringInput($input); - $input->setInteractive(false); - - $output = new StreamOutput(fopen('php://memory', 'rw'), $verbosity, $formatter ? $formatter->isDecorated() : false, $formatter); - - parent::__construct($input, $output, new HelperSet(array( - new QuestionHelper(), - ))); - } - - public function getOutput() - { - fseek($this->output->getStream(), 0); - - $output = stream_get_contents($this->output->getStream()); - - $output = preg_replace_callback("{(?<=^|\n|\x08)(.+?)(\x08+)}", function ($matches) { - $pre = strip_tags($matches[1]); - - if (strlen($pre) === strlen($matches[2])) { - return ''; - } - - // TODO reverse parse the string, skipping span tags and \033\[([0-9;]+)m(.*?)\033\[0m style blobs - return rtrim($matches[1])."\n"; - }, $output); - - return $output; - } - - public function setUserInputs(array $inputs) - { - if (!$this->input instanceof StreamableInputInterface) { - throw new \RuntimeException('Setting the user inputs requires at least the version 3.2 of the symfony/console component.'); - } - - $this->input->setStream($this->createStream($inputs)); - $this->input->setInteractive(true); - } - - private function createStream(array $inputs) - { - $stream = fopen('php://memory', 'r+', false); - - foreach ($inputs as $input) { - fwrite($stream, $input.PHP_EOL); - } - - rewind($stream); - - return $stream; - } -} diff --git a/vendor/composer/composer/src/Composer/IO/ConsoleIO.php b/vendor/composer/composer/src/Composer/IO/ConsoleIO.php deleted file mode 100644 index 925a528..0000000 --- a/vendor/composer/composer/src/Composer/IO/ConsoleIO.php +++ /dev/null @@ -1,346 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\IO; - -use Composer\Question\StrictConfirmationQuestion; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Question\ChoiceQuestion; -use Symfony\Component\Console\Question\Question; - -/** - * The Input/Output helper. - * - * @author François Pluchino - * @author Jordi Boggiano - */ -class ConsoleIO extends BaseIO -{ - /** @var InputInterface */ - protected $input; - /** @var OutputInterface */ - protected $output; - /** @var HelperSet */ - protected $helperSet; - /** @var string */ - protected $lastMessage; - /** @var string */ - protected $lastMessageErr; - - /** @var float */ - private $startTime; - /** @var array */ - private $verbosityMap; - - /** - * Constructor. - * - * @param InputInterface $input The input instance - * @param OutputInterface $output The output instance - * @param HelperSet $helperSet The helperSet instance - */ - public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet) - { - $this->input = $input; - $this->output = $output; - $this->helperSet = $helperSet; - $this->verbosityMap = array( - self::QUIET => OutputInterface::VERBOSITY_QUIET, - self::NORMAL => OutputInterface::VERBOSITY_NORMAL, - self::VERBOSE => OutputInterface::VERBOSITY_VERBOSE, - self::VERY_VERBOSE => OutputInterface::VERBOSITY_VERY_VERBOSE, - self::DEBUG => OutputInterface::VERBOSITY_DEBUG, - ); - } - - /** - * @param float $startTime - */ - public function enableDebugging($startTime) - { - $this->startTime = $startTime; - } - - /** - * {@inheritDoc} - */ - public function isInteractive() - { - return $this->input->isInteractive(); - } - - /** - * {@inheritDoc} - */ - public function isDecorated() - { - return $this->output->isDecorated(); - } - - /** - * {@inheritDoc} - */ - public function isVerbose() - { - return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE; - } - - /** - * {@inheritDoc} - */ - public function isVeryVerbose() - { - return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE; - } - - /** - * {@inheritDoc} - */ - public function isDebug() - { - return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_DEBUG; - } - - /** - * {@inheritDoc} - */ - public function write($messages, $newline = true, $verbosity = self::NORMAL) - { - $this->doWrite($messages, $newline, false, $verbosity); - } - - /** - * {@inheritDoc} - */ - public function writeError($messages, $newline = true, $verbosity = self::NORMAL) - { - $this->doWrite($messages, $newline, true, $verbosity); - } - - /** - * {@inheritDoc} - */ - public function writeRaw($messages, $newline = true, $verbosity = self::NORMAL) - { - $this->doWrite($messages, $newline, false, $verbosity, true); - } - - /** - * {@inheritDoc} - */ - public function writeErrorRaw($messages, $newline = true, $verbosity = self::NORMAL) - { - $this->doWrite($messages, $newline, true, $verbosity, true); - } - - /** - * @param array|string $messages - * @param bool $newline - * @param bool $stderr - * @param int $verbosity - */ - private function doWrite($messages, $newline, $stderr, $verbosity, $raw = false) - { - $sfVerbosity = $this->verbosityMap[$verbosity]; - if ($sfVerbosity > $this->output->getVerbosity()) { - return; - } - - // hack to keep our usage BC with symfony<2.8 versions - // this removes the quiet output but there is no way around it - // see https://github.com/composer/composer/pull/4913 - if (OutputInterface::VERBOSITY_QUIET === 0) { - $sfVerbosity = OutputInterface::OUTPUT_NORMAL; - } - - if ($raw) { - if ($sfVerbosity === OutputInterface::OUTPUT_NORMAL) { - $sfVerbosity = OutputInterface::OUTPUT_RAW; - } else { - $sfVerbosity |= OutputInterface::OUTPUT_RAW; - } - } - - if (null !== $this->startTime) { - $memoryUsage = memory_get_usage() / 1024 / 1024; - $timeSpent = microtime(true) - $this->startTime; - $messages = array_map(function ($message) use ($memoryUsage, $timeSpent) { - return sprintf('[%.1fMiB/%.2fs] %s', $memoryUsage, $timeSpent, $message); - }, (array) $messages); - } - - if (true === $stderr && $this->output instanceof ConsoleOutputInterface) { - $this->output->getErrorOutput()->write($messages, $newline, $sfVerbosity); - $this->lastMessageErr = implode($newline ? "\n" : '', (array) $messages); - - return; - } - - $this->output->write($messages, $newline, $sfVerbosity); - $this->lastMessage = implode($newline ? "\n" : '', (array) $messages); - } - - /** - * {@inheritDoc} - */ - public function overwrite($messages, $newline = true, $size = null, $verbosity = self::NORMAL) - { - $this->doOverwrite($messages, $newline, $size, false, $verbosity); - } - - /** - * {@inheritDoc} - */ - public function overwriteError($messages, $newline = true, $size = null, $verbosity = self::NORMAL) - { - $this->doOverwrite($messages, $newline, $size, true, $verbosity); - } - - /** - * @param array|string $messages - * @param bool $newline - * @param int|null $size - * @param bool $stderr - * @param int $verbosity - */ - private function doOverwrite($messages, $newline, $size, $stderr, $verbosity) - { - // messages can be an array, let's convert it to string anyway - $messages = implode($newline ? "\n" : '', (array) $messages); - - // since overwrite is supposed to overwrite last message... - if (!isset($size)) { - // removing possible formatting of lastMessage with strip_tags - $size = strlen(strip_tags($stderr ? $this->lastMessageErr : $this->lastMessage)); - } - // ...let's fill its length with backspaces - $this->doWrite(str_repeat("\x08", $size), false, $stderr, $verbosity); - - // write the new message - $this->doWrite($messages, false, $stderr, $verbosity); - - // In cmd.exe on Win8.1 (possibly 10?), the line can not be cleared, so we need to - // track the length of previous output and fill it with spaces to make sure the line is cleared. - // See https://github.com/composer/composer/pull/5836 for more details - $fill = $size - strlen(strip_tags($messages)); - if ($fill > 0) { - // whitespace whatever has left - $this->doWrite(str_repeat(' ', $fill), false, $stderr, $verbosity); - // move the cursor back - $this->doWrite(str_repeat("\x08", $fill), false, $stderr, $verbosity); - } - - if ($newline) { - $this->doWrite('', true, $stderr, $verbosity); - } - - if ($stderr) { - $this->lastMessageErr = $messages; - } else { - $this->lastMessage = $messages; - } - } - - /** - * {@inheritDoc} - */ - public function ask($question, $default = null) - { - /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ - $helper = $this->helperSet->get('question'); - $question = new Question($question, $default); - - return $helper->ask($this->input, $this->getErrorOutput(), $question); - } - - /** - * {@inheritDoc} - */ - public function askConfirmation($question, $default = true) - { - /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ - $helper = $this->helperSet->get('question'); - $question = new StrictConfirmationQuestion($question, $default); - - return $helper->ask($this->input, $this->getErrorOutput(), $question); - } - - /** - * {@inheritDoc} - */ - public function askAndValidate($question, $validator, $attempts = null, $default = null) - { - /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ - $helper = $this->helperSet->get('question'); - $question = new Question($question, $default); - $question->setValidator($validator); - $question->setMaxAttempts($attempts); - - return $helper->ask($this->input, $this->getErrorOutput(), $question); - } - - /** - * {@inheritDoc} - */ - public function askAndHideAnswer($question) - { - /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ - $helper = $this->helperSet->get('question'); - $question = new Question($question); - $question->setHidden(true); - - return $helper->ask($this->input, $this->getErrorOutput(), $question); - } - - /** - * {@inheritDoc} - */ - public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false) - { - /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ - $helper = $this->helperSet->get('question'); - $question = new ChoiceQuestion($question, $choices, $default); - $question->setMaxAttempts($attempts ?: null); // IOInterface requires false, and Question requires null or int - $question->setErrorMessage($errorMessage); - $question->setMultiselect($multiselect); - - $result = $helper->ask($this->input, $this->getErrorOutput(), $question); - - if (!is_array($result)) { - return (string) array_search($result, $choices, true); - } - - $results = array(); - foreach ($choices as $index => $choice) { - if (in_array($choice, $result, true)) { - $results[] = (string) $index; - } - } - - return $results; - } - - /** - * @return OutputInterface - */ - private function getErrorOutput() - { - if ($this->output instanceof ConsoleOutputInterface) { - return $this->output->getErrorOutput(); - } - - return $this->output; - } -} diff --git a/vendor/composer/composer/src/Composer/IO/IOInterface.php b/vendor/composer/composer/src/Composer/IO/IOInterface.php deleted file mode 100644 index 5766ba4..0000000 --- a/vendor/composer/composer/src/Composer/IO/IOInterface.php +++ /dev/null @@ -1,207 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\IO; - -use Composer\Config; - -/** - * The Input/Output helper interface. - * - * @author François Pluchino - */ -interface IOInterface -{ - const QUIET = 1; - const NORMAL = 2; - const VERBOSE = 4; - const VERY_VERBOSE = 8; - const DEBUG = 16; - - /** - * Is this input means interactive? - * - * @return bool - */ - public function isInteractive(); - - /** - * Is this output verbose? - * - * @return bool - */ - public function isVerbose(); - - /** - * Is the output very verbose? - * - * @return bool - */ - public function isVeryVerbose(); - - /** - * Is the output in debug verbosity? - * - * @return bool - */ - public function isDebug(); - - /** - * Is this output decorated? - * - * @return bool - */ - public function isDecorated(); - - /** - * Writes a message to the output. - * - * @param string|array $messages The message as an array of lines or a single string - * @param bool $newline Whether to add a newline or not - * @param int $verbosity Verbosity level from the VERBOSITY_* constants - */ - public function write($messages, $newline = true, $verbosity = self::NORMAL); - - /** - * Writes a message to the error output. - * - * @param string|array $messages The message as an array of lines or a single string - * @param bool $newline Whether to add a newline or not - * @param int $verbosity Verbosity level from the VERBOSITY_* constants - */ - public function writeError($messages, $newline = true, $verbosity = self::NORMAL); - - /** - * Overwrites a previous message to the output. - * - * @param string|array $messages The message as an array of lines or a single string - * @param bool $newline Whether to add a newline or not - * @param int $size The size of line - * @param int $verbosity Verbosity level from the VERBOSITY_* constants - */ - public function overwrite($messages, $newline = true, $size = null, $verbosity = self::NORMAL); - - /** - * Overwrites a previous message to the error output. - * - * @param string|array $messages The message as an array of lines or a single string - * @param bool $newline Whether to add a newline or not - * @param int $size The size of line - * @param int $verbosity Verbosity level from the VERBOSITY_* constants - */ - public function overwriteError($messages, $newline = true, $size = null, $verbosity = self::NORMAL); - - /** - * Asks a question to the user. - * - * @param string $question The question to ask - * @param string $default The default answer if none is given by the user - * - * @throws \RuntimeException If there is no data to read in the input stream - * @return string The user answer - */ - public function ask($question, $default = null); - - /** - * Asks a confirmation to the user. - * - * The question will be asked until the user answers by nothing, yes, or no. - * - * @param string $question The question to ask - * @param bool $default The default answer if the user enters nothing - * - * @return bool true if the user has confirmed, false otherwise - */ - public function askConfirmation($question, $default = true); - - /** - * Asks for a value and validates the response. - * - * The validator receives the data to validate. It must return the - * validated data when the data is valid and throw an exception - * otherwise. - * - * @param string $question The question to ask - * @param callable $validator A PHP callback - * @param null|int $attempts Max number of times to ask before giving up (default of null means infinite) - * @param mixed $default The default answer if none is given by the user - * - * @throws \Exception When any of the validators return an error - * @return mixed - */ - public function askAndValidate($question, $validator, $attempts = null, $default = null); - - /** - * Asks a question to the user and hide the answer. - * - * @param string $question The question to ask - * - * @return string The answer - */ - public function askAndHideAnswer($question); - - /** - * Asks the user to select a value. - * - * @param string $question The question to ask - * @param array $choices List of choices to pick from - * @param bool|string $default The default answer if the user enters nothing - * @param bool|int $attempts Max number of times to ask before giving up (false by default, which means infinite) - * @param string $errorMessage Message which will be shown if invalid value from choice list would be picked - * @param bool $multiselect Select more than one value separated by comma - * - * @throws \InvalidArgumentException - * @return int|string|array The selected value or values (the key of the choices array) - */ - public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false); - - /** - * Get all authentication information entered. - * - * @return array The map of authentication data - */ - public function getAuthentications(); - - /** - * Verify if the repository has a authentication information. - * - * @param string $repositoryName The unique name of repository - * - * @return bool - */ - public function hasAuthentication($repositoryName); - - /** - * Get the username and password of repository. - * - * @param string $repositoryName The unique name of repository - * - * @return array The 'username' and 'password' - */ - public function getAuthentication($repositoryName); - - /** - * Set the authentication information for the repository. - * - * @param string $repositoryName The unique name of repository - * @param string $username The username - * @param string $password The password - */ - public function setAuthentication($repositoryName, $username, $password = null); - - /** - * Loads authentications from a config instance - * - * @param Config $config - */ - public function loadConfiguration(Config $config); -} diff --git a/vendor/composer/composer/src/Composer/IO/NullIO.php b/vendor/composer/composer/src/Composer/IO/NullIO.php deleted file mode 100644 index cc6d5eb..0000000 --- a/vendor/composer/composer/src/Composer/IO/NullIO.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\IO; - -/** - * IOInterface that is not interactive and never writes the output - * - * @author Christophe Coevoet - */ -class NullIO extends BaseIO -{ - /** - * {@inheritDoc} - */ - public function isInteractive() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function isVerbose() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function isVeryVerbose() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function isDebug() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function isDecorated() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function write($messages, $newline = true, $verbosity = self::NORMAL) - { - } - - /** - * {@inheritDoc} - */ - public function writeError($messages, $newline = true, $verbosity = self::NORMAL) - { - } - - /** - * {@inheritDoc} - */ - public function overwrite($messages, $newline = true, $size = 80, $verbosity = self::NORMAL) - { - } - - /** - * {@inheritDoc} - */ - public function overwriteError($messages, $newline = true, $size = 80, $verbosity = self::NORMAL) - { - } - - /** - * {@inheritDoc} - */ - public function ask($question, $default = null) - { - return $default; - } - - /** - * {@inheritDoc} - */ - public function askConfirmation($question, $default = true) - { - return $default; - } - - /** - * {@inheritDoc} - */ - public function askAndValidate($question, $validator, $attempts = false, $default = null) - { - return $default; - } - - /** - * {@inheritDoc} - */ - public function askAndHideAnswer($question) - { - return null; - } - - /** - * {@inheritDoc} - */ - public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false) - { - return $default; - } -} diff --git a/vendor/composer/composer/src/Composer/Installer.php b/vendor/composer/composer/src/Composer/Installer.php deleted file mode 100644 index e00b381..0000000 --- a/vendor/composer/composer/src/Composer/Installer.php +++ /dev/null @@ -1,1803 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\AutoloadGenerator; -use Composer\DependencyResolver\DefaultPolicy; -use Composer\DependencyResolver\Operation\UpdateOperation; -use Composer\DependencyResolver\Operation\InstallOperation; -use Composer\DependencyResolver\Operation\UninstallOperation; -use Composer\DependencyResolver\Operation\MarkAliasUninstalledOperation; -use Composer\DependencyResolver\Operation\OperationInterface; -use Composer\DependencyResolver\PolicyInterface; -use Composer\DependencyResolver\Pool; -use Composer\DependencyResolver\Request; -use Composer\DependencyResolver\Rule; -use Composer\DependencyResolver\Solver; -use Composer\DependencyResolver\SolverProblemsException; -use Composer\Downloader\DownloadManager; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Installer\InstallationManager; -use Composer\Installer\InstallerEvents; -use Composer\Installer\NoopInstaller; -use Composer\Installer\SuggestedPackagesReporter; -use Composer\IO\IOInterface; -use Composer\Package\AliasPackage; -use Composer\Package\BasePackage; -use Composer\Package\CompletePackage; -use Composer\Package\Link; -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\Dumper\ArrayDumper; -use Composer\Semver\Constraint\Constraint; -use Composer\Package\Locker; -use Composer\Package\PackageInterface; -use Composer\Package\RootPackageInterface; -use Composer\Repository\CompositeRepository; -use Composer\Repository\InstalledArrayRepository; -use Composer\Repository\PlatformRepository; -use Composer\Repository\RepositoryInterface; -use Composer\Repository\RepositoryManager; -use Composer\Repository\WritableRepositoryInterface; -use Composer\Script\ScriptEvents; - -/** - * @author Jordi Boggiano - * @author Beau Simensen - * @author Konstantin Kudryashov - * @author Nils Adermann - */ -class Installer -{ - /** - * @var IOInterface - */ - protected $io; - - /** - * @var Config - */ - protected $config; - - /** - * @var RootPackageInterface - */ - protected $package; - - /** - * @var DownloadManager - */ - protected $downloadManager; - - /** - * @var RepositoryManager - */ - protected $repositoryManager; - - /** - * @var Locker - */ - protected $locker; - - /** - * @var InstallationManager - */ - protected $installationManager; - - /** - * @var EventDispatcher - */ - protected $eventDispatcher; - - /** - * @var AutoloadGenerator - */ - protected $autoloadGenerator; - - protected $preferSource = false; - protected $preferDist = false; - protected $optimizeAutoloader = false; - protected $classMapAuthoritative = false; - protected $apcuAutoloader = false; - protected $devMode = false; - protected $dryRun = false; - protected $verbose = false; - protected $update = false; - protected $dumpAutoloader = true; - protected $runScripts = true; - protected $ignorePlatformReqs = false; - protected $preferStable = false; - protected $preferLowest = false; - protected $skipSuggest = false; - protected $writeLock = true; - protected $executeOperations = true; - - /** - * Array of package names/globs flagged for update - * - * @var array|null - */ - protected $updateWhitelist = null; - protected $whitelistDependencies = false; // TODO 2.0 rename to whitelistTransitiveDependencies - protected $whitelistAllDependencies = false; - - /** - * @var SuggestedPackagesReporter - */ - protected $suggestedPackagesReporter; - - /** - * @var RepositoryInterface - */ - protected $additionalInstalledRepository; - - /** - * Constructor - * - * @param IOInterface $io - * @param Config $config - * @param RootPackageInterface $package - * @param DownloadManager $downloadManager - * @param RepositoryManager $repositoryManager - * @param Locker $locker - * @param InstallationManager $installationManager - * @param EventDispatcher $eventDispatcher - * @param AutoloadGenerator $autoloadGenerator - */ - public function __construct(IOInterface $io, Config $config, RootPackageInterface $package, DownloadManager $downloadManager, RepositoryManager $repositoryManager, Locker $locker, InstallationManager $installationManager, EventDispatcher $eventDispatcher, AutoloadGenerator $autoloadGenerator) - { - $this->io = $io; - $this->config = $config; - $this->package = $package; - $this->downloadManager = $downloadManager; - $this->repositoryManager = $repositoryManager; - $this->locker = $locker; - $this->installationManager = $installationManager; - $this->eventDispatcher = $eventDispatcher; - $this->autoloadGenerator = $autoloadGenerator; - } - - /** - * Run installation (or update) - * - * @throws \Exception - * @return int 0 on success or a positive error code on failure - */ - public function run() - { - // Disable GC to save CPU cycles, as the dependency solver can create hundreds of thousands - // of PHP objects, the GC can spend quite some time walking the tree of references looking - // for stuff to collect while there is nothing to collect. This slows things down dramatically - // and turning it off results in much better performance. Do not try this at home however. - gc_collect_cycles(); - gc_disable(); - - // Force update if there is no lock file present - if (!$this->update && !$this->locker->isLocked()) { - $this->update = true; - } - - if ($this->dryRun) { - $this->verbose = true; - $this->runScripts = false; - $this->executeOperations = false; - $this->writeLock = false; - $this->dumpAutoloader = false; - $this->installationManager->addInstaller(new NoopInstaller); - $this->mockLocalRepositories($this->repositoryManager); - } - - if ($this->runScripts) { - $devMode = (int) $this->devMode; - putenv("COMPOSER_DEV_MODE=$devMode"); - - // dispatch pre event - $eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD; - $this->eventDispatcher->dispatchScript($eventName, $this->devMode); - } - - $this->downloadManager->setPreferSource($this->preferSource); - $this->downloadManager->setPreferDist($this->preferDist); - - // create installed repo, this contains all local packages + platform packages (php & extensions) - $localRepo = $this->repositoryManager->getLocalRepository(); - if ($this->update) { - $platformOverrides = $this->config->get('platform') ?: array(); - } else { - $platformOverrides = $this->locker->getPlatformOverrides(); - } - $platformRepo = new PlatformRepository(array(), $platformOverrides); - $installedRepo = $this->createInstalledRepo($localRepo, $platformRepo); - - $aliases = $this->getRootAliases(); - $this->aliasPlatformPackages($platformRepo, $aliases); - - if (!$this->suggestedPackagesReporter) { - $this->suggestedPackagesReporter = new SuggestedPackagesReporter($this->io); - } - - try { - list($res, $devPackages) = $this->doInstall($localRepo, $installedRepo, $platformRepo, $aliases); - if ($res !== 0) { - return $res; - } - } catch (\Exception $e) { - if ($this->executeOperations) { - $this->installationManager->notifyInstalls($this->io); - } - - throw $e; - } - if ($this->executeOperations) { - $this->installationManager->notifyInstalls($this->io); - } - - // output suggestions if we're in dev mode - if ($this->devMode && !$this->skipSuggest) { - $this->suggestedPackagesReporter->output($installedRepo); - } - - # Find abandoned packages and warn user - foreach ($localRepo->getPackages() as $package) { - if (!$package instanceof CompletePackage || !$package->isAbandoned()) { - continue; - } - - $replacement = is_string($package->getReplacementPackage()) - ? 'Use ' . $package->getReplacementPackage() . ' instead' - : 'No replacement was suggested'; - - $this->io->writeError( - sprintf( - "Package %s is abandoned, you should avoid using it. %s.", - $package->getPrettyName(), - $replacement - ) - ); - } - - // write lock - if ($this->update && $this->writeLock) { - $localRepo->reload(); - - $platformReqs = $this->extractPlatformRequirements($this->package->getRequires()); - $platformDevReqs = $this->extractPlatformRequirements($this->package->getDevRequires()); - - $updatedLock = $this->locker->setLockData( - array_diff($localRepo->getCanonicalPackages(), $devPackages), - $devPackages, - $platformReqs, - $platformDevReqs, - $aliases, - $this->package->getMinimumStability(), - $this->package->getStabilityFlags(), - $this->preferStable || $this->package->getPreferStable(), - $this->preferLowest, - $this->config->get('platform') ?: array() - ); - if ($updatedLock) { - $this->io->writeError('Writing lock file'); - } - } - - if ($this->dumpAutoloader) { - // write autoloader - if ($this->optimizeAutoloader) { - $this->io->writeError('Generating optimized autoload files'); - } else { - $this->io->writeError('Generating autoload files'); - } - - $this->autoloadGenerator->setDevMode($this->devMode); - $this->autoloadGenerator->setClassMapAuthoritative($this->classMapAuthoritative); - $this->autoloadGenerator->setApcu($this->apcuAutoloader); - $this->autoloadGenerator->setRunScripts($this->runScripts); - $this->autoloadGenerator->dump($this->config, $localRepo, $this->package, $this->installationManager, 'composer', $this->optimizeAutoloader); - } - - if ($this->executeOperations) { - // force binaries re-generation in case they are missing - foreach ($localRepo->getPackages() as $package) { - $this->installationManager->ensureBinariesPresence($package); - } - - $vendorDir = $this->config->get('vendor-dir'); - if (is_dir($vendorDir)) { - // suppress errors as this fails sometimes on OSX for no apparent reason - // see https://github.com/composer/composer/issues/4070#issuecomment-129792748 - @touch($vendorDir); - } - } - - if ($this->runScripts) { - // dispatch post event - $eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD; - $this->eventDispatcher->dispatchScript($eventName, $this->devMode); - } - - // re-enable GC except on HHVM which triggers a warning here - if (!defined('HHVM_VERSION')) { - gc_enable(); - } - - return 0; - } - - /** - * @param RepositoryInterface $localRepo - * @param RepositoryInterface $installedRepo - * @param PlatformRepository $platformRepo - * @param array $aliases - * @return array [int, PackageInterfaces[]|null] with the exit code and an array of dev packages on update, or null on install - */ - protected function doInstall($localRepo, $installedRepo, $platformRepo, $aliases) - { - // init vars - $lockedRepository = null; - $repositories = null; - - // initialize locked repo if we are installing from lock or in a partial update - // and a lock file is present as we need to force install non-whitelisted lock file - // packages in that case - if (!$this->update || (!empty($this->updateWhitelist) && $this->locker->isLocked())) { - try { - $lockedRepository = $this->locker->getLockedRepository($this->devMode); - } catch (\RuntimeException $e) { - // if there are dev requires, then we really can not install - if ($this->package->getDevRequires()) { - throw $e; - } - // no require-dev in composer.json and the lock file was created with no dev info, so skip them - $lockedRepository = $this->locker->getLockedRepository(); - } - } - - $this->whitelistUpdateDependencies( - $lockedRepository ?: $localRepo, - $this->package->getRequires(), - $this->package->getDevRequires() - ); - - $this->io->writeError('Loading composer repositories with package information'); - - // creating repository pool - $policy = $this->createPolicy(); - $pool = $this->createPool($this->update ? null : $lockedRepository); - $pool->addRepository($installedRepo, $aliases); - if ($this->update) { - $repositories = $this->repositoryManager->getRepositories(); - foreach ($repositories as $repository) { - $pool->addRepository($repository, $aliases); - } - } - // Add the locked repository after the others in case we are doing a - // partial update so missing packages can be found there still. - // For installs from lock it's the only one added so it is first - if ($lockedRepository) { - $pool->addRepository($lockedRepository, $aliases); - } - - // creating requirements request - $request = $this->createRequest($this->package, $platformRepo); - - if ($this->update) { - // remove unstable packages from the localRepo if they don't match the current stability settings - $removedUnstablePackages = array(); - foreach ($localRepo->getPackages() as $package) { - if ( - !$pool->isPackageAcceptable($package->getNames(), $package->getStability()) - && $this->installationManager->isPackageInstalled($localRepo, $package) - ) { - $removedUnstablePackages[$package->getName()] = true; - $request->remove($package->getName(), new Constraint('=', $package->getVersion())); - } - } - - $this->io->writeError('Updating dependencies'.($this->devMode ? ' (including require-dev)' : '').''); - - $request->updateAll(); - - $links = array_merge($this->package->getRequires(), $this->package->getDevRequires()); - - foreach ($links as $link) { - $request->install($link->getTarget(), $link->getConstraint()); - } - - // if the updateWhitelist is enabled, packages not in it are also fixed - // to the version specified in the lock, or their currently installed version - if ($this->updateWhitelist) { - $currentPackages = $this->getCurrentPackages($installedRepo); - - // collect packages to fixate from root requirements as well as installed packages - $candidates = array(); - foreach ($links as $link) { - $candidates[$link->getTarget()] = true; - $rootRequires[$link->getTarget()] = $link; - } - foreach ($currentPackages as $package) { - $candidates[$package->getName()] = true; - } - - // fix them to the version in lock (or currently installed) if they are not updateable - foreach ($candidates as $candidate => $dummy) { - foreach ($currentPackages as $curPackage) { - if ($curPackage->getName() === $candidate) { - if (!$this->isUpdateable($curPackage) && !isset($removedUnstablePackages[$curPackage->getName()])) { - $constraint = new Constraint('=', $curPackage->getVersion()); - $description = $this->locker->isLocked() ? '(locked at' : '(installed at'; - $requiredAt = isset($rootRequires[$candidate]) ? ', required as ' . $rootRequires[$candidate]->getPrettyConstraint() : ''; - $constraint->setPrettyString($description . ' ' . $curPackage->getPrettyVersion() . $requiredAt . ')'); - $request->install($curPackage->getName(), $constraint); - } - break; - } - } - } - } - } else { - $this->io->writeError('Installing dependencies'.($this->devMode ? ' (including require-dev)' : '').' from lock file'); - - if (!$this->locker->isFresh()) { - $this->io->writeError('Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update `.', true, IOInterface::QUIET); - } - - foreach ($lockedRepository->getPackages() as $package) { - $version = $package->getVersion(); - if (isset($aliases[$package->getName()][$version])) { - $version = $aliases[$package->getName()][$version]['alias_normalized']; - } - $constraint = new Constraint('=', $version); - $constraint->setPrettyString($package->getPrettyVersion()); - $request->install($package->getName(), $constraint); - } - - foreach ($this->locker->getPlatformRequirements($this->devMode) as $link) { - $request->install($link->getTarget(), $link->getConstraint()); - } - } - - // force dev packages to have the latest links if we update or install from a (potentially new) lock - $this->processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, 'force-links'); - - // solve dependencies - $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_DEPENDENCIES_SOLVING, $this->devMode, $policy, $pool, $installedRepo, $request); - $solver = new Solver($policy, $pool, $installedRepo, $this->io); - try { - $operations = $solver->solve($request, $this->ignorePlatformReqs); - $ruleSetSize = $solver->getRuleSetSize(); - $solver = null; - } catch (SolverProblemsException $e) { - $this->io->writeError('Your requirements could not be resolved to an installable set of packages.', true, IOInterface::QUIET); - $this->io->writeError($e->getMessage()); - if ($this->update && !$this->devMode) { - $this->io->writeError('Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.', true, IOInterface::QUIET); - } - - return array(max(1, $e->getCode()), array()); - } - - // force dev packages to be updated if we update or install from a (potentially new) lock - $operations = $this->processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, 'force-updates', $operations); - - $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::POST_DEPENDENCIES_SOLVING, $this->devMode, $policy, $pool, $installedRepo, $request, $operations); - - $this->io->writeError("Analyzed ".count($pool)." packages to resolve dependencies", true, IOInterface::VERBOSE); - $this->io->writeError("Analyzed ".$ruleSetSize." rules to resolve dependencies", true, IOInterface::VERBOSE); - - // execute operations - if (!$operations) { - $this->io->writeError('Nothing to install or update'); - } - - $operations = $this->movePluginsToFront($operations); - $operations = $this->moveUninstallsToFront($operations); - - // extract dev packages and mark them to be skipped if it's a --no-dev install or update - // we also force them to be uninstalled if they are present in the local repo - if ($this->update) { - $devPackages = $this->extractDevPackages($operations, $localRepo, $platformRepo, $aliases); - if (!$this->devMode) { - $operations = $this->filterDevPackageOperations($devPackages, $operations, $localRepo); - } - } else { - $devPackages = null; - } - - if ($operations) { - $installs = $updates = $uninstalls = array(); - foreach ($operations as $operation) { - if ($operation instanceof InstallOperation) { - $installs[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion(); - } elseif ($operation instanceof UpdateOperation) { - $updates[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion(); - } elseif ($operation instanceof UninstallOperation) { - $uninstalls[] = $operation->getPackage()->getPrettyName(); - } - } - - $this->io->writeError(sprintf( - "Package operations: %d install%s, %d update%s, %d removal%s", - count($installs), - 1 === count($installs) ? '' : 's', - count($updates), - 1 === count($updates) ? '' : 's', - count($uninstalls), - 1 === count($uninstalls) ? '' : 's' - )); - if ($installs) { - $this->io->writeError("Installs: ".implode(', ', $installs), true, IOInterface::VERBOSE); - } - if ($updates) { - $this->io->writeError("Updates: ".implode(', ', $updates), true, IOInterface::VERBOSE); - } - if ($uninstalls) { - $this->io->writeError("Removals: ".implode(', ', $uninstalls), true, IOInterface::VERBOSE); - } - } - - foreach ($operations as $operation) { - // collect suggestions - $jobType = $operation->getJobType(); - if ('install' === $jobType) { - $this->suggestedPackagesReporter->addSuggestionsFromPackage($operation->getPackage()); - } - - // updating, force dev packages' references if they're in root package refs - if ($this->update) { - $package = null; - if ('update' === $jobType) { - $package = $operation->getTargetPackage(); - } elseif ('install' === $jobType) { - $package = $operation->getPackage(); - } - if ($package && $package->isDev()) { - $references = $this->package->getReferences(); - if (isset($references[$package->getName()])) { - $this->updateInstallReferences($package, $references[$package->getName()]); - } - } - if ('update' === $jobType) { - $targetPackage = $operation->getTargetPackage(); - if ($targetPackage->isDev()) { - $initialPackage = $operation->getInitialPackage(); - if ($targetPackage->getVersion() === $initialPackage->getVersion() - && (!$targetPackage->getSourceReference() || $targetPackage->getSourceReference() === $initialPackage->getSourceReference()) - && (!$targetPackage->getDistReference() || $targetPackage->getDistReference() === $initialPackage->getDistReference()) - ) { - $this->io->writeError(' - Skipping update of ' . $targetPackage->getPrettyName() . ' to the same reference-locked version', true, IOInterface::DEBUG); - $this->io->writeError('', true, IOInterface::DEBUG); - - continue; - } - } - } - } - - $event = 'Composer\Installer\PackageEvents::PRE_PACKAGE_'.strtoupper($jobType); - if (defined($event) && $this->runScripts) { - $this->eventDispatcher->dispatchPackageEvent(constant($event), $this->devMode, $policy, $pool, $installedRepo, $request, $operations, $operation); - } - - // output non-alias ops when not executing operations (i.e. dry run), output alias ops in debug verbosity - if (!$this->executeOperations && false === strpos($operation->getJobType(), 'Alias')) { - $this->io->writeError(' - ' . $operation); - } elseif ($this->io->isDebug() && false !== strpos($operation->getJobType(), 'Alias')) { - $this->io->writeError(' - ' . $operation); - } - - $this->installationManager->execute($localRepo, $operation); - - // output reasons why the operation was ran, only for install/update operations - if ($this->verbose && $this->io->isVeryVerbose() && in_array($jobType, array('install', 'update'))) { - $reason = $operation->getReason(); - if ($reason instanceof Rule) { - switch ($reason->getReason()) { - case Rule::RULE_JOB_INSTALL: - $this->io->writeError(' REASON: Required by the root package: '.$reason->getPrettyString($pool)); - $this->io->writeError(''); - break; - case Rule::RULE_PACKAGE_REQUIRES: - $this->io->writeError(' REASON: '.$reason->getPrettyString($pool)); - $this->io->writeError(''); - break; - } - } - } - - if ($this->executeOperations || $this->writeLock) { - $localRepo->write(); - } - - $event = 'Composer\Installer\PackageEvents::POST_PACKAGE_'.strtoupper($jobType); - if (defined($event) && $this->runScripts) { - $this->eventDispatcher->dispatchPackageEvent(constant($event), $this->devMode, $policy, $pool, $installedRepo, $request, $operations, $operation); - } - } - - if ($this->executeOperations) { - // force source/dist urls to be updated for all packages - $this->processPackageUrls($pool, $policy, $localRepo, $repositories); - $localRepo->write(); - } - - return array(0, $devPackages); - } - - /** - * Extracts the dev packages out of the localRepo - * - * This works by faking the operations so we can see what the dev packages - * would be at the end of the operation execution. This lets us then remove - * the dev packages from the list of operations accordingly if we are in a - * --no-dev install or update. - * - * @return array - */ - private function extractDevPackages(array $operations, RepositoryInterface $localRepo, PlatformRepository $platformRepo, array $aliases) - { - if (!$this->package->getDevRequires()) { - return array(); - } - - // fake-apply all operations to this clone of the local repo so we see the complete set of package we would end up with - $tempLocalRepo = clone $localRepo; - foreach ($operations as $operation) { - switch ($operation->getJobType()) { - case 'install': - case 'markAliasInstalled': - if (!$tempLocalRepo->hasPackage($operation->getPackage())) { - $tempLocalRepo->addPackage(clone $operation->getPackage()); - } - break; - - case 'uninstall': - case 'markAliasUninstalled': - $tempLocalRepo->removePackage($operation->getPackage()); - break; - - case 'update': - $tempLocalRepo->removePackage($operation->getInitialPackage()); - if (!$tempLocalRepo->hasPackage($operation->getTargetPackage())) { - $tempLocalRepo->addPackage(clone $operation->getTargetPackage()); - } - break; - - default: - throw new \LogicException('Unknown type: '.$operation->getJobType()); - } - } - - // we have to reload the local repo to handle aliases properly - // but as it is not persisted on disk we use a loader/dumper - // to reload it in memory - $localRepo = new InstalledArrayRepository(array()); - $loader = new ArrayLoader(null, true); - $dumper = new ArrayDumper(); - foreach ($tempLocalRepo->getCanonicalPackages() as $pkg) { - $localRepo->addPackage($loader->load($dumper->dump($pkg))); - } - unset($tempLocalRepo, $loader, $dumper); - - $policy = $this->createPolicy(); - $pool = $this->createPool(); - $installedRepo = $this->createInstalledRepo($localRepo, $platformRepo); - $pool->addRepository($installedRepo, $aliases); - - // creating requirements request without dev requirements - $request = $this->createRequest($this->package, $platformRepo); - $request->updateAll(); - foreach ($this->package->getRequires() as $link) { - $request->install($link->getTarget(), $link->getConstraint()); - } - - // solve deps to see which get removed - $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_DEPENDENCIES_SOLVING, false, $policy, $pool, $installedRepo, $request); - $solver = new Solver($policy, $pool, $installedRepo, $this->io); - $ops = $solver->solve($request, $this->ignorePlatformReqs); - $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::POST_DEPENDENCIES_SOLVING, false, $policy, $pool, $installedRepo, $request, $ops); - - $devPackages = array(); - foreach ($ops as $op) { - if ($op->getJobType() === 'uninstall') { - $devPackages[] = $op->getPackage(); - } - } - - return $devPackages; - } - - /** - * @return OperationInterface[] filtered operations, dev packages are uninstalled and all operations on them ignored - */ - private function filterDevPackageOperations(array $devPackages, array $operations, RepositoryInterface $localRepo) - { - $finalOps = array(); - $packagesToSkip = array(); - foreach ($devPackages as $pkg) { - $packagesToSkip[$pkg->getName()] = true; - if ($installedDevPkg = $localRepo->findPackage($pkg->getName(), '*')) { - if ($installedDevPkg instanceof AliasPackage) { - $finalOps[] = new MarkAliasUninstalledOperation($installedDevPkg, 'non-dev install removing it'); - $installedDevPkg = $installedDevPkg->getAliasOf(); - } - $finalOps[] = new UninstallOperation($installedDevPkg, 'non-dev install removing it'); - } - } - - // skip operations applied on dev packages - foreach ($operations as $op) { - $package = $op->getJobType() === 'update' ? $op->getTargetPackage() : $op->getPackage(); - if (isset($packagesToSkip[$package->getName()])) { - continue; - } - - $finalOps[] = $op; - } - - return $finalOps; - } - - /** - * Workaround: if your packages depend on plugins, we must be sure - * that those are installed / updated first; else it would lead to packages - * being installed multiple times in different folders, when running Composer - * twice. - * - * While this does not fix the root-causes of https://github.com/composer/composer/issues/1147, - * it at least fixes the symptoms and makes usage of composer possible (again) - * in such scenarios. - * - * @param OperationInterface[] $operations - * @return OperationInterface[] reordered operation list - */ - private function movePluginsToFront(array $operations) - { - $pluginsNoDeps = array(); - $pluginsWithDeps = array(); - $pluginRequires = array(); - - foreach (array_reverse($operations, true) as $idx => $op) { - if ($op instanceof InstallOperation) { - $package = $op->getPackage(); - } elseif ($op instanceof UpdateOperation) { - $package = $op->getTargetPackage(); - } else { - continue; - } - - // is this package a plugin? - $isPlugin = $package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer'; - - // is this a plugin or a dependency of a plugin? - if ($isPlugin || count(array_intersect($package->getNames(), $pluginRequires))) { - // get the package's requires, but filter out any platform requirements or 'composer-plugin-api' - $requires = array_filter(array_keys($package->getRequires()), function ($req) { - return $req !== 'composer-plugin-api' && !preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $req); - }); - - // is this a plugin with no meaningful dependencies? - if ($isPlugin && !count($requires)) { - // plugins with no dependencies go to the very front - array_unshift($pluginsNoDeps, $op); - } else { - // capture the requirements for this package so those packages will be moved up as well - $pluginRequires = array_merge($pluginRequires, $requires); - // move the operation to the front - array_unshift($pluginsWithDeps, $op); - } - - unset($operations[$idx]); - } - } - - return array_merge($pluginsNoDeps, $pluginsWithDeps, $operations); - } - - /** - * Removals of packages should be executed before installations in - * case two packages resolve to the same path (due to custom installers) - * - * @param OperationInterface[] $operations - * @return OperationInterface[] reordered operation list - */ - private function moveUninstallsToFront(array $operations) - { - $uninstOps = array(); - foreach ($operations as $idx => $op) { - if ($op instanceof UninstallOperation) { - $uninstOps[] = $op; - unset($operations[$idx]); - } - } - - return array_merge($uninstOps, $operations); - } - - /** - * @return RepositoryInterface - */ - private function createInstalledRepo(RepositoryInterface $localRepo, PlatformRepository $platformRepo) - { - // clone root package to have one in the installed repo that does not require anything - // we don't want it to be uninstallable, but its requirements should not conflict - // with the lock file for example - $installedRootPackage = clone $this->package; - $installedRootPackage->setRequires(array()); - $installedRootPackage->setDevRequires(array()); - - $repos = array( - $localRepo, - new InstalledArrayRepository(array($installedRootPackage)), - $platformRepo, - ); - $installedRepo = new CompositeRepository($repos); - if ($this->additionalInstalledRepository) { - $installedRepo->addRepository($this->additionalInstalledRepository); - } - - return $installedRepo; - } - - /** - * @param RepositoryInterface|null $lockedRepository - * @return Pool - */ - private function createPool(RepositoryInterface $lockedRepository = null) - { - if ($this->update) { - $minimumStability = $this->package->getMinimumStability(); - $stabilityFlags = $this->package->getStabilityFlags(); - - $requires = array_merge($this->package->getRequires(), $this->package->getDevRequires()); - } else { - $minimumStability = $this->locker->getMinimumStability(); - $stabilityFlags = $this->locker->getStabilityFlags(); - - $requires = array(); - foreach ($lockedRepository->getPackages() as $package) { - $constraint = new Constraint('=', $package->getVersion()); - $constraint->setPrettyString($package->getPrettyVersion()); - $requires[$package->getName()] = $constraint; - } - } - - $rootConstraints = array(); - foreach ($requires as $req => $constraint) { - // skip platform requirements from the root package to avoid filtering out existing platform packages - if ($this->ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $req)) { - continue; - } - if ($constraint instanceof Link) { - $rootConstraints[$req] = $constraint->getConstraint(); - } else { - $rootConstraints[$req] = $constraint; - } - } - - return new Pool($minimumStability, $stabilityFlags, $rootConstraints); - } - - /** - * @return DefaultPolicy - */ - private function createPolicy() - { - $preferStable = null; - $preferLowest = null; - if (!$this->update) { - $preferStable = $this->locker->getPreferStable(); - $preferLowest = $this->locker->getPreferLowest(); - } - // old lock file without prefer stable/lowest will return null - // so in this case we use the composer.json info - if (null === $preferStable) { - $preferStable = $this->preferStable || $this->package->getPreferStable(); - } - if (null === $preferLowest) { - $preferLowest = $this->preferLowest; - } - - return new DefaultPolicy($preferStable, $preferLowest); - } - - /** - * @param RootPackageInterface $rootPackage - * @param PlatformRepository $platformRepo - * @return Request - */ - private function createRequest(RootPackageInterface $rootPackage, PlatformRepository $platformRepo) - { - $request = new Request(); - - $constraint = new Constraint('=', $rootPackage->getVersion()); - $constraint->setPrettyString($rootPackage->getPrettyVersion()); - $request->install($rootPackage->getName(), $constraint); - - $fixedPackages = $platformRepo->getPackages(); - if ($this->additionalInstalledRepository) { - $additionalFixedPackages = $this->additionalInstalledRepository->getPackages(); - $fixedPackages = array_merge($fixedPackages, $additionalFixedPackages); - } - - // fix the version of all platform packages + additionally installed packages - // to prevent the solver trying to remove or update those - $provided = $rootPackage->getProvides(); - foreach ($fixedPackages as $package) { - $constraint = new Constraint('=', $package->getVersion()); - $constraint->setPrettyString($package->getPrettyVersion()); - - // skip platform packages that are provided by the root package - if ($package->getRepository() !== $platformRepo - || !isset($provided[$package->getName()]) - || !$provided[$package->getName()]->getConstraint()->matches($constraint) - ) { - $request->fix($package->getName(), $constraint); - } - } - - return $request; - } - - /** - * @param WritableRepositoryInterface $localRepo - * @param Pool $pool - * @param PolicyInterface $policy - * @param array $repositories - * @param RepositoryInterface $installedRepo - * @param RepositoryInterface $lockedRepository - * @param string $task - * @param array|null $operations - * @return array - */ - private function processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, $task, array $operations = null) - { - if ($task === 'force-updates' && null === $operations) { - throw new \InvalidArgumentException('Missing operations argument'); - } - if ($task === 'force-links') { - $operations = array(); - } - - if ($this->update && $this->updateWhitelist) { - $currentPackages = $this->getCurrentPackages($installedRepo); - } - - foreach ($localRepo->getCanonicalPackages() as $package) { - // skip non-dev packages - if (!$package->isDev()) { - continue; - } - - // skip packages that will be updated/uninstalled - foreach ($operations as $operation) { - if (('update' === $operation->getJobType() && $operation->getInitialPackage()->equals($package)) - || ('uninstall' === $operation->getJobType() && $operation->getPackage()->equals($package)) - ) { - continue 2; - } - } - - if ($this->update) { - // skip package if the whitelist is enabled and it is not in it - if ($this->updateWhitelist && !$this->isUpdateable($package)) { - // check if non-updateable packages are out of date compared to the lock file to ensure we don't corrupt it - foreach ($currentPackages as $curPackage) { - if ($curPackage->isDev() && $curPackage->getName() === $package->getName() && $curPackage->getVersion() === $package->getVersion()) { - if ($task === 'force-links') { - $package->setRequires($curPackage->getRequires()); - $package->setConflicts($curPackage->getConflicts()); - $package->setProvides($curPackage->getProvides()); - $package->setReplaces($curPackage->getReplaces()); - } elseif ($task === 'force-updates') { - if (($curPackage->getSourceReference() && $curPackage->getSourceReference() !== $package->getSourceReference()) - || ($curPackage->getDistReference() && $curPackage->getDistReference() !== $package->getDistReference()) - ) { - $operations[] = new UpdateOperation($package, $curPackage); - } - } - - break; - } - } - - continue; - } - - // find similar packages (name/version) in all repositories - $matches = $pool->whatProvides($package->getName(), new Constraint('=', $package->getVersion())); - foreach ($matches as $index => $match) { - // skip local packages - if (!in_array($match->getRepository(), $repositories, true)) { - unset($matches[$index]); - continue; - } - - // skip providers/replacers - if ($match->getName() !== $package->getName()) { - unset($matches[$index]); - continue; - } - - $matches[$index] = $match->getId(); - } - - // select preferred package according to policy rules - if ($matches && $matches = $policy->selectPreferredPackages($pool, array(), $matches)) { - $newPackage = $pool->literalToPackage($matches[0]); - - if ($task === 'force-links' && $newPackage) { - $package->setRequires($newPackage->getRequires()); - $package->setConflicts($newPackage->getConflicts()); - $package->setProvides($newPackage->getProvides()); - $package->setReplaces($newPackage->getReplaces()); - } - - if ( - $task === 'force-updates' - && $newPackage - && ( - ($newPackage->getSourceReference() && $newPackage->getSourceReference() !== $package->getSourceReference()) - || ($newPackage->getDistReference() && $newPackage->getDistReference() !== $package->getDistReference()) - ) - ) { - $operations[] = new UpdateOperation($package, $newPackage); - - continue; - } - } - - if ($task === 'force-updates') { - // force installed package to update to referenced version in root package if it does not match the installed version - $references = $this->package->getReferences(); - - if (isset($references[$package->getName()]) && $references[$package->getName()] !== $package->getSourceReference()) { - // changing the source ref to update to will be handled in the operations loop - $operations[] = new UpdateOperation($package, clone $package); - } - } - } else { - // force update to locked version if it does not match the installed version - foreach ($lockedRepository->findPackages($package->getName()) as $lockedPackage) { - if ($lockedPackage->isDev() && $lockedPackage->getVersion() === $package->getVersion()) { - if ($task === 'force-links') { - $package->setRequires($lockedPackage->getRequires()); - $package->setConflicts($lockedPackage->getConflicts()); - $package->setProvides($lockedPackage->getProvides()); - $package->setReplaces($lockedPackage->getReplaces()); - } elseif ($task === 'force-updates') { - if (($lockedPackage->getSourceReference() && $lockedPackage->getSourceReference() !== $package->getSourceReference()) - || ($lockedPackage->getDistReference() && $lockedPackage->getDistReference() !== $package->getDistReference()) - ) { - $operations[] = new UpdateOperation($package, $lockedPackage); - } - } - - break; - } - } - } - } - - return $operations; - } - - /** - * Loads the most "current" list of packages that are installed meaning from lock ideally or from installed repo as fallback - * @param RepositoryInterface $installedRepo - * @return array - */ - private function getCurrentPackages($installedRepo) - { - if ($this->locker->isLocked()) { - try { - return $this->locker->getLockedRepository(true)->getPackages(); - } catch (\RuntimeException $e) { - // fetch only non-dev packages from lock if doing a dev update fails due to a previously incomplete lock file - return $this->locker->getLockedRepository()->getPackages(); - } - } - - return $installedRepo->getPackages(); - } - - /** - * @return array - */ - private function getRootAliases() - { - if ($this->update) { - $aliases = $this->package->getAliases(); - } else { - $aliases = $this->locker->getAliases(); - } - - $normalizedAliases = array(); - - foreach ($aliases as $alias) { - $normalizedAliases[$alias['package']][$alias['version']] = array( - 'alias' => $alias['alias'], - 'alias_normalized' => $alias['alias_normalized'], - ); - } - - return $normalizedAliases; - } - - /** - * @param Pool $pool - * @param PolicyInterface $policy - * @param WritableRepositoryInterface $localRepo - * @param array $repositories - */ - private function processPackageUrls($pool, $policy, $localRepo, $repositories) - { - if (!$this->update) { - return; - } - - $rootRefs = $this->package->getReferences(); - - foreach ($localRepo->getCanonicalPackages() as $package) { - // find similar packages (name/version) in all repositories - $matches = $pool->whatProvides($package->getName(), new Constraint('=', $package->getVersion())); - foreach ($matches as $index => $match) { - // skip local packages - if (!in_array($match->getRepository(), $repositories, true)) { - unset($matches[$index]); - continue; - } - - // skip providers/replacers - if ($match->getName() !== $package->getName()) { - unset($matches[$index]); - continue; - } - - $matches[$index] = $match->getId(); - } - - // select preferred package according to policy rules - if ($matches && $matches = $policy->selectPreferredPackages($pool, array(), $matches)) { - $newPackage = $pool->literalToPackage($matches[0]); - - // update the dist and source URLs - $sourceUrl = $package->getSourceUrl(); - $newSourceUrl = $newPackage->getSourceUrl(); - $newReference = $newPackage->getSourceReference(); - - if ($package->isDev() && isset($rootRefs[$package->getName()]) && $package->getSourceReference() === $rootRefs[$package->getName()]) { - $newReference = $rootRefs[$package->getName()]; - } - - $this->updatePackageUrl($package, $newSourceUrl, $newPackage->getSourceType(), $newReference, $newPackage->getDistUrl(), $newPackage->getDistType(), $newPackage->getDistSha1Checksum()); - - if ($package instanceof CompletePackage && $newPackage instanceof CompletePackage) { - $package->setAbandoned($newPackage->getReplacementPackage() ?: $newPackage->isAbandoned()); - } - - $package->setDistMirrors($newPackage->getDistMirrors()); - $package->setSourceMirrors($newPackage->getSourceMirrors()); - $package->setTransportOptions($newPackage->getTransportOptions()); - } - } - } - - private function updatePackageUrl(PackageInterface $package, $sourceUrl, $sourceType, $sourceReference, $distUrl, $distType, $distShaSum) - { - $oldSourceRef = $package->getSourceReference(); - - if ($package->getSourceUrl() !== $sourceUrl) { - $package->setSourceType($sourceType); - $package->setSourceUrl($sourceUrl); - $package->setSourceReference($sourceReference); - } - - // only update dist url for github/bitbucket/gitlab dists as they use a combination of dist url + dist reference to install - // but for other urls this is ambiguous and could result in bad outcomes - if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $distUrl)) { - $package->setDistUrl($distUrl); - $package->setDistType($distType); - $package->setDistSha1Checksum($distShaSum); - $this->updateInstallReferences($package, $sourceReference); - } - - if ($this->updateWhitelist && !$this->isUpdateable($package)) { - $this->updateInstallReferences($package, $oldSourceRef); - } - } - - private function updateInstallReferences(PackageInterface $package, $reference) - { - if (!$reference) { - return; - } - - $package->setSourceReference($reference); - - if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $package->getDistUrl())) { - $package->setDistReference($reference); - $package->setDistUrl(preg_replace('{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i', $reference, $package->getDistUrl())); - } elseif ($package->getDistReference()) { // update the dist reference if there was one, but if none was provided ignore it - $package->setDistReference($reference); - } - } - - /** - * @param PlatformRepository $platformRepo - * @param array $aliases - */ - private function aliasPlatformPackages(PlatformRepository $platformRepo, $aliases) - { - foreach ($aliases as $package => $versions) { - foreach ($versions as $version => $alias) { - $packages = $platformRepo->findPackages($package, $version); - foreach ($packages as $package) { - $aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']); - $aliasPackage->setRootPackageAlias(true); - $platformRepo->addPackage($aliasPackage); - } - } - } - } - - /** - * @param PackageInterface $package - * @return bool - */ - private function isUpdateable(PackageInterface $package) - { - if (!$this->updateWhitelist) { - throw new \LogicException('isUpdateable should only be called when a whitelist is present'); - } - - foreach ($this->updateWhitelist as $whiteListedPattern => $void) { - $patternRegexp = BasePackage::packageNameToRegexp($whiteListedPattern); - if (preg_match($patternRegexp, $package->getName())) { - return true; - } - } - - return false; - } - - /** - * @param array $links - * @return array - */ - private function extractPlatformRequirements($links) - { - $platformReqs = array(); - foreach ($links as $link) { - if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) { - $platformReqs[$link->getTarget()] = $link->getPrettyConstraint(); - } - } - - return $platformReqs; - } - - /** - * Adds all dependencies of the update whitelist to the whitelist, too. - * - * Packages which are listed as requirements in the root package will be - * skipped including their dependencies, unless they are listed in the - * update whitelist themselves or $whitelistAllDependencies is true. - * - * @param RepositoryInterface $localOrLockRepo Use the locked repo if available, otherwise installed repo will do - * As we want the most accurate package list to work with, and installed - * repo might be empty but locked repo will always be current. - * @param array $rootRequires An array of links to packages in require of the root package - * @param array $rootDevRequires An array of links to packages in require-dev of the root package - */ - private function whitelistUpdateDependencies($localOrLockRepo, array $rootRequires, array $rootDevRequires) - { - if (!$this->updateWhitelist) { - return; - } - - $rootRequires = array_merge($rootRequires, $rootDevRequires); - - $skipPackages = array(); - if (!$this->whitelistAllDependencies) { - foreach ($rootRequires as $require) { - $skipPackages[$require->getTarget()] = true; - } - } - - $pool = new Pool('dev'); - $pool->addRepository($localOrLockRepo); - - $seen = array(); - - $rootRequiredPackageNames = array_keys($rootRequires); - - foreach ($this->updateWhitelist as $packageName => $void) { - $packageQueue = new \SplQueue; - $nameMatchesRequiredPackage = false; - - $depPackages = $pool->whatProvides($packageName); - $matchesByPattern = array(); - // check if the name is a glob pattern that did not match directly - if (empty($depPackages)) { - // add any installed package matching the whitelisted name/pattern - $whitelistPatternSearchRegexp = BasePackage::packageNameToRegexp($packageName, '^%s$'); - foreach ($localOrLockRepo->search($whitelistPatternSearchRegexp) as $installedPackage) { - $matchesByPattern[] = $pool->whatProvides($installedPackage['name']); - } - - // add root requirements which match the whitelisted name/pattern - $whitelistPatternRegexp = BasePackage::packageNameToRegexp($packageName); - foreach ($rootRequiredPackageNames as $rootRequiredPackageName) { - if (preg_match($whitelistPatternRegexp, $rootRequiredPackageName)) { - $nameMatchesRequiredPackage = true; - break; - } - } - } - - if (!empty($matchesByPattern)) { - $depPackages = array_merge($depPackages, call_user_func_array('array_merge', $matchesByPattern)); - } - - if (count($depPackages) == 0 && !$nameMatchesRequiredPackage && !in_array($packageName, array('nothing', 'lock', 'mirrors'))) { - $this->io->writeError('Package "' . $packageName . '" listed for update is not installed. Ignoring.'); - } - - foreach ($depPackages as $depPackage) { - $packageQueue->enqueue($depPackage); - } - - while (!$packageQueue->isEmpty()) { - $package = $packageQueue->dequeue(); - if (isset($seen[$package->getId()])) { - continue; - } - - $seen[$package->getId()] = true; - $this->updateWhitelist[$package->getName()] = true; - - if (!$this->whitelistDependencies && !$this->whitelistAllDependencies) { - continue; - } - - $requires = $package->getRequires(); - - foreach ($requires as $require) { - $requirePackages = $pool->whatProvides($require->getTarget()); - - foreach ($requirePackages as $requirePackage) { - if (isset($this->updateWhitelist[$requirePackage->getName()])) { - continue; - } - - if (isset($skipPackages[$requirePackage->getName()]) && !preg_match(BasePackage::packageNameToRegexp($packageName), $requirePackage->getName())) { - $this->io->writeError('Dependency "' . $requirePackage->getName() . '" is also a root requirement, but is not explicitly whitelisted. Ignoring.'); - continue; - } - - $packageQueue->enqueue($requirePackage); - } - } - } - } - } - - /** - * Replace local repositories with InstalledArrayRepository instances - * - * This is to prevent any accidental modification of the existing repos on disk - * - * @param RepositoryManager $rm - */ - private function mockLocalRepositories(RepositoryManager $rm) - { - $packages = array(); - foreach ($rm->getLocalRepository()->getPackages() as $package) { - $packages[(string) $package] = clone $package; - } - foreach ($packages as $key => $package) { - if ($package instanceof AliasPackage) { - $alias = (string) $package->getAliasOf(); - $packages[$key] = new AliasPackage($packages[$alias], $package->getVersion(), $package->getPrettyVersion()); - } - } - $rm->setLocalRepository( - new InstalledArrayRepository($packages) - ); - } - - /** - * Create Installer - * - * @param IOInterface $io - * @param Composer $composer - * @return Installer - */ - public static function create(IOInterface $io, Composer $composer) - { - return new static( - $io, - $composer->getConfig(), - $composer->getPackage(), - $composer->getDownloadManager(), - $composer->getRepositoryManager(), - $composer->getLocker(), - $composer->getInstallationManager(), - $composer->getEventDispatcher(), - $composer->getAutoloadGenerator() - ); - } - - /** - * @param RepositoryInterface $additionalInstalledRepository - * @return $this - */ - public function setAdditionalInstalledRepository(RepositoryInterface $additionalInstalledRepository) - { - $this->additionalInstalledRepository = $additionalInstalledRepository; - - return $this; - } - - /** - * Whether to run in drymode or not - * - * @param bool $dryRun - * @return Installer - */ - public function setDryRun($dryRun = true) - { - $this->dryRun = (bool) $dryRun; - - return $this; - } - - /** - * Checks, if this is a dry run (simulation mode). - * - * @return bool - */ - public function isDryRun() - { - return $this->dryRun; - } - - /** - * prefer source installation - * - * @param bool $preferSource - * @return Installer - */ - public function setPreferSource($preferSource = true) - { - $this->preferSource = (bool) $preferSource; - - return $this; - } - - /** - * prefer dist installation - * - * @param bool $preferDist - * @return Installer - */ - public function setPreferDist($preferDist = true) - { - $this->preferDist = (bool) $preferDist; - - return $this; - } - - /** - * Whether or not generated autoloader are optimized - * - * @param bool $optimizeAutoloader - * @return Installer - */ - public function setOptimizeAutoloader($optimizeAutoloader = false) - { - $this->optimizeAutoloader = (bool) $optimizeAutoloader; - if (!$this->optimizeAutoloader) { - // Force classMapAuthoritative off when not optimizing the - // autoloader - $this->setClassMapAuthoritative(false); - } - - return $this; - } - - /** - * Whether or not generated autoloader considers the class map - * authoritative. - * - * @param bool $classMapAuthoritative - * @return Installer - */ - public function setClassMapAuthoritative($classMapAuthoritative = false) - { - $this->classMapAuthoritative = (bool) $classMapAuthoritative; - if ($this->classMapAuthoritative) { - // Force optimizeAutoloader when classmap is authoritative - $this->setOptimizeAutoloader(true); - } - - return $this; - } - - /** - * Whether or not generated autoloader considers APCu caching. - * - * @param bool $apcuAutoloader - * @return Installer - */ - public function setApcuAutoloader($apcuAutoloader = false) - { - $this->apcuAutoloader = (bool) $apcuAutoloader; - - return $this; - } - - /** - * update packages - * - * @param bool $update - * @return Installer - */ - public function setUpdate($update = true) - { - $this->update = (bool) $update; - - return $this; - } - - /** - * enables dev packages - * - * @param bool $devMode - * @return Installer - */ - public function setDevMode($devMode = true) - { - $this->devMode = (bool) $devMode; - - return $this; - } - - /** - * set whether to run autoloader or not - * - * This is disabled implicitly when enabling dryRun - * - * @param bool $dumpAutoloader - * @return Installer - */ - public function setDumpAutoloader($dumpAutoloader = true) - { - $this->dumpAutoloader = (bool) $dumpAutoloader; - - return $this; - } - - /** - * set whether to run scripts or not - * - * This is disabled implicitly when enabling dryRun - * - * @param bool $runScripts - * @return Installer - */ - public function setRunScripts($runScripts = true) - { - $this->runScripts = (bool) $runScripts; - - return $this; - } - - /** - * set the config instance - * - * @param Config $config - * @return Installer - */ - public function setConfig(Config $config) - { - $this->config = $config; - - return $this; - } - - /** - * run in verbose mode - * - * @param bool $verbose - * @return Installer - */ - public function setVerbose($verbose = true) - { - $this->verbose = (bool) $verbose; - - return $this; - } - - /** - * Checks, if running in verbose mode. - * - * @return bool - */ - public function isVerbose() - { - return $this->verbose; - } - - /** - * set ignore Platform Package requirements - * - * @param bool $ignorePlatformReqs - * @return Installer - */ - public function setIgnorePlatformRequirements($ignorePlatformReqs = false) - { - $this->ignorePlatformReqs = (bool) $ignorePlatformReqs; - - return $this; - } - - /** - * restrict the update operation to a few packages, all other packages - * that are already installed will be kept at their current version - * - * @param array $packages - * @return Installer - */ - public function setUpdateWhitelist(array $packages) - { - $this->updateWhitelist = array_flip(array_map('strtolower', $packages)); - - return $this; - } - - /** - * @deprecated use setWhitelistTransitiveDependencies instead - */ - public function setWhitelistDependencies($updateDependencies = true) - { - return $this->setWhitelistTransitiveDependencies($updateDependencies); - } - - /** - * Should dependencies of whitelisted packages (but not direct dependencies) be updated? - * - * This will NOT whitelist any dependencies that are also directly defined - * in the root package. - * - * @param bool $updateTransitiveDependencies - * @return Installer - */ - public function setWhitelistTransitiveDependencies($updateTransitiveDependencies = true) - { - $this->whitelistDependencies = (bool) $updateTransitiveDependencies; - - return $this; - } - - /** - * Should all dependencies of whitelisted packages be updated recursively? - * - * This will whitelist any dependencies of the whitelisted packages, including - * those defined in the root package. - * - * @param bool $updateAllDependencies - * @return Installer - */ - public function setWhitelistAllDependencies($updateAllDependencies = true) - { - $this->whitelistAllDependencies = (bool) $updateAllDependencies; - - return $this; - } - - /** - * Should packages be preferred in a stable version when updating? - * - * @param bool $preferStable - * @return Installer - */ - public function setPreferStable($preferStable = true) - { - $this->preferStable = (bool) $preferStable; - - return $this; - } - - /** - * Should packages be preferred in a lowest version when updating? - * - * @param bool $preferLowest - * @return Installer - */ - public function setPreferLowest($preferLowest = true) - { - $this->preferLowest = (bool) $preferLowest; - - return $this; - } - - /** - * Should the lock file be updated when updating? - * - * This is disabled implicitly when enabling dryRun - * - * @param bool $writeLock - * @return Installer - */ - public function setWriteLock($writeLock = true) - { - $this->writeLock = (bool) $writeLock; - - return $this; - } - - /** - * Should the operations (package install, update and removal) be executed on disk? - * - * This is disabled implicitly when enabling dryRun - * - * @param bool $executeOperations - * @return Installer - */ - public function setExecuteOperations($executeOperations = true) - { - $this->executeOperations = (bool) $executeOperations; - - return $this; - } - - /** - * Should suggestions be skipped? - * - * @param bool $skipSuggest - * @return Installer - */ - public function setSkipSuggest($skipSuggest = true) - { - $this->skipSuggest = (bool) $skipSuggest; - - return $this; - } - - /** - * Disables plugins. - * - * Call this if you want to ensure that third-party code never gets - * executed. The default is to automatically install, and execute - * custom third-party installers. - * - * @return Installer - */ - public function disablePlugins() - { - $this->installationManager->disablePlugins(); - - return $this; - } - - /** - * @param SuggestedPackagesReporter $suggestedPackagesReporter - * @return Installer - */ - public function setSuggestedPackagesReporter(SuggestedPackagesReporter $suggestedPackagesReporter) - { - $this->suggestedPackagesReporter = $suggestedPackagesReporter; - - return $this; - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php b/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php deleted file mode 100644 index 0a7b971..0000000 --- a/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php +++ /dev/null @@ -1,214 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\IO\IOInterface; -use Composer\Package\PackageInterface; -use Composer\Util\Filesystem; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; -use Composer\Util\Silencer; - -/** - * Utility to handle installation of package "bin"/binaries - * - * @author Jordi Boggiano - * @author Konstantin Kudryashov - * @author Helmut Hummel - */ -class BinaryInstaller -{ - protected $binDir; - protected $binCompat; - protected $io; - protected $filesystem; - - /** - * @param IOInterface $io - * @param string $binDir - * @param string $binCompat - * @param Filesystem $filesystem - */ - public function __construct(IOInterface $io, $binDir, $binCompat, Filesystem $filesystem = null) - { - $this->binDir = $binDir; - $this->binCompat = $binCompat; - $this->io = $io; - $this->filesystem = $filesystem ?: new Filesystem(); - } - - public function installBinaries(PackageInterface $package, $installPath, $warnOnOverwrite = true) - { - $binaries = $this->getBinaries($package); - if (!$binaries) { - return; - } - foreach ($binaries as $bin) { - $binPath = $installPath.'/'.$bin; - if (!file_exists($binPath)) { - $this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': file not found in package'); - continue; - } - - // in case a custom installer returned a relative path for the - // $package, we can now safely turn it into a absolute path (as we - // already checked the binary's existence). The following helpers - // will require absolute paths to work properly. - $binPath = realpath($binPath); - - $this->initializeBinDir(); - $link = $this->binDir.'/'.basename($bin); - if (file_exists($link)) { - if (is_link($link)) { - // likely leftover from a previous install, make sure - // that the target is still executable in case this - // is a fresh install of the vendor. - Silencer::call('chmod', $link, 0777 & ~umask()); - } - if ($warnOnOverwrite) { - $this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': name conflicts with an existing file'); - } - continue; - } - - if ($this->binCompat === "auto") { - if (Platform::isWindows()) { - $this->installFullBinaries($binPath, $link, $bin, $package); - } else { - $this->installSymlinkBinaries($binPath, $link); - } - } elseif ($this->binCompat === "full") { - $this->installFullBinaries($binPath, $link, $bin, $package); - } - Silencer::call('chmod', $link, 0777 & ~umask()); - } - } - - public function removeBinaries(PackageInterface $package) - { - $this->initializeBinDir(); - - $binaries = $this->getBinaries($package); - if (!$binaries) { - return; - } - foreach ($binaries as $bin) { - $link = $this->binDir.'/'.basename($bin); - if (is_link($link) || file_exists($link)) { - $this->filesystem->unlink($link); - } - if (file_exists($link.'.bat')) { - $this->filesystem->unlink($link.'.bat'); - } - } - - // attempt removing the bin dir in case it is left empty - if (is_dir($this->binDir) && $this->filesystem->isDirEmpty($this->binDir)) { - Silencer::call('rmdir', $this->binDir); - } - } - - public static function determineBinaryCaller($bin) - { - if ('.bat' === substr($bin, -4) || '.exe' === substr($bin, -4)) { - return 'call'; - } - - $handle = fopen($bin, 'r'); - $line = fgets($handle); - fclose($handle); - if (preg_match('{^#!/(?:usr/bin/env )?(?:[^/]+/)*(.+)$}m', $line, $match)) { - return trim($match[1]); - } - - return 'php'; - } - - protected function getBinaries(PackageInterface $package) - { - return $package->getBinaries(); - } - - protected function installFullBinaries($binPath, $link, $bin, PackageInterface $package) - { - // add unixy support for cygwin and similar environments - if ('.bat' !== substr($binPath, -4)) { - $this->installUnixyProxyBinaries($binPath, $link); - @chmod($link, 0777 & ~umask()); - $link .= '.bat'; - if (file_exists($link)) { - $this->io->writeError(' Skipped installation of bin '.$bin.'.bat proxy for package '.$package->getName().': a .bat proxy was already installed'); - } - } - if (!file_exists($link)) { - file_put_contents($link, $this->generateWindowsProxyCode($binPath, $link)); - } - } - - protected function installSymlinkBinaries($binPath, $link) - { - if (!$this->filesystem->relativeSymlink($binPath, $link)) { - $this->installUnixyProxyBinaries($binPath, $link); - } - } - - protected function installUnixyProxyBinaries($binPath, $link) - { - file_put_contents($link, $this->generateUnixyProxyCode($binPath, $link)); - } - - protected function initializeBinDir() - { - $this->filesystem->ensureDirectoryExists($this->binDir); - $this->binDir = realpath($this->binDir); - } - - protected function generateWindowsProxyCode($bin, $link) - { - $binPath = $this->filesystem->findShortestPath($link, $bin); - $caller = self::determineBinaryCaller($bin); - - return "@ECHO OFF\r\n". - "setlocal DISABLEDELAYEDEXPANSION\r\n". - "SET BIN_TARGET=%~dp0/".trim(ProcessExecutor::escape($binPath), '"\'')."\r\n". - "{$caller} \"%BIN_TARGET%\" %*\r\n"; - } - - protected function generateUnixyProxyCode($bin, $link) - { - $binPath = $this->filesystem->findShortestPath($link, $bin); - - $binDir = ProcessExecutor::escape(dirname($binPath)); - $binFile = basename($binPath); - - $proxyCode = << /dev/null; cd $binDir && pwd) - -if [ -d /proc/cygdrive ]; then - case \$(which php) in - \$(readlink -n /proc/cygdrive)/*) - # We are in Cygwin using Windows php, so the path must be translated - dir=\$(cygpath -m "\$dir"); - ;; - esac -fi - -"\${dir}/$binFile" "\$@" - -PROXY; - - return $proxyCode; - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php b/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php deleted file mode 100644 index 2749ffa..0000000 --- a/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Package\PackageInterface; - -/** - * Interface for the package installation manager that handle binary installation. - * - * @author Jordi Boggiano - */ -interface BinaryPresenceInterface -{ - /** - * Make sure binaries are installed for a given package. - * - * @param PackageInterface $package package instance - */ - public function ensureBinariesPresence(PackageInterface $package); -} diff --git a/vendor/composer/composer/src/Composer/Installer/InstallationManager.php b/vendor/composer/composer/src/Composer/Installer/InstallationManager.php deleted file mode 100644 index 9f50b59..0000000 --- a/vendor/composer/composer/src/Composer/Installer/InstallationManager.php +++ /dev/null @@ -1,326 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\IO\IOInterface; -use Composer\Package\PackageInterface; -use Composer\Package\AliasPackage; -use Composer\Repository\RepositoryInterface; -use Composer\Repository\InstalledRepositoryInterface; -use Composer\DependencyResolver\Operation\OperationInterface; -use Composer\DependencyResolver\Operation\InstallOperation; -use Composer\DependencyResolver\Operation\UpdateOperation; -use Composer\DependencyResolver\Operation\UninstallOperation; -use Composer\DependencyResolver\Operation\MarkAliasInstalledOperation; -use Composer\DependencyResolver\Operation\MarkAliasUninstalledOperation; -use Composer\Util\StreamContextFactory; - -/** - * Package operation manager. - * - * @author Konstantin Kudryashov - * @author Jordi Boggiano - * @author Nils Adermann - */ -class InstallationManager -{ - private $installers = array(); - private $cache = array(); - private $notifiablePackages = array(); - - public function reset() - { - $this->notifiablePackages = array(); - } - - /** - * Adds installer - * - * @param InstallerInterface $installer installer instance - */ - public function addInstaller(InstallerInterface $installer) - { - array_unshift($this->installers, $installer); - $this->cache = array(); - } - - /** - * Removes installer - * - * @param InstallerInterface $installer installer instance - */ - public function removeInstaller(InstallerInterface $installer) - { - if (false !== ($key = array_search($installer, $this->installers, true))) { - array_splice($this->installers, $key, 1); - $this->cache = array(); - } - } - - /** - * Disables plugins. - * - * We prevent any plugins from being instantiated by simply - * deactivating the installer for them. This ensure that no third-party - * code is ever executed. - */ - public function disablePlugins() - { - foreach ($this->installers as $i => $installer) { - if (!$installer instanceof PluginInstaller) { - continue; - } - - unset($this->installers[$i]); - } - } - - /** - * Returns installer for a specific package type. - * - * @param string $type package type - * - * @throws \InvalidArgumentException if installer for provided type is not registered - * @return InstallerInterface - */ - public function getInstaller($type) - { - $type = strtolower($type); - - if (isset($this->cache[$type])) { - return $this->cache[$type]; - } - - foreach ($this->installers as $installer) { - if ($installer->supports($type)) { - return $this->cache[$type] = $installer; - } - } - - throw new \InvalidArgumentException('Unknown installer type: '.$type); - } - - /** - * Checks whether provided package is installed in one of the registered installers. - * - * @param InstalledRepositoryInterface $repo repository in which to check - * @param PackageInterface $package package instance - * - * @return bool - */ - public function isPackageInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) - { - if ($package instanceof AliasPackage) { - return $repo->hasPackage($package) && $this->isPackageInstalled($repo, $package->getAliasOf()); - } - - return $this->getInstaller($package->getType())->isInstalled($repo, $package); - } - - /** - * Install binary for the given package. - * If the installer associated to this package doesn't handle that function, it'll do nothing. - * - * @param PackageInterface $package Package instance - */ - public function ensureBinariesPresence(PackageInterface $package) - { - try { - $installer = $this->getInstaller($package->getType()); - } catch (\InvalidArgumentException $e) { - // no installer found for the current package type (@see `getInstaller()`) - return; - } - - // if the given installer support installing binaries - if ($installer instanceof BinaryPresenceInterface) { - $installer->ensureBinariesPresence($package); - } - } - - /** - * Executes solver operation. - * - * @param RepositoryInterface $repo repository in which to check - * @param OperationInterface $operation operation instance - */ - public function execute(RepositoryInterface $repo, OperationInterface $operation) - { - $method = $operation->getJobType(); - $this->$method($repo, $operation); - } - - /** - * Executes install operation. - * - * @param RepositoryInterface $repo repository in which to check - * @param InstallOperation $operation operation instance - */ - public function install(RepositoryInterface $repo, InstallOperation $operation) - { - $package = $operation->getPackage(); - $installer = $this->getInstaller($package->getType()); - $installer->install($repo, $package); - $this->markForNotification($package); - } - - /** - * Executes update operation. - * - * @param RepositoryInterface $repo repository in which to check - * @param UpdateOperation $operation operation instance - */ - public function update(RepositoryInterface $repo, UpdateOperation $operation) - { - $initial = $operation->getInitialPackage(); - $target = $operation->getTargetPackage(); - - $initialType = $initial->getType(); - $targetType = $target->getType(); - - if ($initialType === $targetType) { - $installer = $this->getInstaller($initialType); - $installer->update($repo, $initial, $target); - $this->markForNotification($target); - } else { - $this->getInstaller($initialType)->uninstall($repo, $initial); - $this->getInstaller($targetType)->install($repo, $target); - } - } - - /** - * Uninstalls package. - * - * @param RepositoryInterface $repo repository in which to check - * @param UninstallOperation $operation operation instance - */ - public function uninstall(RepositoryInterface $repo, UninstallOperation $operation) - { - $package = $operation->getPackage(); - $installer = $this->getInstaller($package->getType()); - $installer->uninstall($repo, $package); - } - - /** - * Executes markAliasInstalled operation. - * - * @param RepositoryInterface $repo repository in which to check - * @param MarkAliasInstalledOperation $operation operation instance - */ - public function markAliasInstalled(RepositoryInterface $repo, MarkAliasInstalledOperation $operation) - { - $package = $operation->getPackage(); - - if (!$repo->hasPackage($package)) { - $repo->addPackage(clone $package); - } - } - - /** - * Executes markAlias operation. - * - * @param RepositoryInterface $repo repository in which to check - * @param MarkAliasUninstalledOperation $operation operation instance - */ - public function markAliasUninstalled(RepositoryInterface $repo, MarkAliasUninstalledOperation $operation) - { - $package = $operation->getPackage(); - - $repo->removePackage($package); - } - - /** - * Returns the installation path of a package - * - * @param PackageInterface $package - * @return string path - */ - public function getInstallPath(PackageInterface $package) - { - $installer = $this->getInstaller($package->getType()); - - return $installer->getInstallPath($package); - } - - public function notifyInstalls(IOInterface $io) - { - foreach ($this->notifiablePackages as $repoUrl => $packages) { - $repositoryName = parse_url($repoUrl, PHP_URL_HOST); - if ($io->hasAuthentication($repositoryName)) { - $auth = $io->getAuthentication($repositoryName); - $authStr = base64_encode($auth['username'] . ':' . $auth['password']); - $authHeader = 'Authorization: Basic '.$authStr; - } - - // non-batch API, deprecated - if (strpos($repoUrl, '%package%')) { - foreach ($packages as $package) { - $url = str_replace('%package%', $package->getPrettyName(), $repoUrl); - - $params = array( - 'version' => $package->getPrettyVersion(), - 'version_normalized' => $package->getVersion(), - ); - $opts = array('http' => - array( - 'method' => 'POST', - 'header' => array('Content-type: application/x-www-form-urlencoded'), - 'content' => http_build_query($params, '', '&'), - 'timeout' => 3, - ), - ); - if (isset($authHeader)) { - $opts['http']['header'][] = $authHeader; - } - - $context = StreamContextFactory::getContext($url, $opts); - @file_get_contents($url, false, $context); - } - - continue; - } - - $postData = array('downloads' => array()); - foreach ($packages as $package) { - $postData['downloads'][] = array( - 'name' => $package->getPrettyName(), - 'version' => $package->getVersion(), - ); - } - - $opts = array('http' => - array( - 'method' => 'POST', - 'header' => array('Content-Type: application/json'), - 'content' => json_encode($postData), - 'timeout' => 6, - ), - ); - if (isset($authHeader)) { - $opts['http']['header'][] = $authHeader; - } - - $context = StreamContextFactory::getContext($repoUrl, $opts); - @file_get_contents($repoUrl, false, $context); - } - - $this->reset(); - } - - private function markForNotification(PackageInterface $package) - { - if ($package->getNotificationUrl()) { - $this->notifiablePackages[$package->getNotificationUrl()][$package->getName()] = $package; - } - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php b/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php deleted file mode 100644 index 87153bd..0000000 --- a/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php +++ /dev/null @@ -1,161 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Composer; -use Composer\DependencyResolver\PolicyInterface; -use Composer\DependencyResolver\Operation\OperationInterface; -use Composer\DependencyResolver\Pool; -use Composer\DependencyResolver\Request; -use Composer\EventDispatcher\Event; -use Composer\IO\IOInterface; -use Composer\Repository\CompositeRepository; - -/** - * An event for all installer. - * - * @author François Pluchino - */ -class InstallerEvent extends Event -{ - /** - * @var Composer - */ - private $composer; - - /** - * @var IOInterface - */ - private $io; - - /** - * @var bool - */ - private $devMode; - - /** - * @var PolicyInterface - */ - private $policy; - - /** - * @var Pool - */ - private $pool; - - /** - * @var CompositeRepository - */ - private $installedRepo; - - /** - * @var Request - */ - private $request; - - /** - * @var OperationInterface[] - */ - private $operations; - - /** - * Constructor. - * - * @param string $eventName - * @param Composer $composer - * @param IOInterface $io - * @param bool $devMode - * @param PolicyInterface $policy - * @param Pool $pool - * @param CompositeRepository $installedRepo - * @param Request $request - * @param OperationInterface[] $operations - */ - public function __construct($eventName, Composer $composer, IOInterface $io, $devMode, PolicyInterface $policy, Pool $pool, CompositeRepository $installedRepo, Request $request, array $operations = array()) - { - parent::__construct($eventName); - - $this->composer = $composer; - $this->io = $io; - $this->devMode = $devMode; - $this->policy = $policy; - $this->pool = $pool; - $this->installedRepo = $installedRepo; - $this->request = $request; - $this->operations = $operations; - } - - /** - * @return Composer - */ - public function getComposer() - { - return $this->composer; - } - - /** - * @return IOInterface - */ - public function getIO() - { - return $this->io; - } - - /** - * @return bool - */ - public function isDevMode() - { - return $this->devMode; - } - - /** - * @return PolicyInterface - */ - public function getPolicy() - { - return $this->policy; - } - - /** - * @return Pool - */ - public function getPool() - { - return $this->pool; - } - - /** - * @return CompositeRepository - */ - public function getInstalledRepo() - { - return $this->installedRepo; - } - - /** - * @return Request - */ - public function getRequest() - { - return $this->request; - } - - /** - * @return OperationInterface[] - */ - public function getOperations() - { - return $this->operations; - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php b/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php deleted file mode 100644 index e05c925..0000000 --- a/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php +++ /dev/null @@ -1,43 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -/** - * The Installer Events. - * - * @author François Pluchino - */ -class InstallerEvents -{ - /** - * The PRE_DEPENDENCIES_SOLVING event occurs as a installer begins - * resolve operations. - * - * The event listener method receives a - * Composer\Installer\InstallerEvent instance. - * - * @var string - */ - const PRE_DEPENDENCIES_SOLVING = 'pre-dependencies-solving'; - - /** - * The POST_DEPENDENCIES_SOLVING event occurs as a installer after - * resolve operations. - * - * The event listener method receives a - * Composer\Installer\InstallerEvent instance. - * - * @var string - */ - const POST_DEPENDENCIES_SOLVING = 'post-dependencies-solving'; -} diff --git a/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php b/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php deleted file mode 100644 index e64dfad..0000000 --- a/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php +++ /dev/null @@ -1,79 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Package\PackageInterface; -use Composer\Repository\InstalledRepositoryInterface; -use InvalidArgumentException; - -/** - * Interface for the package installation manager. - * - * @author Konstantin Kudryashov - * @author Jordi Boggiano - */ -interface InstallerInterface -{ - /** - * Decides if the installer supports the given type - * - * @param string $packageType - * @return bool - */ - public function supports($packageType); - - /** - * Checks that provided package is installed. - * - * @param InstalledRepositoryInterface $repo repository in which to check - * @param PackageInterface $package package instance - * - * @return bool - */ - public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package); - - /** - * Installs specific package. - * - * @param InstalledRepositoryInterface $repo repository in which to check - * @param PackageInterface $package package instance - */ - public function install(InstalledRepositoryInterface $repo, PackageInterface $package); - - /** - * Updates specific package. - * - * @param InstalledRepositoryInterface $repo repository in which to check - * @param PackageInterface $initial already installed package version - * @param PackageInterface $target updated version - * - * @throws InvalidArgumentException if $initial package is not installed - */ - public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target); - - /** - * Uninstalls specific package. - * - * @param InstalledRepositoryInterface $repo repository in which to check - * @param PackageInterface $package package instance - */ - public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package); - - /** - * Returns the installation path of a package - * - * @param PackageInterface $package - * @return string path - */ - public function getInstallPath(PackageInterface $package); -} diff --git a/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php b/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php deleted file mode 100644 index 34fbbbe..0000000 --- a/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php +++ /dev/null @@ -1,232 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Composer; -use Composer\IO\IOInterface; -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Package\PackageInterface; -use Composer\Util\Filesystem; -use Composer\Util\Silencer; -use Composer\Util\Platform; - -/** - * Package installation manager. - * - * @author Jordi Boggiano - * @author Konstantin Kudryashov - */ -class LibraryInstaller implements InstallerInterface, BinaryPresenceInterface -{ - protected $composer; - protected $vendorDir; - protected $binDir; - protected $downloadManager; - protected $io; - protected $type; - protected $filesystem; - protected $binCompat; - protected $binaryInstaller; - - /** - * Initializes library installer. - * - * @param IOInterface $io - * @param Composer $composer - * @param string $type - * @param Filesystem $filesystem - * @param BinaryInstaller $binaryInstaller - */ - public function __construct(IOInterface $io, Composer $composer, $type = 'library', Filesystem $filesystem = null, BinaryInstaller $binaryInstaller = null) - { - $this->composer = $composer; - $this->downloadManager = $composer->getDownloadManager(); - $this->io = $io; - $this->type = $type; - - $this->filesystem = $filesystem ?: new Filesystem(); - $this->vendorDir = rtrim($composer->getConfig()->get('vendor-dir'), '/'); - $this->binaryInstaller = $binaryInstaller ?: new BinaryInstaller($this->io, rtrim($composer->getConfig()->get('bin-dir'), '/'), $composer->getConfig()->get('bin-compat'), $this->filesystem); - } - - /** - * {@inheritDoc} - */ - public function supports($packageType) - { - return $packageType === $this->type || null === $this->type; - } - - /** - * {@inheritDoc} - */ - public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) - { - if (!$repo->hasPackage($package)) { - return false; - } - - $installPath = $this->getInstallPath($package); - - if (is_readable($installPath)) { - return true; - } - - return (Platform::isWindows() && $this->filesystem->isJunction($installPath)) || is_link($installPath); - } - - /** - * {@inheritDoc} - */ - public function install(InstalledRepositoryInterface $repo, PackageInterface $package) - { - $this->initializeVendorDir(); - $downloadPath = $this->getInstallPath($package); - - // remove the binaries if it appears the package files are missing - if (!is_readable($downloadPath) && $repo->hasPackage($package)) { - $this->binaryInstaller->removeBinaries($package); - } - - $this->installCode($package); - $this->binaryInstaller->installBinaries($package, $this->getInstallPath($package)); - if (!$repo->hasPackage($package)) { - $repo->addPackage(clone $package); - } - } - - /** - * {@inheritDoc} - */ - public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) - { - if (!$repo->hasPackage($initial)) { - throw new \InvalidArgumentException('Package is not installed: '.$initial); - } - - $this->initializeVendorDir(); - - $this->binaryInstaller->removeBinaries($initial); - $this->updateCode($initial, $target); - $this->binaryInstaller->installBinaries($target, $this->getInstallPath($target)); - $repo->removePackage($initial); - if (!$repo->hasPackage($target)) { - $repo->addPackage(clone $target); - } - } - - /** - * {@inheritDoc} - */ - public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) - { - if (!$repo->hasPackage($package)) { - throw new \InvalidArgumentException('Package is not installed: '.$package); - } - - $this->removeCode($package); - $this->binaryInstaller->removeBinaries($package); - $repo->removePackage($package); - - $downloadPath = $this->getPackageBasePath($package); - if (strpos($package->getName(), '/')) { - $packageVendorDir = dirname($downloadPath); - if (is_dir($packageVendorDir) && $this->filesystem->isDirEmpty($packageVendorDir)) { - Silencer::call('rmdir', $packageVendorDir); - } - } - } - - /** - * {@inheritDoc} - */ - public function getInstallPath(PackageInterface $package) - { - $this->initializeVendorDir(); - - $basePath = ($this->vendorDir ? $this->vendorDir.'/' : '') . $package->getPrettyName(); - $targetDir = $package->getTargetDir(); - - return $basePath . ($targetDir ? '/'.$targetDir : ''); - } - - /** - * Make sure binaries are installed for a given package. - * - * @param PackageInterface $package Package instance - */ - public function ensureBinariesPresence(PackageInterface $package) - { - $this->binaryInstaller->installBinaries($package, $this->getInstallPath($package), false); - } - - /** - * Returns the base path of the package without target-dir path - * - * It is used for BC as getInstallPath tends to be overridden by - * installer plugins but not getPackageBasePath - * - * @param PackageInterface $package - * @return string - */ - protected function getPackageBasePath(PackageInterface $package) - { - $installPath = $this->getInstallPath($package); - $targetDir = $package->getTargetDir(); - - if ($targetDir) { - return preg_replace('{/*'.str_replace('/', '/+', preg_quote($targetDir)).'/?$}', '', $installPath); - } - - return $installPath; - } - - protected function installCode(PackageInterface $package) - { - $downloadPath = $this->getInstallPath($package); - $this->downloadManager->download($package, $downloadPath); - } - - protected function updateCode(PackageInterface $initial, PackageInterface $target) - { - $initialDownloadPath = $this->getInstallPath($initial); - $targetDownloadPath = $this->getInstallPath($target); - if ($targetDownloadPath !== $initialDownloadPath) { - // if the target and initial dirs intersect, we force a remove + install - // to avoid the rename wiping the target dir as part of the initial dir cleanup - if (substr($initialDownloadPath, 0, strlen($targetDownloadPath)) === $targetDownloadPath - || substr($targetDownloadPath, 0, strlen($initialDownloadPath)) === $initialDownloadPath - ) { - $this->removeCode($initial); - $this->installCode($target); - - return; - } - - $this->filesystem->rename($initialDownloadPath, $targetDownloadPath); - } - $this->downloadManager->update($initial, $target, $targetDownloadPath); - } - - protected function removeCode(PackageInterface $package) - { - $downloadPath = $this->getPackageBasePath($package); - $this->downloadManager->remove($package, $downloadPath); - } - - protected function initializeVendorDir() - { - $this->filesystem->ensureDirectoryExists($this->vendorDir); - $this->vendorDir = realpath($this->vendorDir); - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php b/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php deleted file mode 100644 index e1f31c1..0000000 --- a/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php +++ /dev/null @@ -1,100 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Package\PackageInterface; -use Composer\Package\Version\VersionParser; -use Composer\IO\IOInterface; - -/** - * Metapackage installation manager. - * - * @author Martin Hasoň - */ -class MetapackageInstaller implements InstallerInterface -{ - private $io; - - public function __construct(IOInterface $io) - { - $this->io = $io; - } - - /** - * {@inheritDoc} - */ - public function supports($packageType) - { - return $packageType === 'metapackage'; - } - - /** - * {@inheritDoc} - */ - public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) - { - return $repo->hasPackage($package); - } - - /** - * {@inheritDoc} - */ - public function install(InstalledRepositoryInterface $repo, PackageInterface $package) - { - $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); - - $repo->addPackage(clone $package); - } - - /** - * {@inheritDoc} - */ - public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) - { - if (!$repo->hasPackage($initial)) { - throw new \InvalidArgumentException('Package is not installed: '.$initial); - } - - $name = $target->getName(); - $from = $initial->getFullPrettyVersion(); - $to = $target->getFullPrettyVersion(); - $actionName = VersionParser::isUpgrade($initial->getVersion(), $target->getVersion()) ? 'Updating' : 'Downgrading'; - $this->io->writeError(" - " . $actionName . " " . $name . " (" . $from . " => " . $to . ")"); - - $repo->removePackage($initial); - $repo->addPackage(clone $target); - } - - /** - * {@inheritDoc} - */ - public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) - { - if (!$repo->hasPackage($package)) { - throw new \InvalidArgumentException('Package is not installed: '.$package); - } - - $this->io->writeError(" - Removing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); - - $repo->removePackage($package); - } - - /** - * {@inheritDoc} - */ - public function getInstallPath(PackageInterface $package) - { - return ''; - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php b/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php deleted file mode 100644 index 72cf17d..0000000 --- a/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php +++ /dev/null @@ -1,88 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Package\PackageInterface; - -/** - * Does not install anything but marks packages installed in the repo - * - * Useful for dry runs - * - * @author Jordi Boggiano - */ -class NoopInstaller implements InstallerInterface -{ - /** - * {@inheritDoc} - */ - public function supports($packageType) - { - return true; - } - - /** - * {@inheritDoc} - */ - public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) - { - return $repo->hasPackage($package); - } - - /** - * {@inheritDoc} - */ - public function install(InstalledRepositoryInterface $repo, PackageInterface $package) - { - if (!$repo->hasPackage($package)) { - $repo->addPackage(clone $package); - } - } - - /** - * {@inheritDoc} - */ - public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) - { - if (!$repo->hasPackage($initial)) { - throw new \InvalidArgumentException('Package is not installed: '.$initial); - } - - $repo->removePackage($initial); - if (!$repo->hasPackage($target)) { - $repo->addPackage(clone $target); - } - } - - /** - * {@inheritDoc} - */ - public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) - { - if (!$repo->hasPackage($package)) { - throw new \InvalidArgumentException('Package is not installed: '.$package); - } - $repo->removePackage($package); - } - - /** - * {@inheritDoc} - */ - public function getInstallPath(PackageInterface $package) - { - $targetDir = $package->getTargetDir(); - - return $package->getPrettyName() . ($targetDir ? '/'.$targetDir : ''); - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/PackageEvent.php b/vendor/composer/composer/src/Composer/Installer/PackageEvent.php deleted file mode 100644 index f5cf0ed..0000000 --- a/vendor/composer/composer/src/Composer/Installer/PackageEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Composer; -use Composer\IO\IOInterface; -use Composer\DependencyResolver\Operation\OperationInterface; -use Composer\DependencyResolver\PolicyInterface; -use Composer\DependencyResolver\Pool; -use Composer\DependencyResolver\Request; -use Composer\Repository\CompositeRepository; - -/** - * The Package Event. - * - * @author Jordi Boggiano - */ -class PackageEvent extends InstallerEvent -{ - /** - * @var OperationInterface The package instance - */ - private $operation; - - /** - * Constructor. - * - * @param string $eventName - * @param Composer $composer - * @param IOInterface $io - * @param bool $devMode - * @param PolicyInterface $policy - * @param Pool $pool - * @param CompositeRepository $installedRepo - * @param Request $request - * @param OperationInterface[] $operations - * @param OperationInterface $operation - */ - public function __construct($eventName, Composer $composer, IOInterface $io, $devMode, PolicyInterface $policy, Pool $pool, CompositeRepository $installedRepo, Request $request, array $operations, OperationInterface $operation) - { - parent::__construct($eventName, $composer, $io, $devMode, $policy, $pool, $installedRepo, $request, $operations); - - $this->operation = $operation; - } - - /** - * Returns the package instance. - * - * @return OperationInterface - */ - public function getOperation() - { - return $this->operation; - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/PackageEvents.php b/vendor/composer/composer/src/Composer/Installer/PackageEvents.php deleted file mode 100644 index 1b48e4f..0000000 --- a/vendor/composer/composer/src/Composer/Installer/PackageEvents.php +++ /dev/null @@ -1,75 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -/** - * Package Events. - * - * @author Jordi Boggiano - */ -class PackageEvents -{ - /** - * The PRE_PACKAGE_INSTALL event occurs before a package is installed. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @var string - */ - const PRE_PACKAGE_INSTALL = 'pre-package-install'; - - /** - * The POST_PACKAGE_INSTALL event occurs after a package is installed. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @var string - */ - const POST_PACKAGE_INSTALL = 'post-package-install'; - - /** - * The PRE_PACKAGE_UPDATE event occurs before a package is updated. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @var string - */ - const PRE_PACKAGE_UPDATE = 'pre-package-update'; - - /** - * The POST_PACKAGE_UPDATE event occurs after a package is updated. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @var string - */ - const POST_PACKAGE_UPDATE = 'post-package-update'; - - /** - * The PRE_PACKAGE_UNINSTALL event occurs before a package has been uninstalled. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @var string - */ - const PRE_PACKAGE_UNINSTALL = 'pre-package-uninstall'; - - /** - * The POST_PACKAGE_UNINSTALL event occurs after a package has been uninstalled. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @var string - */ - const POST_PACKAGE_UNINSTALL = 'post-package-uninstall'; -} diff --git a/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php b/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php deleted file mode 100644 index f0d6783..0000000 --- a/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php +++ /dev/null @@ -1,144 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\IO\IOInterface; -use Composer\Package\PackageInterface; -use Composer\Util\Filesystem; -use Composer\Util\ProcessExecutor; - -/** - * Utility to handle installation of package "bin"/binaries for PEAR packages - * - * @author Jordi Boggiano - */ -class PearBinaryInstaller extends BinaryInstaller -{ - private $installer; - private $vendorDir; - - /** - * @param IOInterface $io - * @param string $binDir - * @param string $vendorDir - * @param string $binCompat - * @param Filesystem $filesystem - * @param PearInstaller $installer - */ - public function __construct(IOInterface $io, $binDir, $vendorDir, $binCompat, Filesystem $filesystem, PearInstaller $installer) - { - parent::__construct($io, $binDir, $binCompat, $filesystem); - $this->installer = $installer; - $this->vendorDir = $vendorDir; - } - - protected function getBinaries(PackageInterface $package) - { - $binariesPath = $this->installer->getInstallPath($package) . '/bin/'; - $binaries = array(); - if (file_exists($binariesPath)) { - foreach (new \FilesystemIterator($binariesPath, \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO) as $fileName => $value) { - if (!$value->isDir()) { - $binaries[] = 'bin/'.$fileName; - } - } - } - - return $binaries; - } - - protected function initializeBinDir() - { - parent::initializeBinDir(); - file_put_contents($this->binDir.'/composer-php', $this->generateUnixyPhpProxyCode()); - @chmod($this->binDir.'/composer-php', 0777 & ~umask()); - file_put_contents($this->binDir.'/composer-php.bat', $this->generateWindowsPhpProxyCode()); - @chmod($this->binDir.'/composer-php.bat', 0777 & ~umask()); - } - - protected function generateWindowsProxyCode($bin, $link) - { - $binPath = $this->filesystem->findShortestPath($link, $bin); - if ('.bat' === substr($bin, -4)) { - $caller = 'call'; - } else { - $handle = fopen($bin, 'r'); - $line = fgets($handle); - fclose($handle); - if (preg_match('{^#!/(?:usr/bin/env )?(?:[^/]+/)*(.+)$}m', $line, $match)) { - $caller = trim($match[1]); - } else { - $caller = 'php'; - } - - if ($caller === 'php') { - return "@echo off\r\n". - "pushd .\r\n". - "cd %~dp0\r\n". - "set PHP_PROXY=%CD%\\composer-php.bat\r\n". - "cd ".ProcessExecutor::escape(dirname($binPath))."\r\n". - "set BIN_TARGET=%CD%\\".basename($binPath)."\r\n". - "popd\r\n". - "%PHP_PROXY% \"%BIN_TARGET%\" %*\r\n"; - } - } - - return "@echo off\r\n". - "pushd .\r\n". - "cd %~dp0\r\n". - "cd ".ProcessExecutor::escape(dirname($binPath))."\r\n". - "set BIN_TARGET=%CD%\\".basename($binPath)."\r\n". - "popd\r\n". - $caller." \"%BIN_TARGET%\" %*\r\n"; - } - - private function generateWindowsPhpProxyCode() - { - $binToVendor = $this->filesystem->findShortestPath($this->binDir, $this->vendorDir, true); - - return - "@echo off\r\n" . - "setlocal enabledelayedexpansion\r\n" . - "set BIN_DIR=%~dp0\r\n" . - "set VENDOR_DIR=%BIN_DIR%\\".$binToVendor."\r\n" . - "set DIRS=.\r\n" . - "FOR /D %%V IN (%VENDOR_DIR%\\*) DO (\r\n" . - " FOR /D %%P IN (%%V\\*) DO (\r\n" . - " set DIRS=!DIRS!;%%~fP\r\n" . - " )\r\n" . - ")\r\n" . - "php.exe -d include_path=!DIRS! %*\r\n"; - } - - private function generateUnixyPhpProxyCode() - { - $binToVendor = $this->filesystem->findShortestPath($this->binDir, $this->vendorDir, true); - - return - "#!/usr/bin/env sh\n". - "SRC_DIR=`pwd`\n". - "BIN_DIR=`dirname $0`\n". - "VENDOR_DIR=\$BIN_DIR/".escapeshellarg($binToVendor)."\n". - "DIRS=\"\"\n". - "for vendor in \$VENDOR_DIR/*; do\n". - " if [ -d \"\$vendor\" ]; then\n". - " for package in \$vendor/*; do\n". - " if [ -d \"\$package\" ]; then\n". - " DIRS=\"\${DIRS}:\${package}\"\n". - " fi\n". - " done\n". - " fi\n". - "done\n". - "php -d include_path=\".\$DIRS\" $@\n"; - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/PearInstaller.php b/vendor/composer/composer/src/Composer/Installer/PearInstaller.php deleted file mode 100644 index b4aa465..0000000 --- a/vendor/composer/composer/src/Composer/Installer/PearInstaller.php +++ /dev/null @@ -1,84 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\IO\IOInterface; -use Composer\Composer; -use Composer\Downloader\PearPackageExtractor; -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Package\PackageInterface; -use Composer\Util\Platform; -use Composer\Util\Filesystem; - -/** - * Package installation manager. - * - * @author Jordi Boggiano - * @author Konstantin Kudryashov - */ -class PearInstaller extends LibraryInstaller -{ - /** - * Initializes library installer. - * - * @param IOInterface $io io instance - * @param Composer $composer - * @param string $type package type that this installer handles - */ - public function __construct(IOInterface $io, Composer $composer, $type = 'pear-library') - { - $filesystem = new Filesystem(); - $binaryInstaller = new PearBinaryInstaller($io, rtrim($composer->getConfig()->get('bin-dir'), '/'), rtrim($composer->getConfig()->get('vendor-dir'), '/'), $composer->getConfig()->get('bin-compat'), $filesystem, $this); - - parent::__construct($io, $composer, $type, $filesystem, $binaryInstaller); - } - - /** - * {@inheritDoc} - */ - public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) - { - $this->uninstall($repo, $initial); - $this->install($repo, $target); - } - - protected function installCode(PackageInterface $package) - { - parent::installCode($package); - - $isWindows = Platform::isWindows(); - $php_bin = $this->binDir . ($isWindows ? '/composer-php.bat' : '/composer-php'); - - if (!$isWindows) { - $php_bin = '/usr/bin/env ' . $php_bin; - } - - $installPath = $this->getInstallPath($package); - $vars = array( - 'os' => $isWindows ? 'windows' : 'linux', - 'php_bin' => $php_bin, - 'pear_php' => $installPath, - 'php_dir' => $installPath, - 'bin_dir' => $installPath . '/bin', - 'data_dir' => $installPath . '/data', - 'version' => $package->getPrettyVersion(), - ); - - $packageArchive = $this->getInstallPath($package).'/'.pathinfo($package->getDistUrl(), PATHINFO_BASENAME); - $pearExtractor = new PearPackageExtractor($packageArchive); - $pearExtractor->extractTo($this->getInstallPath($package), array('php' => '/', 'script' => '/bin', 'data' => '/data'), $vars); - - $this->io->writeError(' Cleaning up', true, IOInterface::VERBOSE); - $this->filesystem->unlink($packageArchive); - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php b/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php deleted file mode 100644 index c400ca4..0000000 --- a/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php +++ /dev/null @@ -1,84 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Composer; -use Composer\IO\IOInterface; -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Package\PackageInterface; - -/** - * Installer for plugin packages - * - * @author Jordi Boggiano - * @author Nils Adermann - */ -class PluginInstaller extends LibraryInstaller -{ - private $installationManager; - - /** - * Initializes Plugin installer. - * - * @param IOInterface $io - * @param Composer $composer - */ - public function __construct(IOInterface $io, Composer $composer) - { - parent::__construct($io, $composer, 'composer-plugin'); - $this->installationManager = $composer->getInstallationManager(); - } - - /** - * {@inheritDoc} - */ - public function supports($packageType) - { - return $packageType === 'composer-plugin' || $packageType === 'composer-installer'; - } - - /** - * {@inheritDoc} - */ - public function install(InstalledRepositoryInterface $repo, PackageInterface $package) - { - $extra = $package->getExtra(); - if (empty($extra['class'])) { - throw new \UnexpectedValueException('Error while installing '.$package->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); - } - - parent::install($repo, $package); - try { - $this->composer->getPluginManager()->registerPackage($package, true); - } catch (\Exception $e) { - // Rollback installation - $this->io->writeError('Plugin installation failed, rolling back'); - parent::uninstall($repo, $package); - throw $e; - } - } - - /** - * {@inheritDoc} - */ - public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) - { - $extra = $target->getExtra(); - if (empty($extra['class'])) { - throw new \UnexpectedValueException('Error while installing '.$target->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); - } - - parent::update($repo, $initial, $target); - $this->composer->getPluginManager()->registerPackage($target, true); - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php b/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php deleted file mode 100644 index c79238b..0000000 --- a/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php +++ /dev/null @@ -1,99 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\Package\PackageInterface; -use Composer\Downloader\DownloadManager; -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Util\Filesystem; - -/** - * Project Installer is used to install a single package into a directory as - * root project. - * - * @author Benjamin Eberlei - */ -class ProjectInstaller implements InstallerInterface -{ - private $installPath; - private $downloadManager; - private $filesystem; - - public function __construct($installPath, DownloadManager $dm) - { - $this->installPath = rtrim(strtr($installPath, '\\', '/'), '/').'/'; - $this->downloadManager = $dm; - $this->filesystem = new Filesystem; - } - - /** - * Decides if the installer supports the given type - * - * @param string $packageType - * @return bool - */ - public function supports($packageType) - { - return true; - } - - /** - * {@inheritDoc} - */ - public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) - { - return false; - } - - /** - * {@inheritDoc} - */ - public function install(InstalledRepositoryInterface $repo, PackageInterface $package) - { - $installPath = $this->installPath; - if (file_exists($installPath) && !$this->filesystem->isDirEmpty($installPath)) { - throw new \InvalidArgumentException("Project directory $installPath is not empty."); - } - if (!is_dir($installPath)) { - mkdir($installPath, 0777, true); - } - $this->downloadManager->download($package, $installPath); - } - - /** - * {@inheritDoc} - */ - public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) - { - throw new \InvalidArgumentException("not supported"); - } - - /** - * {@inheritDoc} - */ - public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) - { - throw new \InvalidArgumentException("not supported"); - } - - /** - * Returns the installation path of a package - * - * @param PackageInterface $package - * @return string path - */ - public function getInstallPath(PackageInterface $package) - { - return $this->installPath; - } -} diff --git a/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php b/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php deleted file mode 100644 index 25788e5..0000000 --- a/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php +++ /dev/null @@ -1,151 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Installer; - -use Composer\IO\IOInterface; -use Composer\Package\PackageInterface; -use Composer\Repository\RepositoryInterface; -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * Add suggested packages from different places to output them in the end. - * - * @author Haralan Dobrev - */ -class SuggestedPackagesReporter -{ - /** - * @var array - */ - protected $suggestedPackages = array(); - - /** - * @var IOInterface - */ - private $io; - - public function __construct(IOInterface $io) - { - $this->io = $io; - } - - /** - * @return array Suggested packages with source, target and reason keys. - */ - public function getPackages() - { - return $this->suggestedPackages; - } - - /** - * Add suggested packages to be listed after install - * - * Could be used to add suggested packages both from the installer - * or from CreateProjectCommand. - * - * @param string $source Source package which made the suggestion - * @param string $target Target package to be suggested - * @param string $reason Reason the target package to be suggested - * @return SuggestedPackagesReporter - */ - public function addPackage($source, $target, $reason) - { - $this->suggestedPackages[] = array( - 'source' => $source, - 'target' => $target, - 'reason' => $reason, - ); - - return $this; - } - - /** - * Add all suggestions from a package. - * - * @param PackageInterface $package - * @return SuggestedPackagesReporter - */ - public function addSuggestionsFromPackage(PackageInterface $package) - { - $source = $package->getPrettyName(); - foreach ($package->getSuggests() as $target => $reason) { - $this->addPackage( - $source, - $target, - $reason - ); - } - - return $this; - } - - /** - * Output suggested packages. - * Do not list the ones already installed if installed repository provided. - * - * @param RepositoryInterface $installedRepo Installed packages - * @return SuggestedPackagesReporter - */ - public function output(RepositoryInterface $installedRepo = null) - { - $suggestedPackages = $this->getPackages(); - $installedPackages = array(); - if (null !== $installedRepo && ! empty($suggestedPackages)) { - foreach ($installedRepo->getPackages() as $package) { - $installedPackages = array_merge( - $installedPackages, - $package->getNames() - ); - } - } - - foreach ($suggestedPackages as $suggestion) { - if (in_array($suggestion['target'], $installedPackages)) { - continue; - } - - $this->io->writeError(sprintf( - '%s suggests installing %s%s', - $suggestion['source'], - $this->escapeOutput($suggestion['target']), - $this->escapeOutput('' !== $suggestion['reason'] ? ' ('.$suggestion['reason'].')' : '') - )); - } - - return $this; - } - - /** - * @param string $string - * @return string - */ - private function escapeOutput($string) - { - return OutputFormatter::escape( - $this->removeControlCharacters($string) - ); - } - - /** - * @param string $string - * @return string - */ - private function removeControlCharacters($string) - { - return preg_replace( - '/[[:cntrl:]]/', - '', - str_replace("\n", ' ', $string) - ); - } -} diff --git a/vendor/composer/composer/src/Composer/Json/JsonFile.php b/vendor/composer/composer/src/Composer/Json/JsonFile.php deleted file mode 100644 index f2d9500..0000000 --- a/vendor/composer/composer/src/Composer/Json/JsonFile.php +++ /dev/null @@ -1,306 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Json; - -use JsonSchema\Validator; -use Seld\JsonLint\JsonParser; -use Seld\JsonLint\ParsingException; -use Composer\Util\RemoteFilesystem; -use Composer\IO\IOInterface; -use Composer\Downloader\TransportException; - -/** - * Reads/writes json files. - * - * @author Konstantin Kudryashiv - * @author Jordi Boggiano - */ -class JsonFile -{ - const LAX_SCHEMA = 1; - const STRICT_SCHEMA = 2; - - const JSON_UNESCAPED_SLASHES = 64; - const JSON_PRETTY_PRINT = 128; - const JSON_UNESCAPED_UNICODE = 256; - - const COMPOSER_SCHEMA_PATH = '/../../../res/composer-schema.json'; - - private $path; - private $rfs; - private $io; - - /** - * Initializes json file reader/parser. - * - * @param string $path path to a lockfile - * @param RemoteFilesystem $rfs required for loading http/https json files - * @param IOInterface $io - * @throws \InvalidArgumentException - */ - public function __construct($path, RemoteFilesystem $rfs = null, IOInterface $io = null) - { - $this->path = $path; - - if (null === $rfs && preg_match('{^https?://}i', $path)) { - throw new \InvalidArgumentException('http urls require a RemoteFilesystem instance to be passed'); - } - $this->rfs = $rfs; - $this->io = $io; - } - - /** - * @return string - */ - public function getPath() - { - return $this->path; - } - - /** - * Checks whether json file exists. - * - * @return bool - */ - public function exists() - { - return is_file($this->path); - } - - /** - * Reads json file. - * - * @throws \RuntimeException - * @return mixed - */ - public function read() - { - try { - if ($this->rfs) { - $json = $this->rfs->getContents($this->path, $this->path, false); - } else { - if ($this->io && $this->io->isDebug()) { - $this->io->writeError('Reading ' . $this->path); - } - $json = file_get_contents($this->path); - } - } catch (TransportException $e) { - throw new \RuntimeException($e->getMessage(), 0, $e); - } catch (\Exception $e) { - throw new \RuntimeException('Could not read '.$this->path."\n\n".$e->getMessage()); - } - - return static::parseJson($json, $this->path); - } - - /** - * Writes json file. - * - * @param array $hash writes hash into json file - * @param int $options json_encode options (defaults to JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - * @throws \UnexpectedValueException|\Exception - */ - public function write(array $hash, $options = 448) - { - $dir = dirname($this->path); - if (!is_dir($dir)) { - if (file_exists($dir)) { - throw new \UnexpectedValueException( - $dir.' exists and is not a directory.' - ); - } - if (!@mkdir($dir, 0777, true)) { - throw new \UnexpectedValueException( - $dir.' does not exist and could not be created.' - ); - } - } - - $retries = 3; - while ($retries--) { - try { - file_put_contents($this->path, static::encode($hash, $options). ($options & self::JSON_PRETTY_PRINT ? "\n" : '')); - break; - } catch (\Exception $e) { - if ($retries) { - usleep(500000); - continue; - } - - throw $e; - } - } - } - - /** - * Validates the schema of the current json file according to composer-schema.json rules - * - * @param int $schema a JsonFile::*_SCHEMA constant - * @param string|null $schemaFile a path to the schema file - * @throws JsonValidationException - * @return bool true on success - */ - public function validateSchema($schema = self::STRICT_SCHEMA, $schemaFile = null) - { - $content = file_get_contents($this->path); - $data = json_decode($content); - - if (null === $data && 'null' !== $content) { - self::validateSyntax($content, $this->path); - } - - if (null === $schemaFile) { - $schemaFile = __DIR__ . self::COMPOSER_SCHEMA_PATH; - } - - // Prepend with file:// only when not using a special schema already (e.g. in the phar) - if (false === strpos($schemaFile, '://')) { - $schemaFile = 'file://' . $schemaFile; - } - - $schemaData = (object) array('$ref' => $schemaFile); - - if ($schema === self::LAX_SCHEMA) { - $schemaData->additionalProperties = true; - $schemaData->required = array(); - } - - $validator = new Validator(); - $validator->check($data, $schemaData); - - // TODO add more validation like check version constraints and such, perhaps build that into the arrayloader? - - if (!$validator->isValid()) { - $errors = array(); - foreach ((array) $validator->getErrors() as $error) { - $errors[] = ($error['property'] ? $error['property'].' : ' : '').$error['message']; - } - throw new JsonValidationException('"'.$this->path.'" does not match the expected JSON schema', $errors); - } - - return true; - } - - /** - * Encodes an array into (optionally pretty-printed) JSON - * - * @param mixed $data Data to encode into a formatted JSON string - * @param int $options json_encode options (defaults to JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - * @return string Encoded json - */ - public static function encode($data, $options = 448) - { - if (PHP_VERSION_ID >= 50400) { - $json = json_encode($data, $options); - if (false === $json) { - self::throwEncodeError(json_last_error()); - } - - // compact brackets to follow recent php versions - if (PHP_VERSION_ID < 50428 || (PHP_VERSION_ID >= 50500 && PHP_VERSION_ID < 50512) || (defined('JSON_C_VERSION') && version_compare(phpversion('json'), '1.3.6', '<'))) { - $json = preg_replace('/\[\s+\]/', '[]', $json); - $json = preg_replace('/\{\s+\}/', '{}', $json); - } - - return $json; - } - - $json = json_encode($data); - if (false === $json) { - self::throwEncodeError(json_last_error()); - } - - $prettyPrint = (bool) ($options & self::JSON_PRETTY_PRINT); - $unescapeUnicode = (bool) ($options & self::JSON_UNESCAPED_UNICODE); - $unescapeSlashes = (bool) ($options & self::JSON_UNESCAPED_SLASHES); - - if (!$prettyPrint && !$unescapeUnicode && !$unescapeSlashes) { - return $json; - } - - return JsonFormatter::format($json, $unescapeUnicode, $unescapeSlashes); - } - - /** - * Throws an exception according to a given code with a customized message - * - * @param int $code return code of json_last_error function - * @throws \RuntimeException - */ - private static function throwEncodeError($code) - { - switch ($code) { - case JSON_ERROR_DEPTH: - $msg = 'Maximum stack depth exceeded'; - break; - case JSON_ERROR_STATE_MISMATCH: - $msg = 'Underflow or the modes mismatch'; - break; - case JSON_ERROR_CTRL_CHAR: - $msg = 'Unexpected control character found'; - break; - case JSON_ERROR_UTF8: - $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded'; - break; - default: - $msg = 'Unknown error'; - } - - throw new \RuntimeException('JSON encoding failed: '.$msg); - } - - /** - * Parses json string and returns hash. - * - * @param string $json json string - * @param string $file the json file - * - * @return mixed - */ - public static function parseJson($json, $file = null) - { - if (null === $json) { - return; - } - $data = json_decode($json, true); - if (null === $data && JSON_ERROR_NONE !== json_last_error()) { - self::validateSyntax($json, $file); - } - - return $data; - } - - /** - * Validates the syntax of a JSON string - * - * @param string $json - * @param string $file - * @throws \UnexpectedValueException - * @throws ParsingException - * @return bool true on success - */ - protected static function validateSyntax($json, $file = null) - { - $parser = new JsonParser(); - $result = $parser->lint($json); - if (null === $result) { - if (defined('JSON_ERROR_UTF8') && JSON_ERROR_UTF8 === json_last_error()) { - throw new \UnexpectedValueException('"'.$file.'" is not UTF-8, could not parse as JSON'); - } - - return true; - } - - throw new ParsingException('"'.$file.'" does not contain valid JSON'."\n".$result->getMessage(), $result->getDetails()); - } -} diff --git a/vendor/composer/composer/src/Composer/Json/JsonFormatter.php b/vendor/composer/composer/src/Composer/Json/JsonFormatter.php deleted file mode 100644 index 44acaff..0000000 --- a/vendor/composer/composer/src/Composer/Json/JsonFormatter.php +++ /dev/null @@ -1,134 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Json; - -/** - * Formats json strings used for php < 5.4 because the json_encode doesn't - * supports the flags JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE - * in these versions - * - * @author Konstantin Kudryashiv - * @author Jordi Boggiano - */ -class JsonFormatter -{ - /** - * This code is based on the function found at: - * http://recursive-design.com/blog/2008/03/11/format-json-with-php/ - * - * Originally licensed under MIT by Dave Perrett - * - * - * @param string $json - * @param bool $unescapeUnicode Un escape unicode - * @param bool $unescapeSlashes Un escape slashes - * @return string - */ - public static function format($json, $unescapeUnicode, $unescapeSlashes) - { - $result = ''; - $pos = 0; - $strLen = strlen($json); - $indentStr = ' '; - $newLine = "\n"; - $outOfQuotes = true; - $buffer = ''; - $noescape = true; - - for ($i = 0; $i < $strLen; $i++) { - // Grab the next character in the string - $char = substr($json, $i, 1); - - // Are we inside a quoted string? - if ('"' === $char && $noescape) { - $outOfQuotes = !$outOfQuotes; - } - - if (!$outOfQuotes) { - $buffer .= $char; - $noescape = '\\' === $char ? !$noescape : true; - continue; - } elseif ('' !== $buffer) { - if ($unescapeSlashes) { - $buffer = str_replace('\\/', '/', $buffer); - } - - if ($unescapeUnicode && function_exists('mb_convert_encoding')) { - // https://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-cha - $buffer = preg_replace_callback('/(\\\\+)u([0-9a-f]{4})/i', function ($match) { - $l = strlen($match[1]); - - if ($l % 2) { - $code = hexdec($match[2]); - // 0xD800..0xDFFF denotes UTF-16 surrogate pair which won't be unescaped - // see https://github.com/composer/composer/issues/7510 - if (0xD800 <= $code && 0xDFFF >= $code) { - return $match[0]; - } - - return str_repeat('\\', $l - 1) . mb_convert_encoding( - pack('H*', $match[2]), - 'UTF-8', - 'UCS-2BE' - ); - } - - return $match[0]; - }, $buffer); - } - - $result .= $buffer.$char; - $buffer = ''; - continue; - } - - if (':' === $char) { - // Add a space after the : character - $char .= ' '; - } elseif ('}' === $char || ']' === $char) { - $pos--; - $prevChar = substr($json, $i - 1, 1); - - if ('{' !== $prevChar && '[' !== $prevChar) { - // If this character is the end of an element, - // output a new line and indent the next line - $result .= $newLine; - for ($j = 0; $j < $pos; $j++) { - $result .= $indentStr; - } - } else { - // Collapse empty {} and [] - $result = rtrim($result); - } - } - - $result .= $char; - - // If the last character was the beginning of an element, - // output a new line and indent the next line - if (',' === $char || '{' === $char || '[' === $char) { - $result .= $newLine; - - if ('{' === $char || '[' === $char) { - $pos++; - } - - for ($j = 0; $j < $pos; $j++) { - $result .= $indentStr; - } - } - } - - return $result; - } -} diff --git a/vendor/composer/composer/src/Composer/Json/JsonManipulator.php b/vendor/composer/composer/src/Composer/Json/JsonManipulator.php deleted file mode 100644 index e64a56f..0000000 --- a/vendor/composer/composer/src/Composer/Json/JsonManipulator.php +++ /dev/null @@ -1,522 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Json; - -use Composer\Repository\PlatformRepository; - -/** - * @author Jordi Boggiano - */ -class JsonManipulator -{ - private static $DEFINES = '(?(DEFINE) - (? -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? ) - (? true | false | null ) - (? " ([^"\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9A-Fa-f]{4} )* " ) - (? \[ (?: (?&json) \s* (?: , (?&json) \s* )* )? \s* \] ) - (? \s* (?&string) \s* : (?&json) \s* ) - (? \{ (?: (?&pair) (?: , (?&pair) )* )? \s* \} ) - (? \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) ) - )'; - - private $contents; - private $newline; - private $indent; - - public function __construct($contents) - { - $contents = trim($contents); - if ($contents === '') { - $contents = '{}'; - } - if (!$this->pregMatch('#^\{(.*)\}$#s', $contents)) { - throw new \InvalidArgumentException('The json file must be an object ({})'); - } - $this->newline = false !== strpos($contents, "\r\n") ? "\r\n" : "\n"; - $this->contents = $contents === '{}' ? '{' . $this->newline . '}' : $contents; - $this->detectIndenting(); - } - - public function getContents() - { - return $this->contents . $this->newline; - } - - public function addLink($type, $package, $constraint, $sortPackages = false) - { - $decoded = JsonFile::parseJson($this->contents); - - // no link of that type yet - if (!isset($decoded[$type])) { - return $this->addMainKey($type, array($package => $constraint)); - } - - $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. - '(?P'.preg_quote(JsonFile::encode($type)).'\s*:\s*)(?P(?&json))(?P.*)}sx'; - if (!$this->pregMatch($regex, $this->contents, $matches)) { - return false; - } - - $links = $matches['value']; - - // try to find existing link - $packageRegex = str_replace('/', '\\\\?/', preg_quote($package)); - $regex = '{'.self::$DEFINES.'"(?P'.$packageRegex.')"(\s*:\s*)(?&string)}ix'; - if ($this->pregMatch($regex, $links, $packageMatches)) { - // update existing link - $existingPackage = $packageMatches['package']; - $packageRegex = str_replace('/', '\\\\?/', preg_quote($existingPackage)); - $links = preg_replace_callback('{'.self::$DEFINES.'"'.$packageRegex.'"(?P\s*:\s*)(?&string)}ix', function ($m) use ($existingPackage, $constraint) { - return JsonFile::encode(str_replace('\\/', '/', $existingPackage)) . $m['separator'] . '"' . $constraint . '"'; - }, $links); - } else { - if ($this->pregMatch('#^\s*\{\s*\S+.*?(\s*\}\s*)$#s', $links, $match)) { - // link missing but non empty links - $links = preg_replace( - '{'.preg_quote($match[1]).'$}', - // addcslashes is used to double up backslashes/$ since preg_replace resolves them as back references otherwise, see #1588 - addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $match[1], '\\$'), - $links - ); - } else { - // links empty - $links = '{' . $this->newline . - $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $this->newline . - $this->indent . '}'; - } - } - - if (true === $sortPackages) { - $requirements = json_decode($links, true); - $this->sortPackages($requirements); - $links = $this->format($requirements); - } - - $this->contents = $matches['start'] . $matches['property'] . $links . $matches['end']; - - return true; - } - - /** - * Sorts packages by importance (platform packages first, then PHP dependencies) and alphabetically. - * - * @link https://getcomposer.org/doc/02-libraries.md#platform-packages - * - * @param array $packages - */ - private function sortPackages(array &$packages = array()) - { - $prefix = function ($requirement) { - if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $requirement)) { - return preg_replace( - array( - '/^php/', - '/^hhvm/', - '/^ext/', - '/^lib/', - '/^\D/', - ), - array( - '0-$0', - '1-$0', - '2-$0', - '3-$0', - '4-$0', - ), - $requirement - ); - } - - return '5-'.$requirement; - }; - - uksort($packages, function ($a, $b) use ($prefix) { - return strnatcmp($prefix($a), $prefix($b)); - }); - } - - public function addRepository($name, $config) - { - return $this->addSubNode('repositories', $name, $config); - } - - public function removeRepository($name) - { - return $this->removeSubNode('repositories', $name); - } - - public function addConfigSetting($name, $value) - { - return $this->addSubNode('config', $name, $value); - } - - public function removeConfigSetting($name) - { - return $this->removeSubNode('config', $name); - } - - public function addProperty($name, $value) - { - if (substr($name, 0, 6) === 'extra.') { - return $this->addSubNode('extra', substr($name, 6), $value); - } - - if (substr($name, 0, 8) === 'scripts.') { - return $this->addSubNode('scripts', substr($name, 8), $value); - } - - return $this->addMainKey($name, $value); - } - - public function removeProperty($name) - { - if (substr($name, 0, 6) === 'extra.') { - return $this->removeSubNode('extra', substr($name, 6)); - } - - if (substr($name, 0, 8) === 'scripts.') { - return $this->removeSubNode('scripts', substr($name, 8)); - } - - return $this->removeMainKey($name); - } - - public function addSubNode($mainNode, $name, $value) - { - $decoded = JsonFile::parseJson($this->contents); - - $subName = null; - if (in_array($mainNode, array('config', 'extra', 'scripts')) && false !== strpos($name, '.')) { - list($name, $subName) = explode('.', $name, 2); - } - - // no main node yet - if (!isset($decoded[$mainNode])) { - if ($subName !== null) { - $this->addMainKey($mainNode, array($name => array($subName => $value))); - } else { - $this->addMainKey($mainNode, array($name => $value)); - } - - return true; - } - - // main node content not match-able - $nodeRegex = '{'.self::$DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. - preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; - - try { - if (!$this->pregMatch($nodeRegex, $this->contents, $match)) { - return false; - } - } catch (\RuntimeException $e) { - if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { - return false; - } - throw $e; - } - - $children = $match['content']; - // invalid match due to un-regexable content, abort - if (!@json_decode($children)) { - return false; - } - - $that = $this; - - // child exists - $childRegex = '{'.self::$DEFINES.'(?P"'.preg_quote($name).'"\s*:\s*)(?P(?&json))(?P,?)}x'; - if ($this->pregMatch($childRegex, $children, $matches)) { - $children = preg_replace_callback($childRegex, function ($matches) use ($subName, $value, $that) { - if ($subName !== null) { - $curVal = json_decode($matches['content'], true); - if (!is_array($curVal)) { - $curVal = array(); - } - $curVal[$subName] = $value; - $value = $curVal; - } - - return $matches['start'] . $that->format($value, 1) . $matches['end']; - }, $children); - } else { - $this->pregMatch('#^{ \s*? (?P\S+.*?)? (?P\s*) }$#sx', $children, $match); - - $whitespace = ''; - if (!empty($match['trailingspace'])) { - $whitespace = $match['trailingspace']; - } - - if (!empty($match['content'])) { - if ($subName !== null) { - $value = array($subName => $value); - } - - // child missing but non empty children - $children = preg_replace( - '#'.$whitespace.'}$#', - addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}', '\\$'), - $children - ); - } else { - if ($subName !== null) { - $value = array($subName => $value); - } - - // children present but empty - $children = '{' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}'; - } - } - - $this->contents = preg_replace_callback($nodeRegex, function ($m) use ($children) { - return $m['start'] . $children . $m['end']; - }, $this->contents); - - return true; - } - - public function removeSubNode($mainNode, $name) - { - $decoded = JsonFile::parseJson($this->contents); - - // no node or empty node - if (empty($decoded[$mainNode])) { - return true; - } - - // no node content match-able - $nodeRegex = '{'.self::$DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. - preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; - try { - if (!$this->pregMatch($nodeRegex, $this->contents, $match)) { - return false; - } - } catch (\RuntimeException $e) { - if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { - return false; - } - throw $e; - } - - $children = $match['content']; - - // invalid match due to un-regexable content, abort - if (!@json_decode($children, true)) { - return false; - } - - $subName = null; - if (in_array($mainNode, array('config', 'extra', 'scripts')) && false !== strpos($name, '.')) { - list($name, $subName) = explode('.', $name, 2); - } - - // no node to remove - if (!isset($decoded[$mainNode][$name]) || ($subName && !isset($decoded[$mainNode][$name][$subName]))) { - return true; - } - - // try and find a match for the subkey - $keyRegex = str_replace('/', '\\\\?/', preg_quote($name)); - if ($this->pregMatch('{"'.$keyRegex.'"\s*:}i', $children)) { - // find best match for the value of "name" - if (preg_match_all('{'.self::$DEFINES.'"'.$keyRegex.'"\s*:\s*(?:(?&json))}x', $children, $matches)) { - $bestMatch = ''; - foreach ($matches[0] as $match) { - if (strlen($bestMatch) < strlen($match)) { - $bestMatch = $match; - } - } - $childrenClean = preg_replace('{,\s*'.preg_quote($bestMatch).'}i', '', $children, -1, $count); - if (1 !== $count) { - $childrenClean = preg_replace('{'.preg_quote($bestMatch).'\s*,?\s*}i', '', $childrenClean, -1, $count); - if (1 !== $count) { - return false; - } - } - } - } else { - $childrenClean = $children; - } - - // no child data left, $name was the only key in - $this->pregMatch('#^{ \s*? (?P\S+.*?)? (?P\s*) }$#sx', $childrenClean, $match); - if (empty($match['content'])) { - $newline = $this->newline; - $indent = $this->indent; - - $this->contents = preg_replace_callback($nodeRegex, function ($matches) use ($indent, $newline) { - return $matches['start'] . '{' . $newline . $indent . '}' . $matches['end']; - }, $this->contents); - - // we have a subname, so we restore the rest of $name - if ($subName !== null) { - $curVal = json_decode($children, true); - unset($curVal[$name][$subName]); - $this->addSubNode($mainNode, $name, $curVal[$name]); - } - - return true; - } - - $that = $this; - $this->contents = preg_replace_callback($nodeRegex, function ($matches) use ($that, $name, $subName, $childrenClean) { - if ($subName !== null) { - $curVal = json_decode($matches['content'], true); - unset($curVal[$name][$subName]); - $childrenClean = $that->format($curVal, 0); - } - - return $matches['start'] . $childrenClean . $matches['end']; - }, $this->contents); - - return true; - } - - public function addMainKey($key, $content) - { - $decoded = JsonFile::parseJson($this->contents); - $content = $this->format($content); - - // key exists already - $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. - '(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))(?P.*)}sx'; - if (isset($decoded[$key]) && $this->pregMatch($regex, $this->contents, $matches)) { - // invalid match due to un-regexable content, abort - if (!@json_decode('{'.$matches['key'].'}')) { - return false; - } - - $this->contents = $matches['start'] . JsonFile::encode($key).': '.$content . $matches['end']; - - return true; - } - - // append at the end of the file and keep whitespace - if ($this->pregMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) { - $this->contents = preg_replace( - '#'.$match[1].'\}$#', - addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\$'), - $this->contents - ); - - return true; - } - - // append at the end of the file - $this->contents = preg_replace( - '#\}$#', - addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\$'), - $this->contents - ); - - return true; - } - - public function removeMainKey($key) - { - $decoded = JsonFile::parseJson($this->contents); - - if (!array_key_exists($key, $decoded)) { - return true; - } - - // key exists already - $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. - '(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))\s*,?\s*(?P.*)}sx'; - if ($this->pregMatch($regex, $this->contents, $matches)) { - // invalid match due to un-regexable content, abort - if (!@json_decode('{'.$matches['removal'].'}')) { - return false; - } - - // check that we are not leaving a dangling comma on the previous line if the last line was removed - if (preg_match('#,\s*$#', $matches['start']) && preg_match('#^\}$#', $matches['end'])) { - $matches['start'] = rtrim(preg_replace('#,(\s*)$#', '$1', $matches['start']), $this->indent); - } - - $this->contents = $matches['start'] . $matches['end']; - if (preg_match('#^\{\s*\}\s*$#', $this->contents)) { - $this->contents = "{\n}"; - } - - return true; - } - - return false; - } - - public function format($data, $depth = 0) - { - if (is_array($data)) { - reset($data); - - if (is_numeric(key($data))) { - foreach ($data as $key => $val) { - $data[$key] = $this->format($val, $depth + 1); - } - - return '['.implode(', ', $data).']'; - } - - $out = '{' . $this->newline; - $elems = array(); - foreach ($data as $key => $val) { - $elems[] = str_repeat($this->indent, $depth + 2) . JsonFile::encode($key). ': '.$this->format($val, $depth + 1); - } - - return $out . implode(','.$this->newline, $elems) . $this->newline . str_repeat($this->indent, $depth + 1) . '}'; - } - - return JsonFile::encode($data); - } - - protected function detectIndenting() - { - if ($this->pregMatch('{^([ \t]+)"}m', $this->contents, $match)) { - $this->indent = $match[1]; - } else { - $this->indent = ' '; - } - } - - protected function pregMatch($re, $str, &$matches = array()) - { - $count = preg_match($re, $str, $matches); - - if ($count === false) { - switch (preg_last_error()) { - case PREG_NO_ERROR: - throw new \RuntimeException('Failed to execute regex: PREG_NO_ERROR', PREG_NO_ERROR); - case PREG_INTERNAL_ERROR: - throw new \RuntimeException('Failed to execute regex: PREG_INTERNAL_ERROR', PREG_INTERNAL_ERROR); - case PREG_BACKTRACK_LIMIT_ERROR: - throw new \RuntimeException('Failed to execute regex: PREG_BACKTRACK_LIMIT_ERROR', PREG_BACKTRACK_LIMIT_ERROR); - case PREG_RECURSION_LIMIT_ERROR: - throw new \RuntimeException('Failed to execute regex: PREG_RECURSION_LIMIT_ERROR', PREG_RECURSION_LIMIT_ERROR); - case PREG_BAD_UTF8_ERROR: - throw new \RuntimeException('Failed to execute regex: PREG_BAD_UTF8_ERROR', PREG_BAD_UTF8_ERROR); - case PREG_BAD_UTF8_OFFSET_ERROR: - throw new \RuntimeException('Failed to execute regex: PREG_BAD_UTF8_OFFSET_ERROR', PREG_BAD_UTF8_OFFSET_ERROR); - case 6: // PREG_JIT_STACKLIMIT_ERROR - if (PHP_VERSION_ID > 70000) { - throw new \RuntimeException('Failed to execute regex: PREG_JIT_STACKLIMIT_ERROR', 6); - } - // no break - default: - throw new \RuntimeException('Failed to execute regex: Unknown error'); - } - } - - return $count; - } -} diff --git a/vendor/composer/composer/src/Composer/Json/JsonValidationException.php b/vendor/composer/composer/src/Composer/Json/JsonValidationException.php deleted file mode 100644 index 2fa5eb4..0000000 --- a/vendor/composer/composer/src/Composer/Json/JsonValidationException.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Json; - -use Exception; - -/** - * @author Jordi Boggiano - */ -class JsonValidationException extends Exception -{ - protected $errors; - - public function __construct($message, $errors = array(), Exception $previous = null) - { - $this->errors = $errors; - parent::__construct($message, 0, $previous); - } - - public function getErrors() - { - return $this->errors; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/AliasPackage.php b/vendor/composer/composer/src/Composer/Package/AliasPackage.php deleted file mode 100644 index 89f1978..0000000 --- a/vendor/composer/composer/src/Composer/Package/AliasPackage.php +++ /dev/null @@ -1,414 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -use Composer\Semver\Constraint\Constraint; -use Composer\Package\Version\VersionParser; - -/** - * @author Jordi Boggiano - */ -class AliasPackage extends BasePackage implements CompletePackageInterface -{ - protected $version; - protected $prettyVersion; - protected $dev; - protected $rootPackageAlias = false; - protected $stability; - - /** @var PackageInterface */ - protected $aliasOf; - /** @var Link[] */ - protected $requires; - /** @var Link[] */ - protected $devRequires; - /** @var Link[] */ - protected $conflicts; - /** @var Link[] */ - protected $provides; - /** @var Link[] */ - protected $replaces; - - /** - * All descendants' constructors should call this parent constructor - * - * @param PackageInterface $aliasOf The package this package is an alias of - * @param string $version The version the alias must report - * @param string $prettyVersion The alias's non-normalized version - */ - public function __construct(PackageInterface $aliasOf, $version, $prettyVersion) - { - parent::__construct($aliasOf->getName()); - - $this->version = $version; - $this->prettyVersion = $prettyVersion; - $this->aliasOf = $aliasOf; - $this->stability = VersionParser::parseStability($version); - $this->dev = $this->stability === 'dev'; - - foreach (array('requires', 'devRequires', 'conflicts', 'provides', 'replaces') as $type) { - $links = $aliasOf->{'get' . ucfirst($type)}(); - $this->$type = $this->replaceSelfVersionDependencies($links, $type); - } - } - - /** - * @return PackageInterface - */ - public function getAliasOf() - { - return $this->aliasOf; - } - - /** - * {@inheritDoc} - */ - public function getVersion() - { - return $this->version; - } - - /** - * {@inheritDoc} - */ - public function getStability() - { - return $this->stability; - } - - /** - * {@inheritDoc} - */ - public function getPrettyVersion() - { - return $this->prettyVersion; - } - - /** - * {@inheritDoc} - */ - public function isDev() - { - return $this->dev; - } - - /** - * {@inheritDoc} - */ - public function getRequires() - { - return $this->requires; - } - - /** - * {@inheritDoc} - */ - public function getConflicts() - { - return $this->conflicts; - } - - /** - * {@inheritDoc} - */ - public function getProvides() - { - return $this->provides; - } - - /** - * {@inheritDoc} - */ - public function getReplaces() - { - return $this->replaces; - } - - /** - * {@inheritDoc} - */ - public function getDevRequires() - { - return $this->devRequires; - } - - /** - * Stores whether this is an alias created by an aliasing in the requirements of the root package or not - * - * Use by the policy for sorting manually aliased packages first, see #576 - * - * @param bool $value - * - * @return mixed - */ - public function setRootPackageAlias($value) - { - return $this->rootPackageAlias = $value; - } - - /** - * @see setRootPackageAlias - * @return bool - */ - public function isRootPackageAlias() - { - return $this->rootPackageAlias; - } - - /** - * @param Link[] $links - * @param string $linkType - * - * @return Link[] - */ - protected function replaceSelfVersionDependencies(array $links, $linkType) - { - if (in_array($linkType, array('conflicts', 'provides', 'replaces'), true)) { - $newLinks = array(); - foreach ($links as $link) { - // link is self.version, but must be replacing also the replaced version - if ('self.version' === $link->getPrettyConstraint()) { - $newLinks[] = new Link($link->getSource(), $link->getTarget(), new Constraint('=', $this->version), $linkType, $this->prettyVersion); - } - } - $links = array_merge($links, $newLinks); - } else { - foreach ($links as $index => $link) { - if ('self.version' === $link->getPrettyConstraint()) { - $links[$index] = new Link($link->getSource(), $link->getTarget(), new Constraint('=', $this->version), $linkType, $this->prettyVersion); - } - } - } - - return $links; - } - - /*************************************** - * Wrappers around the aliased package * - ***************************************/ - - public function getType() - { - return $this->aliasOf->getType(); - } - - public function getTargetDir() - { - return $this->aliasOf->getTargetDir(); - } - - public function getExtra() - { - return $this->aliasOf->getExtra(); - } - - public function setInstallationSource($type) - { - $this->aliasOf->setInstallationSource($type); - } - - public function getInstallationSource() - { - return $this->aliasOf->getInstallationSource(); - } - - public function getSourceType() - { - return $this->aliasOf->getSourceType(); - } - - public function getSourceUrl() - { - return $this->aliasOf->getSourceUrl(); - } - - public function getSourceUrls() - { - return $this->aliasOf->getSourceUrls(); - } - - public function getSourceReference() - { - return $this->aliasOf->getSourceReference(); - } - - public function setSourceReference($reference) - { - return $this->aliasOf->setSourceReference($reference); - } - - public function setSourceMirrors($mirrors) - { - return $this->aliasOf->setSourceMirrors($mirrors); - } - - public function getSourceMirrors() - { - return $this->aliasOf->getSourceMirrors(); - } - - public function getDistType() - { - return $this->aliasOf->getDistType(); - } - - public function getDistUrl() - { - return $this->aliasOf->getDistUrl(); - } - - public function getDistUrls() - { - return $this->aliasOf->getDistUrls(); - } - - public function getDistReference() - { - return $this->aliasOf->getDistReference(); - } - - public function setDistReference($reference) - { - return $this->aliasOf->setDistReference($reference); - } - - public function getDistSha1Checksum() - { - return $this->aliasOf->getDistSha1Checksum(); - } - - public function setTransportOptions(array $options) - { - return $this->aliasOf->setTransportOptions($options); - } - - public function getTransportOptions() - { - return $this->aliasOf->getTransportOptions(); - } - - public function setDistMirrors($mirrors) - { - return $this->aliasOf->setDistMirrors($mirrors); - } - - public function getDistMirrors() - { - return $this->aliasOf->getDistMirrors(); - } - - public function getScripts() - { - return $this->aliasOf->getScripts(); - } - - public function getLicense() - { - return $this->aliasOf->getLicense(); - } - - public function getAutoload() - { - return $this->aliasOf->getAutoload(); - } - - public function getDevAutoload() - { - return $this->aliasOf->getDevAutoload(); - } - - public function getIncludePaths() - { - return $this->aliasOf->getIncludePaths(); - } - - public function getRepositories() - { - return $this->aliasOf->getRepositories(); - } - - public function getReleaseDate() - { - return $this->aliasOf->getReleaseDate(); - } - - public function getBinaries() - { - return $this->aliasOf->getBinaries(); - } - - public function getKeywords() - { - return $this->aliasOf->getKeywords(); - } - - public function getDescription() - { - return $this->aliasOf->getDescription(); - } - - public function getHomepage() - { - return $this->aliasOf->getHomepage(); - } - - public function getSuggests() - { - return $this->aliasOf->getSuggests(); - } - - public function getAuthors() - { - return $this->aliasOf->getAuthors(); - } - - public function getSupport() - { - return $this->aliasOf->getSupport(); - } - - public function getNotificationUrl() - { - return $this->aliasOf->getNotificationUrl(); - } - - public function getArchiveExcludes() - { - return $this->aliasOf->getArchiveExcludes(); - } - - public function isAbandoned() - { - return $this->aliasOf->isAbandoned(); - } - - public function getReplacementPackage() - { - return $this->aliasOf->getReplacementPackage(); - } - - public function __toString() - { - return parent::__toString().' (alias of '.$this->aliasOf->getVersion().')'; - } - - public function setDistUrl($url) - { - return $this->aliasOf->setDistUrl($url); - } - - public function setDistType($type) - { - return $this->aliasOf->setDistType($type); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php deleted file mode 100644 index 4a9a5af..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php +++ /dev/null @@ -1,44 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -use FilterIterator; -use PharData; - -class ArchivableFilesFilter extends FilterIterator -{ - private $dirs = array(); - - /** - * @return bool true if the current element is acceptable, otherwise false. - */ - public function accept() - { - $file = $this->getInnerIterator()->current(); - if ($file->isDir()) { - $this->dirs[] = (string) $file; - - return false; - } - - return true; - } - - public function addEmptyDir(PharData $phar, $sources) - { - foreach ($this->dirs as $filepath) { - $localname = str_replace($sources . "/", '', $filepath); - $phar->addEmptyDir($localname); - } - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php b/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php deleted file mode 100644 index 150e5f4..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php +++ /dev/null @@ -1,105 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -use Composer\Util\Filesystem; -use FilesystemIterator; -use Symfony\Component\Finder\Finder; -use Symfony\Component\Finder\SplFileInfo; - -/** - * A Symfony Finder wrapper which locates files that should go into archives - * - * Handles .gitignore, .gitattributes and .hgignore files as well as composer's - * own exclude rules from composer.json - * - * @author Nils Adermann - */ -class ArchivableFilesFinder extends \FilterIterator -{ - /** - * @var Finder - */ - protected $finder; - - /** - * Initializes the internal Symfony Finder with appropriate filters - * - * @param string $sources Path to source files to be archived - * @param array $excludes Composer's own exclude rules from composer.json - * @param bool $ignoreFilters Ignore filters when looking for files - */ - public function __construct($sources, array $excludes, $ignoreFilters = false) - { - $fs = new Filesystem(); - - $sources = $fs->normalizePath($sources); - - if ($ignoreFilters) { - $filters = array(); - } else { - $filters = array( - new HgExcludeFilter($sources), - new GitExcludeFilter($sources), - new ComposerExcludeFilter($sources, $excludes), - ); - } - - $this->finder = new Finder(); - - $filter = function (\SplFileInfo $file) use ($sources, $filters, $fs) { - if ($file->isLink() && strpos($file->getLinkTarget(), $sources) !== 0) { - return false; - } - - $relativePath = preg_replace( - '#^'.preg_quote($sources, '#').'#', - '', - $fs->normalizePath($file->getRealPath()) - ); - - $exclude = false; - foreach ($filters as $filter) { - $exclude = $filter->filter($relativePath, $exclude); - } - - return !$exclude; - }; - - if (method_exists($filter, 'bindTo')) { - $filter = $filter->bindTo(null); - } - - $this->finder - ->in($sources) - ->filter($filter) - ->ignoreVCS(true) - ->ignoreDotFiles(false); - - parent::__construct($this->finder->getIterator()); - } - - public function accept() - { - /** @var SplFileInfo $current */ - $current = $this->getInnerIterator()->current(); - - if (!$current->isDir()) { - return true; - } - - $iterator = new FilesystemIterator($current, FilesystemIterator::SKIP_DOTS); - - return !$iterator->valid(); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php b/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php deleted file mode 100644 index 6f8fa8a..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php +++ /dev/null @@ -1,183 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -use Composer\Downloader\DownloadManager; -use Composer\Package\PackageInterface; -use Composer\Package\RootPackageInterface; -use Composer\Util\Filesystem; -use Composer\Json\JsonFile; - -/** - * @author Matthieu Moquet - * @author Till Klampaeckel - */ -class ArchiveManager -{ - protected $downloadManager; - - protected $archivers = array(); - - /** - * @var bool - */ - protected $overwriteFiles = true; - - /** - * @param DownloadManager $downloadManager A manager used to download package sources - */ - public function __construct(DownloadManager $downloadManager) - { - $this->downloadManager = $downloadManager; - } - - /** - * @param ArchiverInterface $archiver - */ - public function addArchiver(ArchiverInterface $archiver) - { - $this->archivers[] = $archiver; - } - - /** - * Set whether existing archives should be overwritten - * - * @param bool $overwriteFiles New setting - * - * @return $this - */ - public function setOverwriteFiles($overwriteFiles) - { - $this->overwriteFiles = $overwriteFiles; - - return $this; - } - - /** - * Generate a distinct filename for a particular version of a package. - * - * @param PackageInterface $package The package to get a name for - * - * @return string A filename without an extension - */ - public function getPackageFilename(PackageInterface $package) - { - $nameParts = array(preg_replace('#[^a-z0-9-_]#i', '-', $package->getName())); - - if (preg_match('{^[a-f0-9]{40}$}', $package->getDistReference())) { - array_push($nameParts, $package->getDistReference(), $package->getDistType()); - } else { - array_push($nameParts, $package->getPrettyVersion(), $package->getDistReference()); - } - - if ($package->getSourceReference()) { - $nameParts[] = substr(sha1($package->getSourceReference()), 0, 6); - } - - $name = implode('-', array_filter($nameParts, function ($p) { - return !empty($p); - })); - - return str_replace('/', '-', $name); - } - - /** - * Create an archive of the specified package. - * - * @param PackageInterface $package The package to archive - * @param string $format The format of the archive (zip, tar, ...) - * @param string $targetDir The directory where to build the archive - * @param string|null $fileName The relative file name to use for the archive, or null to generate - * the package name. Note that the format will be appended to this name - * @param bool $ignoreFilters Ignore filters when looking for files in the package - * @throws \InvalidArgumentException - * @throws \RuntimeException - * @return string The path of the created archive - */ - public function archive(PackageInterface $package, $format, $targetDir, $fileName = null, $ignoreFilters = false) - { - if (empty($format)) { - throw new \InvalidArgumentException('Format must be specified'); - } - - // Search for the most appropriate archiver - $usableArchiver = null; - foreach ($this->archivers as $archiver) { - if ($archiver->supports($format, $package->getSourceType())) { - $usableArchiver = $archiver; - break; - } - } - - // Checks the format/source type are supported before downloading the package - if (null === $usableArchiver) { - throw new \RuntimeException(sprintf('No archiver found to support %s format', $format)); - } - - $filesystem = new Filesystem(); - if (null === $fileName) { - $packageName = $this->getPackageFilename($package); - } else { - $packageName = $fileName; - } - - // Archive filename - $filesystem->ensureDirectoryExists($targetDir); - $target = realpath($targetDir).'/'.$packageName.'.'.$format; - $filesystem->ensureDirectoryExists(dirname($target)); - - if (!$this->overwriteFiles && file_exists($target)) { - return $target; - } - - if ($package instanceof RootPackageInterface) { - $sourcePath = realpath('.'); - } else { - // Directory used to download the sources - $sourcePath = sys_get_temp_dir().'/composer_archive'.uniqid(); - $filesystem->ensureDirectoryExists($sourcePath); - - try { - // Download sources - $this->downloadManager->download($package, $sourcePath); - } catch (\Exception $e) { - $filesystem->removeDirectory($sourcePath); - throw $e; - } - - // Check exclude from downloaded composer.json - if (file_exists($composerJsonPath = $sourcePath.'/composer.json')) { - $jsonFile = new JsonFile($composerJsonPath); - $jsonData = $jsonFile->read(); - if (!empty($jsonData['archive']['exclude'])) { - $package->setArchiveExcludes($jsonData['archive']['exclude']); - } - } - } - - // Create the archive - $tempTarget = sys_get_temp_dir().'/composer_archive'.uniqid().'.'.$format; - $filesystem->ensureDirectoryExists(dirname($tempTarget)); - - $archivePath = $usableArchiver->archive($sourcePath, $tempTarget, $format, $package->getArchiveExcludes(), $ignoreFilters); - $filesystem->rename($archivePath, $target); - - // cleanup temporary download - if (!$package instanceof RootPackageInterface) { - $filesystem->removeDirectory($sourcePath); - } - $filesystem->remove($tempTarget); - - return $target; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php b/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php deleted file mode 100644 index 4e5fa54..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php +++ /dev/null @@ -1,43 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -/** - * @author Till Klampaeckel - * @author Matthieu Moquet - * @author Nils Adermann - */ -interface ArchiverInterface -{ - /** - * Create an archive from the sources. - * - * @param string $sources The sources directory - * @param string $target The target file - * @param string $format The format used for archive - * @param array $excludes A list of patterns for files to exclude - * - * @return string The path to the written archive file - */ - public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false); - - /** - * Format supported by the archiver. - * - * @param string $format The archive format - * @param string $sourceType The source type (git, svn, hg, etc.) - * - * @return bool true if the format is supported by the archiver - */ - public function supports($format, $sourceType); -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php deleted file mode 100644 index 18fa054..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php +++ /dev/null @@ -1,148 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -use Symfony\Component\Finder; - -/** - * @author Nils Adermann - */ -abstract class BaseExcludeFilter -{ - /** - * @var string - */ - protected $sourcePath; - - /** - * @var array - */ - protected $excludePatterns; - - /** - * @param string $sourcePath Directory containing sources to be filtered - */ - public function __construct($sourcePath) - { - $this->sourcePath = $sourcePath; - $this->excludePatterns = array(); - } - - /** - * Checks the given path against all exclude patterns in this filter - * - * Negated patterns overwrite exclude decisions of previous filters. - * - * @param string $relativePath The file's path relative to the sourcePath - * @param bool $exclude Whether a previous filter wants to exclude this file - * - * @return bool Whether the file should be excluded - */ - public function filter($relativePath, $exclude) - { - foreach ($this->excludePatterns as $patternData) { - list($pattern, $negate, $stripLeadingSlash) = $patternData; - - if ($stripLeadingSlash) { - $path = substr($relativePath, 1); - } else { - $path = $relativePath; - } - - if (preg_match($pattern, $path)) { - $exclude = !$negate; - } - } - - return $exclude; - } - - /** - * Processes a file containing exclude rules of different formats per line - * - * @param array $lines A set of lines to be parsed - * @param callable $lineParser The parser to be used on each line - * - * @return array Exclude patterns to be used in filter() - */ - protected function parseLines(array $lines, $lineParser) - { - return array_filter( - array_map( - function ($line) use ($lineParser) { - $line = trim($line); - - if (!$line || 0 === strpos($line, '#')) { - return null; - } - - return call_user_func($lineParser, $line); - }, - $lines - ), - function ($pattern) { - return $pattern !== null; - } - ); - } - - /** - * Generates a set of exclude patterns for filter() from gitignore rules - * - * @param array $rules A list of exclude rules in gitignore syntax - * - * @return array Exclude patterns - */ - protected function generatePatterns($rules) - { - $patterns = array(); - foreach ($rules as $rule) { - $patterns[] = $this->generatePattern($rule); - } - - return $patterns; - } - - /** - * Generates an exclude pattern for filter() from a gitignore rule - * - * @param string $rule An exclude rule in gitignore syntax - * - * @return array An exclude pattern - */ - protected function generatePattern($rule) - { - $negate = false; - $pattern = '{'; - - if (strlen($rule) && $rule[0] === '!') { - $negate = true; - $rule = substr($rule, 1); - } - - if (strlen($rule) && $rule[0] === '/') { - $pattern .= '^/'; - $rule = substr($rule, 1); - } elseif (strlen($rule) - 1 === strpos($rule, '/')) { - $pattern .= '/'; - $rule = substr($rule, 0, -1); - } elseif (false === strpos($rule, '/')) { - $pattern .= '/'; - } - - // remove delimiters as well as caret (^) and dollar sign ($) from the regex - $pattern .= substr(Finder\Glob::toRegex($rule), 2, -2) . '(?=$|/)'; - - return array($pattern . '}', $negate, false); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php deleted file mode 100644 index 9e66386..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -/** - * An exclude filter which processes composer's own exclude rules - * - * @author Nils Adermann - */ -class ComposerExcludeFilter extends BaseExcludeFilter -{ - /** - * @param string $sourcePath Directory containing sources to be filtered - * @param array $excludeRules An array of exclude rules from composer.json - */ - public function __construct($sourcePath, array $excludeRules) - { - parent::__construct($sourcePath); - $this->excludePatterns = $this->generatePatterns($excludeRules); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php deleted file mode 100644 index f797348..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php +++ /dev/null @@ -1,79 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -/** - * An exclude filter that processes gitignore and gitattributes - * - * It respects export-ignore git attributes - * - * @author Nils Adermann - */ -class GitExcludeFilter extends BaseExcludeFilter -{ - /** - * Parses .gitignore and .gitattributes files if they exist - * - * @param string $sourcePath - */ - public function __construct($sourcePath) - { - parent::__construct($sourcePath); - - if (file_exists($sourcePath.'/.gitignore')) { - $this->excludePatterns = $this->parseLines( - file($sourcePath.'/.gitignore'), - array($this, 'parseGitIgnoreLine') - ); - } - if (file_exists($sourcePath.'/.gitattributes')) { - $this->excludePatterns = array_merge( - $this->excludePatterns, - $this->parseLines( - file($sourcePath.'/.gitattributes'), - array($this, 'parseGitAttributesLine') - ) - ); - } - } - - /** - * Callback line parser which process gitignore lines - * - * @param string $line A line from .gitignore - * - * @return array An exclude pattern for filter() - */ - public function parseGitIgnoreLine($line) - { - return $this->generatePattern($line); - } - - /** - * Callback parser which finds export-ignore rules in git attribute lines - * - * @param string $line A line from .gitattributes - * - * @return array|null An exclude pattern for filter() - */ - public function parseGitAttributesLine($line) - { - $parts = preg_split('#\s+#', $line); - - if (count($parts) == 2 && $parts[1] === 'export-ignore') { - return $this->generatePattern($parts[0]); - } - - return null; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php b/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php deleted file mode 100644 index b83b775..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php +++ /dev/null @@ -1,107 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -use Symfony\Component\Finder; - -/** - * An exclude filter that processes hgignore files - * - * @author Nils Adermann - */ -class HgExcludeFilter extends BaseExcludeFilter -{ - const HG_IGNORE_REGEX = 1; - const HG_IGNORE_GLOB = 2; - - /** - * Either HG_IGNORE_REGEX or HG_IGNORE_GLOB - * @var int - */ - protected $patternMode; - - /** - * Parses .hgignore file if it exist - * - * @param string $sourcePath - */ - public function __construct($sourcePath) - { - parent::__construct($sourcePath); - - $this->patternMode = self::HG_IGNORE_REGEX; - - if (file_exists($sourcePath.'/.hgignore')) { - $this->excludePatterns = $this->parseLines( - file($sourcePath.'/.hgignore'), - array($this, 'parseHgIgnoreLine') - ); - } - } - - /** - * Callback line parser which process hgignore lines - * - * @param string $line A line from .hgignore - * - * @return array|null An exclude pattern for filter() - */ - public function parseHgIgnoreLine($line) - { - if (preg_match('#^syntax\s*:\s*(glob|regexp)$#', $line, $matches)) { - if ($matches[1] === 'glob') { - $this->patternMode = self::HG_IGNORE_GLOB; - } else { - $this->patternMode = self::HG_IGNORE_REGEX; - } - - return null; - } - - if ($this->patternMode == self::HG_IGNORE_GLOB) { - return $this->patternFromGlob($line); - } - - return $this->patternFromRegex($line); - } - - /** - * Generates an exclude pattern for filter() from a hg glob expression - * - * @param string $line A line from .hgignore in glob mode - * - * @return array An exclude pattern for filter() - */ - protected function patternFromGlob($line) - { - $pattern = '#'.substr(Finder\Glob::toRegex($line), 2, -1).'#'; - $pattern = str_replace('[^/]*', '.*', $pattern); - - return array($pattern, false, true); - } - - /** - * Generates an exclude pattern for filter() from a hg regexp expression - * - * @param string $line A line from .hgignore in regexp mode - * - * @return array An exclude pattern for filter() - */ - public function patternFromRegex($line) - { - // WTF need to escape the delimiter safely - $pattern = '#'.preg_replace('/((?:\\\\\\\\)*)(\\\\?)#/', '\1\2\2\\#', $line).'#'; - - return array($pattern, false, true); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php b/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php deleted file mode 100644 index f9a3923..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php +++ /dev/null @@ -1,97 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -/** - * @author Till Klampaeckel - * @author Nils Adermann - * @author Matthieu Moquet - */ -class PharArchiver implements ArchiverInterface -{ - protected static $formats = array( - 'zip' => \Phar::ZIP, - 'tar' => \Phar::TAR, - 'tar.gz' => \Phar::TAR, - 'tar.bz2' => \Phar::TAR, - ); - - protected static $compressFormats = array( - 'tar.gz' => \Phar::GZ, - 'tar.bz2' => \Phar::BZ2, - ); - - /** - * {@inheritdoc} - */ - public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false) - { - $sources = realpath($sources); - - // Phar would otherwise load the file which we don't want - if (file_exists($target)) { - unlink($target); - } - - try { - $filename = substr($target, 0, strrpos($target, $format) - 1); - - // Check if compress format - if (isset(static::$compressFormats[$format])) { - // Current compress format supported base on tar - $target = $filename . '.tar'; - } - - $phar = new \PharData($target, null, null, static::$formats[$format]); - $files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); - $filesOnly = new ArchivableFilesFilter($files); - $phar->buildFromIterator($filesOnly, $sources); - $filesOnly->addEmptyDir($phar, $sources); - - if (isset(static::$compressFormats[$format])) { - // Check can be compressed? - if (!$phar->canCompress(static::$compressFormats[$format])) { - throw new \RuntimeException(sprintf('Can not compress to %s format', $format)); - } - - // Delete old tar - unlink($target); - - // Compress the new tar - $phar->compress(static::$compressFormats[$format]); - - // Make the correct filename - $target = $filename . '.' . $format; - } - - return $target; - } catch (\UnexpectedValueException $e) { - $message = sprintf( - "Could not create archive '%s' from '%s': %s", - $target, - $sources, - $e->getMessage() - ); - - throw new \RuntimeException($message, $e->getCode(), $e); - } - } - - /** - * {@inheritdoc} - */ - public function supports($format, $sourceType) - { - return isset(static::$formats[$format]); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php b/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php deleted file mode 100644 index 65694cb..0000000 --- a/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Archiver; - -use ZipArchive; -use Composer\Util\Filesystem; - -/** - * @author Jan Prieser - */ -class ZipArchiver implements ArchiverInterface -{ - protected static $formats = array( - 'zip' => 1, - ); - - /** - * {@inheritdoc} - */ - public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false) - { - $fs = new Filesystem(); - $sources = $fs->normalizePath($sources); - - $zip = new ZipArchive(); - $res = $zip->open($target, ZipArchive::CREATE); - if ($res === true) { - $files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); - foreach ($files as $file) { - /** @var \SplFileInfo $file */ - $filepath = strtr($file->getPath()."/".$file->getFilename(), '\\', '/'); - $localname = str_replace($sources.'/', '', $filepath); - if ($file->isDir()) { - $zip->addEmptyDir($localname); - } else { - $zip->addFile($filepath, $localname); - } - } - if ($zip->close()) { - return $target; - } - } - $message = sprintf( - "Could not create archive '%s' from '%s': %s", - $target, - $sources, - $zip->getStatusString() - ); - throw new \RuntimeException($message); - } - - /** - * {@inheritdoc} - */ - public function supports($format, $sourceType) - { - return isset(static::$formats[$format]) && $this->compressionAvailable(); - } - - private function compressionAvailable() - { - return class_exists('ZipArchive'); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/BasePackage.php b/vendor/composer/composer/src/Composer/Package/BasePackage.php deleted file mode 100644 index f2f5be7..0000000 --- a/vendor/composer/composer/src/Composer/Package/BasePackage.php +++ /dev/null @@ -1,251 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -use Composer\Repository\RepositoryInterface; -use Composer\Repository\PlatformRepository; - -/** - * Base class for packages providing name storage and default match implementation - * - * @author Nils Adermann - */ -abstract class BasePackage implements PackageInterface -{ - public static $supportedLinkTypes = array( - 'require' => array('description' => 'requires', 'method' => 'requires'), - 'conflict' => array('description' => 'conflicts', 'method' => 'conflicts'), - 'provide' => array('description' => 'provides', 'method' => 'provides'), - 'replace' => array('description' => 'replaces', 'method' => 'replaces'), - 'require-dev' => array('description' => 'requires (for development)', 'method' => 'devRequires'), - ); - - const STABILITY_STABLE = 0; - const STABILITY_RC = 5; - const STABILITY_BETA = 10; - const STABILITY_ALPHA = 15; - const STABILITY_DEV = 20; - - public static $stabilities = array( - 'stable' => self::STABILITY_STABLE, - 'RC' => self::STABILITY_RC, - 'beta' => self::STABILITY_BETA, - 'alpha' => self::STABILITY_ALPHA, - 'dev' => self::STABILITY_DEV, - ); - - /** - * READ-ONLY: The package id, public for fast access in dependency solver - * @var int - */ - public $id; - /** @var string */ - protected $name; - /** @var string */ - protected $prettyName; - /** @var RepositoryInterface */ - protected $repository; - /** @var array */ - protected $transportOptions = array(); - - /** - * All descendants' constructors should call this parent constructor - * - * @param string $name The package's name - */ - public function __construct($name) - { - $this->prettyName = $name; - $this->name = strtolower($name); - $this->id = -1; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return $this->name; - } - - /** - * {@inheritDoc} - */ - public function getPrettyName() - { - return $this->prettyName; - } - - /** - * {@inheritDoc} - */ - public function getNames() - { - $names = array( - $this->getName() => true, - ); - - foreach ($this->getProvides() as $link) { - $names[$link->getTarget()] = true; - } - - foreach ($this->getReplaces() as $link) { - $names[$link->getTarget()] = true; - } - - return array_keys($names); - } - - /** - * {@inheritDoc} - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * {@inheritDoc} - */ - public function getId() - { - return $this->id; - } - - /** - * {@inheritDoc} - */ - public function setRepository(RepositoryInterface $repository) - { - if ($this->repository && $repository !== $this->repository) { - throw new \LogicException('A package can only be added to one repository'); - } - $this->repository = $repository; - } - - /** - * {@inheritDoc} - */ - public function getRepository() - { - return $this->repository; - } - - /** - * {@inheritDoc} - */ - public function getTransportOptions() - { - return $this->transportOptions; - } - - /** - * Configures the list of options to download package dist files - * - * @param array $options - */ - public function setTransportOptions(array $options) - { - $this->transportOptions = $options; - } - - /** - * checks if this package is a platform package - * - * @return bool - */ - public function isPlatform() - { - return $this->getRepository() instanceof PlatformRepository; - } - - /** - * Returns package unique name, constructed from name, version and release type. - * - * @return string - */ - public function getUniqueName() - { - return $this->getName().'-'.$this->getVersion(); - } - - public function equals(PackageInterface $package) - { - $self = $this; - if ($this instanceof AliasPackage) { - $self = $this->getAliasOf(); - } - if ($package instanceof AliasPackage) { - $package = $package->getAliasOf(); - } - - return $package === $self; - } - - /** - * Converts the package into a readable and unique string - * - * @return string - */ - public function __toString() - { - return $this->getUniqueName(); - } - - public function getPrettyString() - { - return $this->getPrettyName().' '.$this->getPrettyVersion(); - } - - /** - * {@inheritDoc} - */ - public function getFullPrettyVersion($truncate = true) - { - if (!$this->isDev() || !in_array($this->getSourceType(), array('hg', 'git'))) { - return $this->getPrettyVersion(); - } - - // if source reference is a sha1 hash -- truncate - if ($truncate && strlen($this->getSourceReference()) === 40) { - return $this->getPrettyVersion() . ' ' . substr($this->getSourceReference(), 0, 7); - } - - return $this->getPrettyVersion() . ' ' . $this->getSourceReference(); - } - - public function getStabilityPriority() - { - return self::$stabilities[$this->getStability()]; - } - - public function __clone() - { - $this->repository = null; - $this->id = -1; - } - - /** - * Build a regexp from a package name, expanding * globs as required - * - * @param string $whiteListedPattern - * @param bool $wrap Wrap the cleaned string by the given string - * @return string - */ - public static function packageNameToRegexp($whiteListedPattern, $wrap = '{^%s$}i') - { - $cleanedWhiteListedPattern = str_replace('\\*', '.*', preg_quote($whiteListedPattern)); - - return sprintf($wrap, $cleanedWhiteListedPattern); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php b/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php deleted file mode 100644 index c0ab98d..0000000 --- a/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Comparer; - -/** - * class Comparer - * - * @author Hector Prats - */ -class Comparer -{ - private $source; - private $update; - private $changed; - - public function setSource($source) - { - $this->source = $source; - } - - public function setUpdate($update) - { - $this->update = $update; - } - - public function getChanged($toString = false, $explicated = false) - { - $changed = $this->changed; - if (!count($changed)) { - return false; - } - if ($explicated) { - foreach ($changed as $sectionKey => $itemSection) { - foreach ($itemSection as $itemKey => $item) { - $changed[$sectionKey][$itemKey] = $item.' ('.$sectionKey.')'; - } - } - } - - if ($toString) { - foreach ($changed as $sectionKey => $itemSection) { - foreach ($itemSection as $itemKey => $item) { - $changed['string'][] = $item."\r\n"; - } - } - $changed = implode("\r\n", $changed['string']); - } - - return $changed; - } - - public function doCompare() - { - $source = array(); - $destination = array(); - $this->changed = array(); - $currentDirectory = getcwd(); - chdir($this->source); - $source = $this->doTree('.', $source); - if (!is_array($source)) { - return; - } - chdir($currentDirectory); - chdir($this->update); - $destination = $this->doTree('.', $destination); - if (!is_array($destination)) { - exit; - } - chdir($currentDirectory); - foreach ($source as $dir => $value) { - foreach ($value as $file => $hash) { - if (isset($destination[$dir][$file])) { - if ($hash !== $destination[$dir][$file]) { - $this->changed['changed'][] = $dir.'/'.$file; - } - } else { - $this->changed['removed'][] = $dir.'/'.$file; - } - } - } - foreach ($destination as $dir => $value) { - foreach ($value as $file => $hash) { - if (!isset($source[$dir][$file])) { - $this->changed['added'][] = $dir.'/'.$file; - } - } - } - } - - private function doTree($dir, &$array) - { - if ($dh = opendir($dir)) { - while ($file = readdir($dh)) { - if ($file !== '.' && $file !== '..') { - if (is_dir($dir.'/'.$file)) { - if (!count($array)) { - $array[0] = 'Temp'; - } - if (!$this->doTree($dir.'/'.$file, $array)) { - return false; - } - } else { - if (filesize($dir.'/'.$file)) { - set_time_limit(30); - $array[$dir][$file] = md5_file($dir.'/'.$file); - } - } - } - } - if (count($array) > 1 && isset($array['0'])) { - unset($array['0']); - } - - return $array; - } - - return false; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/CompletePackage.php b/vendor/composer/composer/src/Composer/Package/CompletePackage.php deleted file mode 100644 index 5dbdb82..0000000 --- a/vendor/composer/composer/src/Composer/Package/CompletePackage.php +++ /dev/null @@ -1,199 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -/** - * Package containing additional metadata that is not used by the solver - * - * @author Nils Adermann - */ -class CompletePackage extends Package implements CompletePackageInterface -{ - protected $repositories; - protected $license = array(); - protected $keywords; - protected $authors; - protected $description; - protected $homepage; - protected $scripts = array(); - protected $support = array(); - protected $abandoned = false; - - /** - * @param array $scripts - */ - public function setScripts(array $scripts) - { - $this->scripts = $scripts; - } - - /** - * {@inheritDoc} - */ - public function getScripts() - { - return $this->scripts; - } - - /** - * Set the repositories - * - * @param array $repositories - */ - public function setRepositories($repositories) - { - $this->repositories = $repositories; - } - - /** - * {@inheritDoc} - */ - public function getRepositories() - { - return $this->repositories; - } - - /** - * Set the license - * - * @param array $license - */ - public function setLicense(array $license) - { - $this->license = $license; - } - - /** - * {@inheritDoc} - */ - public function getLicense() - { - return $this->license; - } - - /** - * Set the keywords - * - * @param array $keywords - */ - public function setKeywords(array $keywords) - { - $this->keywords = $keywords; - } - - /** - * {@inheritDoc} - */ - public function getKeywords() - { - return $this->keywords; - } - - /** - * Set the authors - * - * @param array $authors - */ - public function setAuthors(array $authors) - { - $this->authors = $authors; - } - - /** - * {@inheritDoc} - */ - public function getAuthors() - { - return $this->authors; - } - - /** - * Set the description - * - * @param string $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * {@inheritDoc} - */ - public function getDescription() - { - return $this->description; - } - - /** - * Set the homepage - * - * @param string $homepage - */ - public function setHomepage($homepage) - { - $this->homepage = $homepage; - } - - /** - * {@inheritDoc} - */ - public function getHomepage() - { - return $this->homepage; - } - - /** - * Set the support information - * - * @param array $support - */ - public function setSupport(array $support) - { - $this->support = $support; - } - - /** - * {@inheritDoc} - */ - public function getSupport() - { - return $this->support; - } - - /** - * @return bool - */ - public function isAbandoned() - { - return (bool) $this->abandoned; - } - - /** - * @param bool|string $abandoned - */ - public function setAbandoned($abandoned) - { - $this->abandoned = $abandoned; - } - - /** - * If the package is abandoned and has a suggested replacement, this method returns it - * - * @return string|null - */ - public function getReplacementPackage() - { - return is_string($this->abandoned) ? $this->abandoned : null; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php b/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php deleted file mode 100644 index 4036b3c..0000000 --- a/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php +++ /dev/null @@ -1,95 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -/** - * Defines package metadata that is not necessarily needed for solving and installing packages - * - * @author Nils Adermann - */ -interface CompletePackageInterface extends PackageInterface -{ - /** - * Returns the scripts of this package - * - * @return array array('script name' => array('listeners')) - */ - public function getScripts(); - - /** - * Returns an array of repositories - * - * {"": {}} - * - * @return array Repositories - */ - public function getRepositories(); - - /** - * Returns the package license, e.g. MIT, BSD, GPL - * - * @return array The package licenses - */ - public function getLicense(); - - /** - * Returns an array of keywords relating to the package - * - * @return array - */ - public function getKeywords(); - - /** - * Returns the package description - * - * @return string - */ - public function getDescription(); - - /** - * Returns the package homepage - * - * @return string - */ - public function getHomepage(); - - /** - * Returns an array of authors of the package - * - * Each item can contain name/homepage/email keys - * - * @return array - */ - public function getAuthors(); - - /** - * Returns the support information - * - * @return array - */ - public function getSupport(); - - /** - * Returns if the package is abandoned or not - * - * @return bool - */ - public function isAbandoned(); - - /** - * If the package is abandoned and has a suggested replacement, this method returns it - * - * @return string - */ - public function getReplacementPackage(); -} diff --git a/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php b/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php deleted file mode 100644 index b1e20db..0000000 --- a/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php +++ /dev/null @@ -1,151 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Dumper; - -use Composer\Package\BasePackage; -use Composer\Package\PackageInterface; -use Composer\Package\CompletePackageInterface; -use Composer\Package\RootPackageInterface; - -/** - * @author Konstantin Kudryashiv - * @author Jordi Boggiano - */ -class ArrayDumper -{ - public function dump(PackageInterface $package) - { - $keys = array( - 'binaries' => 'bin', - 'type', - 'extra', - 'installationSource' => 'installation-source', - 'autoload', - 'devAutoload' => 'autoload-dev', - 'notificationUrl' => 'notification-url', - 'includePaths' => 'include-path', - ); - - $data = array(); - $data['name'] = $package->getPrettyName(); - $data['version'] = $package->getPrettyVersion(); - $data['version_normalized'] = $package->getVersion(); - - if ($package->getTargetDir()) { - $data['target-dir'] = $package->getTargetDir(); - } - - if ($package->getSourceType()) { - $data['source']['type'] = $package->getSourceType(); - $data['source']['url'] = $package->getSourceUrl(); - if (null !== ($value = $package->getSourceReference())) { - $data['source']['reference'] = $value; - } - if ($mirrors = $package->getSourceMirrors()) { - $data['source']['mirrors'] = $mirrors; - } - } - - if ($package->getDistType()) { - $data['dist']['type'] = $package->getDistType(); - $data['dist']['url'] = $package->getDistUrl(); - if (null !== ($value = $package->getDistReference())) { - $data['dist']['reference'] = $value; - } - if (null !== ($value = $package->getDistSha1Checksum())) { - $data['dist']['shasum'] = $value; - } - if ($mirrors = $package->getDistMirrors()) { - $data['dist']['mirrors'] = $mirrors; - } - } - - if ($package->getArchiveExcludes()) { - $data['archive']['exclude'] = $package->getArchiveExcludes(); - } - - foreach (BasePackage::$supportedLinkTypes as $type => $opts) { - if ($links = $package->{'get'.ucfirst($opts['method'])}()) { - foreach ($links as $link) { - $data[$type][$link->getTarget()] = $link->getPrettyConstraint(); - } - ksort($data[$type]); - } - } - - if ($packages = $package->getSuggests()) { - ksort($packages); - $data['suggest'] = $packages; - } - - if ($package->getReleaseDate()) { - $data['time'] = $package->getReleaseDate()->format(DATE_RFC3339); - } - - $data = $this->dumpValues($package, $keys, $data); - - if ($package instanceof CompletePackageInterface) { - $keys = array( - 'scripts', - 'license', - 'authors', - 'description', - 'homepage', - 'keywords', - 'repositories', - 'support', - ); - - $data = $this->dumpValues($package, $keys, $data); - - if (isset($data['keywords']) && is_array($data['keywords'])) { - sort($data['keywords']); - } - - if ($package->isAbandoned()) { - $data['abandoned'] = $package->getReplacementPackage() ?: true; - } - } - - if ($package instanceof RootPackageInterface) { - $minimumStability = $package->getMinimumStability(); - if ($minimumStability) { - $data['minimum-stability'] = $minimumStability; - } - } - - if (count($package->getTransportOptions()) > 0) { - $data['transport-options'] = $package->getTransportOptions(); - } - - return $data; - } - - private function dumpValues(PackageInterface $package, array $keys, array $data) - { - foreach ($keys as $method => $key) { - if (is_numeric($method)) { - $method = $key; - } - - $getter = 'get'.ucfirst($method); - $value = $package->$getter(); - - if (null !== $value && !(is_array($value) && 0 === count($value))) { - $data[$key] = $value; - } - } - - return $data; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Link.php b/vendor/composer/composer/src/Composer/Package/Link.php deleted file mode 100644 index 217da07..0000000 --- a/vendor/composer/composer/src/Composer/Package/Link.php +++ /dev/null @@ -1,128 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -use Composer\Semver\Constraint\ConstraintInterface; - -/** - * Represents a link between two packages, represented by their names - * - * @author Nils Adermann - */ -class Link -{ - /** - * @var string - */ - protected $source; - - /** - * @var string - */ - protected $target; - - /** - * @var ConstraintInterface|null - */ - protected $constraint; - - /** - * @var string - */ - protected $description; - - /** - * @var string|null - */ - protected $prettyConstraint; - - /** - * Creates a new package link. - * - * @param string $source - * @param string $target - * @param ConstraintInterface|null $constraint Constraint applying to the target of this link - * @param string $description Used to create a descriptive string representation - * @param string|null $prettyConstraint - */ - public function __construct($source, $target, ConstraintInterface $constraint = null, $description = 'relates to', $prettyConstraint = null) - { - $this->source = strtolower($source); - $this->target = strtolower($target); - $this->constraint = $constraint; - $this->description = $description; - $this->prettyConstraint = $prettyConstraint; - } - - /** - * @return string - */ - public function getDescription() - { - return $this->description; - } - - /** - * @return string - */ - public function getSource() - { - return $this->source; - } - - /** - * @return string - */ - public function getTarget() - { - return $this->target; - } - - /** - * @return ConstraintInterface|null - */ - public function getConstraint() - { - return $this->constraint; - } - - /** - * @throws \UnexpectedValueException If no pretty constraint was provided - * @return string - */ - public function getPrettyConstraint() - { - if (null === $this->prettyConstraint) { - throw new \UnexpectedValueException(sprintf('Link %s has been misconfigured and had no prettyConstraint given.', $this)); - } - - return $this->prettyConstraint; - } - - /** - * @return string - */ - public function __toString() - { - return $this->source.' '.$this->description.' '.$this->target.' ('.$this->constraint.')'; - } - - /** - * @param PackageInterface $sourcePackage - * @return string - */ - public function getPrettyString(PackageInterface $sourcePackage) - { - return $sourcePackage->getPrettyString().' '.$this->description.' '.$this->target.' '.$this->constraint->getPrettyString().''; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php deleted file mode 100644 index 33f9e2e..0000000 --- a/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\LinkConstraint; - -use Composer\Semver\Constraint\EmptyConstraint as SemverEmptyConstraint; - -trigger_error('The ' . __NAMESPACE__ . '\EmptyConstraint class is deprecated, use Composer\Semver\Constraint\EmptyConstraint instead.', E_USER_DEPRECATED); - -/** - * @deprecated use Composer\Semver\Constraint\EmptyConstraint instead - */ -class EmptyConstraint extends SemverEmptyConstraint implements LinkConstraintInterface -{ -} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php deleted file mode 100644 index b8903ea..0000000 --- a/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\LinkConstraint; - -use Composer\Semver\Constraint\ConstraintInterface; - -trigger_error('The ' . __NAMESPACE__ . '\LinkConstraintInterface interface is deprecated, use Composer\Semver\Constraint\ConstraintInterface instead.', E_USER_DEPRECATED); - -/** - * @deprecated use Composer\Semver\Constraint\ConstraintInterface instead - */ -interface LinkConstraintInterface extends ConstraintInterface -{ -} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php deleted file mode 100644 index 10a9965..0000000 --- a/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\LinkConstraint; - -use Composer\Semver\Constraint\MultiConstraint as SemverMultiConstraint; - -trigger_error('The ' . __NAMESPACE__ . '\MultiConstraint class is deprecated, use Composer\Semver\Constraint\MultiConstraint instead.', E_USER_DEPRECATED); - -/** - * @deprecated use Composer\Semver\Constraint\MultiConstraint instead - */ -class MultiConstraint extends SemverMultiConstraint implements LinkConstraintInterface -{ -} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php deleted file mode 100644 index 12d3194..0000000 --- a/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\LinkConstraint; - -use Composer\Semver\Constraint\AbstractConstraint; - -trigger_error('The ' . __NAMESPACE__ . '\SpecificConstraint abstract class is deprecated, there is no replacement for it.', E_USER_DEPRECATED); - -/** - * @deprecated use Composer\Semver\Constraint\AbstractConstraint instead - */ -abstract class SpecificConstraint extends AbstractConstraint implements LinkConstraintInterface -{ -} diff --git a/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php b/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php deleted file mode 100644 index d6b1cbe..0000000 --- a/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\LinkConstraint; - -use Composer\Semver\Constraint\Constraint; - -trigger_error('The ' . __NAMESPACE__ . '\VersionConstraint class is deprecated, use Composer\Semver\Constraint\Constraint instead.', E_USER_DEPRECATED); - -/** - * @deprecated use Composer\Semver\Constraint\Constraint instead - */ -class VersionConstraint extends Constraint implements LinkConstraintInterface -{ -} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php b/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php deleted file mode 100644 index c269afa..0000000 --- a/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php +++ /dev/null @@ -1,290 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Loader; - -use Composer\Package; -use Composer\Package\AliasPackage; -use Composer\Package\Link; -use Composer\Package\RootAliasPackage; -use Composer\Package\RootPackageInterface; -use Composer\Package\Version\VersionParser; -use Composer\Semver\VersionParser as SemverVersionParser; - -/** - * @author Konstantin Kudryashiv - * @author Jordi Boggiano - */ -class ArrayLoader implements LoaderInterface -{ - protected $versionParser; - protected $loadOptions; - - public function __construct(SemverVersionParser $parser = null, $loadOptions = false) - { - if (!$parser) { - $parser = new VersionParser; - } - $this->versionParser = $parser; - $this->loadOptions = $loadOptions; - } - - public function load(array $config, $class = 'Composer\Package\CompletePackage') - { - if (!isset($config['name'])) { - throw new \UnexpectedValueException('Unknown package has no name defined ('.json_encode($config).').'); - } - if (!isset($config['version'])) { - throw new \UnexpectedValueException('Package '.$config['name'].' has no version defined.'); - } - - // handle already normalized versions - if (isset($config['version_normalized'])) { - $version = $config['version_normalized']; - } else { - $version = $this->versionParser->normalize($config['version']); - } - $package = new $class($config['name'], $version, $config['version']); - $package->setType(isset($config['type']) ? strtolower($config['type']) : 'library'); - - if (isset($config['target-dir'])) { - $package->setTargetDir($config['target-dir']); - } - - if (isset($config['extra']) && is_array($config['extra'])) { - $package->setExtra($config['extra']); - } - - if (isset($config['bin'])) { - foreach ((array) $config['bin'] as $key => $bin) { - $config['bin'][$key] = ltrim($bin, '/'); - } - $package->setBinaries((array) $config['bin']); - } - - if (isset($config['installation-source'])) { - $package->setInstallationSource($config['installation-source']); - } - - if (isset($config['source'])) { - if (!isset($config['source']['type']) || !isset($config['source']['url']) || !isset($config['source']['reference'])) { - throw new \UnexpectedValueException(sprintf( - "Package %s's source key should be specified as {\"type\": ..., \"url\": ..., \"reference\": ...},\n%s given.", - $config['name'], - json_encode($config['source']) - )); - } - $package->setSourceType($config['source']['type']); - $package->setSourceUrl($config['source']['url']); - $package->setSourceReference(isset($config['source']['reference']) ? $config['source']['reference'] : null); - if (isset($config['source']['mirrors'])) { - $package->setSourceMirrors($config['source']['mirrors']); - } - } - - if (isset($config['dist'])) { - if (!isset($config['dist']['type']) - || !isset($config['dist']['url'])) { - throw new \UnexpectedValueException(sprintf( - "Package %s's dist key should be specified as ". - "{\"type\": ..., \"url\": ..., \"reference\": ..., \"shasum\": ...},\n%s given.", - $config['name'], - json_encode($config['dist']) - )); - } - $package->setDistType($config['dist']['type']); - $package->setDistUrl($config['dist']['url']); - $package->setDistReference(isset($config['dist']['reference']) ? $config['dist']['reference'] : null); - $package->setDistSha1Checksum(isset($config['dist']['shasum']) ? $config['dist']['shasum'] : null); - if (isset($config['dist']['mirrors'])) { - $package->setDistMirrors($config['dist']['mirrors']); - } - } - - foreach (Package\BasePackage::$supportedLinkTypes as $type => $opts) { - if (isset($config[$type])) { - $method = 'set'.ucfirst($opts['method']); - $package->{$method}( - $this->parseLinks( - $package->getName(), - $package->getPrettyVersion(), - $opts['description'], - $config[$type] - ) - ); - } - } - - if (isset($config['suggest']) && is_array($config['suggest'])) { - foreach ($config['suggest'] as $target => $reason) { - if ('self.version' === trim($reason)) { - $config['suggest'][$target] = $package->getPrettyVersion(); - } - } - $package->setSuggests($config['suggest']); - } - - if (isset($config['autoload'])) { - $package->setAutoload($config['autoload']); - } - - if (isset($config['autoload-dev'])) { - $package->setDevAutoload($config['autoload-dev']); - } - - if (isset($config['include-path'])) { - $package->setIncludePaths($config['include-path']); - } - - if (!empty($config['time'])) { - $time = preg_match('/^\d++$/D', $config['time']) ? '@'.$config['time'] : $config['time']; - - try { - $date = new \DateTime($time, new \DateTimeZone('UTC')); - $package->setReleaseDate($date); - } catch (\Exception $e) { - } - } - - if (!empty($config['notification-url'])) { - $package->setNotificationUrl($config['notification-url']); - } - - if (!empty($config['archive']['exclude'])) { - $package->setArchiveExcludes($config['archive']['exclude']); - } - - if ($package instanceof Package\CompletePackageInterface) { - if (isset($config['scripts']) && is_array($config['scripts'])) { - foreach ($config['scripts'] as $event => $listeners) { - $config['scripts'][$event] = (array) $listeners; - } - if (isset($config['scripts']['composer'])) { - trigger_error('The `composer` script name is reserved for internal use, please avoid defining it', E_USER_DEPRECATED); - } - $package->setScripts($config['scripts']); - } - - if (!empty($config['description']) && is_string($config['description'])) { - $package->setDescription($config['description']); - } - - if (!empty($config['homepage']) && is_string($config['homepage'])) { - $package->setHomepage($config['homepage']); - } - - if (!empty($config['keywords']) && is_array($config['keywords'])) { - $package->setKeywords($config['keywords']); - } - - if (!empty($config['license'])) { - $package->setLicense(is_array($config['license']) ? $config['license'] : array($config['license'])); - } - - if (!empty($config['authors']) && is_array($config['authors'])) { - $package->setAuthors($config['authors']); - } - - if (isset($config['support'])) { - $package->setSupport($config['support']); - } - - if (isset($config['abandoned'])) { - $package->setAbandoned($config['abandoned']); - } - } - - if ($aliasNormalized = $this->getBranchAlias($config)) { - if ($package instanceof RootPackageInterface) { - $package = new RootAliasPackage($package, $aliasNormalized, preg_replace('{(\.9{7})+}', '.x', $aliasNormalized)); - } else { - $package = new AliasPackage($package, $aliasNormalized, preg_replace('{(\.9{7})+}', '.x', $aliasNormalized)); - } - } - - if ($this->loadOptions && isset($config['transport-options'])) { - $package->setTransportOptions($config['transport-options']); - } - - return $package; - } - - /** - * @param string $source source package name - * @param string $sourceVersion source package version (pretty version ideally) - * @param string $description link description (e.g. requires, replaces, ..) - * @param array $links array of package name => constraint mappings - * @return Link[] - */ - public function parseLinks($source, $sourceVersion, $description, $links) - { - $res = array(); - foreach ($links as $target => $constraint) { - if (!is_string($constraint)) { - throw new \UnexpectedValueException('Link constraint in '.$source.' '.$description.' > '.$target.' should be a string, got '.gettype($constraint) . ' (' . var_export($constraint, true) . ')'); - } - if ('self.version' === $constraint) { - $parsedConstraint = $this->versionParser->parseConstraints($sourceVersion); - } else { - $parsedConstraint = $this->versionParser->parseConstraints($constraint); - } - - $res[strtolower($target)] = new Link($source, $target, $parsedConstraint, $description, $constraint); - } - - return $res; - } - - /** - * Retrieves a branch alias (dev-master => 1.0.x-dev for example) if it exists - * - * @param array $config the entire package config - * @return string|null normalized version of the branch alias or null if there is none - */ - public function getBranchAlias(array $config) - { - if (('dev-' !== substr($config['version'], 0, 4) && '-dev' !== substr($config['version'], -4)) - || !isset($config['extra']['branch-alias']) - || !is_array($config['extra']['branch-alias']) - ) { - return; - } - - foreach ($config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { - // ensure it is an alias to a -dev package - if ('-dev' !== substr($targetBranch, -4)) { - continue; - } - - // normalize without -dev and ensure it's a numeric branch that is parseable - $validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); - if ('-dev' !== substr($validatedTargetBranch, -4)) { - continue; - } - - // ensure that it is the current branch aliasing itself - if (strtolower($config['version']) !== strtolower($sourceBranch)) { - continue; - } - - // If using numeric aliases ensure the alias is a valid subversion - if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) - && ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) - && (stripos($targetPrefix, $sourcePrefix) !== 0) - ) { - continue; - } - - return $validatedTargetBranch; - } - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php b/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php deleted file mode 100644 index 2f0c845..0000000 --- a/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php +++ /dev/null @@ -1,46 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Loader; - -/** - * @author Jordi Boggiano - */ -class InvalidPackageException extends \Exception -{ - private $errors; - private $warnings; - private $data; - - public function __construct(array $errors, array $warnings, array $data) - { - $this->errors = $errors; - $this->warnings = $warnings; - $this->data = $data; - parent::__construct("Invalid package information: \n".implode("\n", array_merge($errors, $warnings))); - } - - public function getData() - { - return $this->data; - } - - public function getErrors() - { - return $this->errors; - } - - public function getWarnings() - { - return $this->warnings; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php b/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php deleted file mode 100644 index a693e70..0000000 --- a/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php +++ /dev/null @@ -1,45 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Loader; - -use Composer\Json\JsonFile; - -/** - * @author Konstantin Kudryashiv - */ -class JsonLoader -{ - private $loader; - - public function __construct(LoaderInterface $loader) - { - $this->loader = $loader; - } - - /** - * @param string|JsonFile $json A filename, json string or JsonFile instance to load the package from - * @return \Composer\Package\PackageInterface - */ - public function load($json) - { - if ($json instanceof JsonFile) { - $config = $json->read(); - } elseif (file_exists($json)) { - $config = JsonFile::parseJson(file_get_contents($json), $json); - } elseif (is_string($json)) { - $config = JsonFile::parseJson($json); - } - - return $this->loader->load($config); - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php b/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php deleted file mode 100644 index 295ddf9..0000000 --- a/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Loader; - -/** - * Defines a loader that takes an array to create package instances - * - * @author Jordi Boggiano - */ -interface LoaderInterface -{ - /** - * Converts a package from an array to a real instance - * - * @param array $package Package config - * @param string $class Package class to use - * @return \Composer\Package\PackageInterface - */ - public function load(array $package, $class = 'Composer\Package\CompletePackage'); -} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php b/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php deleted file mode 100644 index 84e99a8..0000000 --- a/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php +++ /dev/null @@ -1,264 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Loader; - -use Composer\Package\BasePackage; -use Composer\Package\AliasPackage; -use Composer\Config; -use Composer\IO\IOInterface; -use Composer\Package\RootPackageInterface; -use Composer\Repository\RepositoryFactory; -use Composer\Package\Version\VersionGuesser; -use Composer\Package\Version\VersionParser; -use Composer\Repository\RepositoryManager; -use Composer\Util\ProcessExecutor; - -/** - * ArrayLoader built for the sole purpose of loading the root package - * - * Sets additional defaults and loads repositories - * - * @author Jordi Boggiano - */ -class RootPackageLoader extends ArrayLoader -{ - /** - * @var RepositoryManager - */ - private $manager; - - /** - * @var Config - */ - private $config; - - /** - * @var VersionGuesser - */ - private $versionGuesser; - - /** - * @var IOInterface - */ - private $io; - - public function __construct(RepositoryManager $manager, Config $config, VersionParser $parser = null, VersionGuesser $versionGuesser = null, IOInterface $io = null) - { - parent::__construct($parser); - - $this->manager = $manager; - $this->config = $config; - $this->versionGuesser = $versionGuesser ?: new VersionGuesser($config, new ProcessExecutor(), $this->versionParser); - $this->io = $io; - } - - /** - * @param array $config package data - * @param string $class FQCN to be instantiated - * @param string $cwd cwd of the root package to be used to guess the version if it is not provided - * @return RootPackageInterface - */ - public function load(array $config, $class = 'Composer\Package\RootPackage', $cwd = null) - { - if (!isset($config['name'])) { - $config['name'] = '__root__'; - } elseif ($this->io) { - if ($err = ValidatingArrayLoader::hasPackageNamingError($config['name'])) { - $this->io->writeError('Deprecation warning: Your package name '.$err.' Make sure you fix this as Composer 2.0 will error.'); - } - } - $autoVersioned = false; - if (!isset($config['version'])) { - $commit = null; - - // override with env var if available - if (getenv('COMPOSER_ROOT_VERSION')) { - $config['version'] = getenv('COMPOSER_ROOT_VERSION'); - } else { - $versionData = $this->versionGuesser->guessVersion($config, $cwd ?: getcwd()); - if ($versionData) { - $config['version'] = $versionData['pretty_version']; - $config['version_normalized'] = $versionData['version']; - $commit = $versionData['commit']; - } - } - - if (!isset($config['version'])) { - $config['version'] = '1.0.0'; - $autoVersioned = true; - } - - if ($commit) { - $config['source'] = array( - 'type' => '', - 'url' => '', - 'reference' => $commit, - ); - $config['dist'] = array( - 'type' => '', - 'url' => '', - 'reference' => $commit, - ); - } - } - - $realPackage = $package = parent::load($config, $class); - if ($realPackage instanceof AliasPackage) { - $realPackage = $package->getAliasOf(); - } - - if ($autoVersioned) { - $realPackage->replaceVersion($realPackage->getVersion(), 'No version set (parsed as 1.0.0)'); - } - - if (isset($config['minimum-stability'])) { - $realPackage->setMinimumStability(VersionParser::normalizeStability($config['minimum-stability'])); - } - - $aliases = array(); - $stabilityFlags = array(); - $references = array(); - foreach (array('require', 'require-dev') as $linkType) { - if (isset($config[$linkType])) { - $linkInfo = BasePackage::$supportedLinkTypes[$linkType]; - $method = 'get'.ucfirst($linkInfo['method']); - $links = array(); - foreach ($realPackage->$method() as $link) { - $links[$link->getTarget()] = $link->getConstraint()->getPrettyString(); - } - $aliases = $this->extractAliases($links, $aliases); - $stabilityFlags = $this->extractStabilityFlags($links, $stabilityFlags, $realPackage->getMinimumStability()); - $references = $this->extractReferences($links, $references); - } - } - - if ($this->io) { - foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { - if (isset($config[$linkType])) { - foreach ($config[$linkType] as $linkName => $constraint) { - if ($err = ValidatingArrayLoader::hasPackageNamingError($linkName, true)) { - $this->io->writeError('Deprecation warning: '.$linkType.'.'.$err.' Make sure you fix this as Composer 2.0 will error.'); - } - } - } - } - } - - if (isset($links[$config['name']])) { - throw new \InvalidArgumentException(sprintf('Root package \'%s\' cannot require itself in its composer.json' . PHP_EOL . - 'Did you accidentally name your root package after an external package?', $config['name'])); - } - - $realPackage->setAliases($aliases); - $realPackage->setStabilityFlags($stabilityFlags); - $realPackage->setReferences($references); - - if (isset($config['prefer-stable'])) { - $realPackage->setPreferStable((bool) $config['prefer-stable']); - } - - if (isset($config['config'])) { - $realPackage->setConfig($config['config']); - } - - $repos = RepositoryFactory::defaultRepos(null, $this->config, $this->manager); - foreach ($repos as $repo) { - $this->manager->addRepository($repo); - } - $realPackage->setRepositories($this->config->getRepositories()); - - return $package; - } - - private function extractAliases(array $requires, array $aliases) - { - foreach ($requires as $reqName => $reqVersion) { - if (preg_match('{^([^,\s#]+)(?:#[^ ]+)? +as +([^,\s]+)$}', $reqVersion, $match)) { - $aliases[] = array( - 'package' => strtolower($reqName), - 'version' => $this->versionParser->normalize($match[1], $reqVersion), - 'alias' => $match[2], - 'alias_normalized' => $this->versionParser->normalize($match[2], $reqVersion), - ); - } - } - - return $aliases; - } - - private function extractStabilityFlags(array $requires, array $stabilityFlags, $minimumStability) - { - $stabilities = BasePackage::$stabilities; - $minimumStability = $stabilities[$minimumStability]; - foreach ($requires as $reqName => $reqVersion) { - $constraints = array(); - - // extract all sub-constraints in case it is an OR/AND multi-constraint - $orSplit = preg_split('{\s*\|\|?\s*}', trim($reqVersion)); - foreach ($orSplit as $orConstraint) { - $andSplit = preg_split('{(?< ,]) *(? $stability) { - continue; - } - $stabilityFlags[$name] = $stability; - $match = true; - } - } - - if ($match) { - continue; - } - - foreach ($constraints as $constraint) { - // infer flags for requirements that have an explicit -dev or -beta version specified but only - // for those that are more unstable than the minimumStability or existing flags - $reqVersion = preg_replace('{^([^,\s@]+) as .+$}', '$1', $constraint); - if (preg_match('{^[^,\s@]+$}', $reqVersion) && 'stable' !== ($stabilityName = VersionParser::parseStability($reqVersion))) { - $name = strtolower($reqName); - $stability = $stabilities[$stabilityName]; - if ((isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) || ($minimumStability > $stability)) { - continue; - } - $stabilityFlags[$name] = $stability; - } - } - } - - return $stabilityFlags; - } - - private function extractReferences(array $requires, array $references) - { - foreach ($requires as $reqName => $reqVersion) { - $reqVersion = preg_replace('{^([^,\s@]+) as .+$}', '$1', $reqVersion); - if (preg_match('{^[^,\s@]+?#([a-f0-9]+)$}', $reqVersion, $match) && 'dev' === VersionParser::parseStability($reqVersion)) { - $name = strtolower($reqName); - $references[$name] = $match[1]; - } - } - - return $references; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php b/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php deleted file mode 100644 index 43f2323..0000000 --- a/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php +++ /dev/null @@ -1,499 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Loader; - -use Composer\Package\BasePackage; -use Composer\Semver\Constraint\Constraint; -use Composer\Package\Version\VersionParser; -use Composer\Repository\PlatformRepository; -use Composer\Spdx\SpdxLicenses; - -/** - * @author Jordi Boggiano - */ -class ValidatingArrayLoader implements LoaderInterface -{ - const CHECK_ALL = 3; - const CHECK_UNBOUND_CONSTRAINTS = 1; - const CHECK_STRICT_CONSTRAINTS = 2; - - private $loader; - private $versionParser; - private $errors; - private $warnings; - private $config; - private $strictName; - private $flags; - - public function __construct(LoaderInterface $loader, $strictName = true, VersionParser $parser = null, $flags = 0) - { - $this->loader = $loader; - $this->versionParser = $parser ?: new VersionParser(); - $this->strictName = $strictName; - $this->flags = $flags; - } - - public function load(array $config, $class = 'Composer\Package\CompletePackage') - { - $this->errors = array(); - $this->warnings = array(); - $this->config = $config; - - if ($err = self::hasPackageNamingError($config['name'])) { - $this->warnings[] = 'Deprecation warning: Your package name '.$err.' Make sure you fix this as Composer 2.0 will error.'; - } - - if ($this->strictName) { - $this->validateRegex('name', '[A-Za-z0-9][A-Za-z0-9_.-]*/[A-Za-z0-9][A-Za-z0-9_.-]*', true); - } else { - $this->validateString('name', true); - } - - if (!empty($this->config['version'])) { - try { - $this->versionParser->normalize($this->config['version']); - } catch (\Exception $e) { - $this->errors[] = 'version : invalid value ('.$this->config['version'].'): '.$e->getMessage(); - unset($this->config['version']); - } - } - - if (!empty($this->config['config']['platform'])) { - foreach ((array) $this->config['config']['platform'] as $key => $platform) { - try { - $this->versionParser->normalize($platform); - } catch (\Exception $e) { - $this->errors[] = 'config.platform.' . $key . ' : invalid value ('.$platform.'): '.$e->getMessage(); - } - } - } - - $this->validateRegex('type', '[A-Za-z0-9-]+'); - $this->validateString('target-dir'); - $this->validateArray('extra'); - - if (isset($this->config['bin'])) { - if (is_string($this->config['bin'])) { - $this->validateString('bin'); - } else { - $this->validateFlatArray('bin'); - } - } - - $this->validateArray('scripts'); // TODO validate event names & listener syntax - $this->validateString('description'); - $this->validateUrl('homepage'); - $this->validateFlatArray('keywords', '[\p{N}\p{L} ._-]+'); - - $releaseDate = null; - $this->validateString('time'); - if (!empty($this->config['time'])) { - try { - $releaseDate = new \DateTime($this->config['time'], new \DateTimeZone('UTC')); - } catch (\Exception $e) { - $this->errors[] = 'time : invalid value ('.$this->config['time'].'): '.$e->getMessage(); - unset($this->config['time']); - } - } - - // check for license validity on newly updated branches - if (isset($this->config['license']) && (!$releaseDate || $releaseDate->getTimestamp() >= strtotime('-8days'))) { - if (is_array($this->config['license']) || is_string($this->config['license'])) { - $licenses = (array) $this->config['license']; - - // strip proprietary since it's not a valid SPDX identifier, but is accepted by composer - foreach ($licenses as $key => $license) { - if ('proprietary' === $license) { - unset($licenses[$key]); - } - } - - $licenseValidator = new SpdxLicenses(); - if (count($licenses) === 1 && !$licenseValidator->validate($licenses) && $licenseValidator->validate(trim($licenses[0]))) { - $this->warnings[] = sprintf( - 'License %s must not contain extra spaces, make sure to trim it.', - json_encode($this->config['license']) - ); - } elseif (array() !== $licenses && !$licenseValidator->validate($licenses)) { - $this->warnings[] = sprintf( - 'License %s is not a valid SPDX license identifier, see https://spdx.org/licenses/ if you use an open license.' . PHP_EOL . - 'If the software is closed-source, you may use "proprietary" as license.', - json_encode($this->config['license']) - ); - } - } - } - - if ($this->validateArray('authors') && !empty($this->config['authors'])) { - foreach ($this->config['authors'] as $key => $author) { - if (!is_array($author)) { - $this->errors[] = 'authors.'.$key.' : should be an array, '.gettype($author).' given'; - unset($this->config['authors'][$key]); - continue; - } - foreach (array('homepage', 'email', 'name', 'role') as $authorData) { - if (isset($author[$authorData]) && !is_string($author[$authorData])) { - $this->errors[] = 'authors.'.$key.'.'.$authorData.' : invalid value, must be a string'; - unset($this->config['authors'][$key][$authorData]); - } - } - if (isset($author['homepage']) && !$this->filterUrl($author['homepage'])) { - $this->warnings[] = 'authors.'.$key.'.homepage : invalid value ('.$author['homepage'].'), must be an http/https URL'; - unset($this->config['authors'][$key]['homepage']); - } - if (isset($author['email']) && !filter_var($author['email'], FILTER_VALIDATE_EMAIL)) { - $this->warnings[] = 'authors.'.$key.'.email : invalid value ('.$author['email'].'), must be a valid email address'; - unset($this->config['authors'][$key]['email']); - } - if (empty($this->config['authors'][$key])) { - unset($this->config['authors'][$key]); - } - } - if (empty($this->config['authors'])) { - unset($this->config['authors']); - } - } - - if ($this->validateArray('support') && !empty($this->config['support'])) { - foreach (array('issues', 'forum', 'wiki', 'source', 'email', 'irc', 'docs', 'rss', 'chat') as $key) { - if (isset($this->config['support'][$key]) && !is_string($this->config['support'][$key])) { - $this->errors[] = 'support.'.$key.' : invalid value, must be a string'; - unset($this->config['support'][$key]); - } - } - - if (isset($this->config['support']['email']) && !filter_var($this->config['support']['email'], FILTER_VALIDATE_EMAIL)) { - $this->warnings[] = 'support.email : invalid value ('.$this->config['support']['email'].'), must be a valid email address'; - unset($this->config['support']['email']); - } - - if (isset($this->config['support']['irc']) && !$this->filterUrl($this->config['support']['irc'], array('irc'))) { - $this->warnings[] = 'support.irc : invalid value ('.$this->config['support']['irc'].'), must be a irc:/// URL'; - unset($this->config['support']['irc']); - } - - foreach (array('issues', 'forum', 'wiki', 'source', 'docs', 'chat') as $key) { - if (isset($this->config['support'][$key]) && !$this->filterUrl($this->config['support'][$key])) { - $this->warnings[] = 'support.'.$key.' : invalid value ('.$this->config['support'][$key].'), must be an http/https URL'; - unset($this->config['support'][$key]); - } - } - if (empty($this->config['support'])) { - unset($this->config['support']); - } - } - - $unboundConstraint = new Constraint('=', $this->versionParser->normalize('dev-master')); - $stableConstraint = new Constraint('=', '1.0.0'); - - foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { - if ($this->validateArray($linkType) && isset($this->config[$linkType])) { - foreach ($this->config[$linkType] as $package => $constraint) { - if ($err = self::hasPackageNamingError($package, true)) { - $this->warnings[] = 'Deprecation warning: '.$linkType.'.'.$err.' Make sure you fix this as Composer 2.0 will error.'; - } elseif (!preg_match('{^[A-Za-z0-9_./-]+$}', $package)) { - $this->warnings[] = $linkType.'.'.$package.' : invalid key, package names must be strings containing only [A-Za-z0-9_./-]'; - } - if (!is_string($constraint)) { - $this->errors[] = $linkType.'.'.$package.' : invalid value, must be a string containing a version constraint'; - unset($this->config[$linkType][$package]); - } elseif ('self.version' !== $constraint) { - try { - $linkConstraint = $this->versionParser->parseConstraints($constraint); - } catch (\Exception $e) { - $this->errors[] = $linkType.'.'.$package.' : invalid version constraint ('.$e->getMessage().')'; - unset($this->config[$linkType][$package]); - continue; - } - - // check requires for unbound constraints on non-platform packages - if ( - ($this->flags & self::CHECK_UNBOUND_CONSTRAINTS) - && 'require' === $linkType - && $linkConstraint->matches($unboundConstraint) - && !preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $package) - ) { - $this->warnings[] = $linkType.'.'.$package.' : unbound version constraints ('.$constraint.') should be avoided'; - } elseif ( - // check requires for exact constraints - ($this->flags & self::CHECK_STRICT_CONSTRAINTS) - && 'require' === $linkType - && substr($linkConstraint, 0, 1) === '=' - && $stableConstraint->versionCompare($stableConstraint, $linkConstraint, '<=') - ) { - $this->warnings[] = $linkType.'.'.$package.' : exact version constraints ('.$constraint.') should be avoided if the package follows semantic versioning'; - } - } - } - } - } - - if ($this->validateArray('suggest') && !empty($this->config['suggest'])) { - foreach ($this->config['suggest'] as $package => $description) { - if (!is_string($description)) { - $this->errors[] = 'suggest.'.$package.' : invalid value, must be a string describing why the package is suggested'; - unset($this->config['suggest'][$package]); - } - } - } - - if ($this->validateString('minimum-stability') && !empty($this->config['minimum-stability'])) { - if (!isset(BasePackage::$stabilities[$this->config['minimum-stability']])) { - $this->errors[] = 'minimum-stability : invalid value ('.$this->config['minimum-stability'].'), must be one of '.implode(', ', array_keys(BasePackage::$stabilities)); - unset($this->config['minimum-stability']); - } - } - - if ($this->validateArray('autoload') && !empty($this->config['autoload'])) { - $types = array('psr-0', 'psr-4', 'classmap', 'files', 'exclude-from-classmap'); - foreach ($this->config['autoload'] as $type => $typeConfig) { - if (!in_array($type, $types)) { - $this->errors[] = 'autoload : invalid value ('.$type.'), must be one of '.implode(', ', $types); - unset($this->config['autoload'][$type]); - } - if ($type === 'psr-4') { - foreach ($typeConfig as $namespace => $dirs) { - if ($namespace !== '' && '\\' !== substr($namespace, -1)) { - $this->errors[] = 'autoload.psr-4 : invalid value ('.$namespace.'), namespaces must end with a namespace separator, should be '.$namespace.'\\\\'; - } - } - } - } - } - - if (!empty($this->config['autoload']['psr-4']) && !empty($this->config['target-dir'])) { - $this->errors[] = 'target-dir : this can not be used together with the autoload.psr-4 setting, remove target-dir to upgrade to psr-4'; - // Unset the psr-4 setting, since unsetting target-dir might - // interfere with other settings. - unset($this->config['autoload']['psr-4']); - } - - // TODO validate dist - // TODO validate source - - // TODO validate repositories - // TODO validate package repositories' packages using this recursively - - $this->validateFlatArray('include-path'); - $this->validateArray('transport-options'); - - // branch alias validation - if (isset($this->config['extra']['branch-alias'])) { - if (!is_array($this->config['extra']['branch-alias'])) { - $this->errors[] = 'extra.branch-alias : must be an array of versions => aliases'; - } else { - foreach ($this->config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { - // ensure it is an alias to a -dev package - if ('-dev' !== substr($targetBranch, -4)) { - $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must end in -dev'; - unset($this->config['extra']['branch-alias'][$sourceBranch]); - - continue; - } - - // normalize without -dev and ensure it's a numeric branch that is parseable - $validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); - if ('-dev' !== substr($validatedTargetBranch, -4)) { - $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must be a parseable number like 2.0-dev'; - unset($this->config['extra']['branch-alias'][$sourceBranch]); - - continue; - } - - // If using numeric aliases ensure the alias is a valid subversion - if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) - && ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) - && (stripos($targetPrefix, $sourcePrefix) !== 0) - ) { - $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') is not a valid numeric alias for this version'; - unset($this->config['extra']['branch-alias'][$sourceBranch]); - } - } - } - } - - if ($this->errors) { - throw new InvalidPackageException($this->errors, $this->warnings, $config); - } - - $package = $this->loader->load($this->config, $class); - $this->config = null; - - return $package; - } - - public function getWarnings() - { - return $this->warnings; - } - - public function getErrors() - { - return $this->errors; - } - - public static function hasPackageNamingError($name, $isLink = false) - { - if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) { - return; - } - - if (!preg_match('{^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9]([_.-]?[a-z0-9]+)*$}iD', $name)) { - return $name.' is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9]([_.-]?[a-z0-9]+)*".'; - } - - $reservedNames = array('nul', 'con', 'prn', 'aux', 'com1', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9', 'lpt1', 'lpt2', 'lpt3', 'lpt4', 'lpt5', 'lpt6', 'lpt7', 'lpt8', 'lpt9'); - $bits = explode('/', strtolower($name)); - if (in_array($bits[0], $reservedNames, true) || in_array($bits[1], $reservedNames, true)) { - return $name.' is reserved, package and vendor names can not match any of: '.implode(', ', $reservedNames).'.'; - } - - if (preg_match('{\.json$}', $name)) { - return $name.' is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.'; - } - - if (preg_match('{[A-Z]}', $name)) { - if ($isLink) { - return $name.' is invalid, it should not contain uppercase characters. Please use '.strtolower($name).' instead.'; - } - - $suggestName = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); - $suggestName = strtolower($suggestName); - - return $name.' is invalid, it should not contain uppercase characters. We suggest using '.$suggestName.' instead.'; - } - } - - private function validateRegex($property, $regex, $mandatory = false) - { - if (!$this->validateString($property, $mandatory)) { - return false; - } - - if (!preg_match('{^'.$regex.'$}u', $this->config[$property])) { - $message = $property.' : invalid value ('.$this->config[$property].'), must match '.$regex; - if ($mandatory) { - $this->errors[] = $message; - } else { - $this->warnings[] = $message; - } - unset($this->config[$property]); - - return false; - } - - return true; - } - - private function validateString($property, $mandatory = false) - { - if (isset($this->config[$property]) && !is_string($this->config[$property])) { - $this->errors[] = $property.' : should be a string, '.gettype($this->config[$property]).' given'; - unset($this->config[$property]); - - return false; - } - - if (!isset($this->config[$property]) || trim($this->config[$property]) === '') { - if ($mandatory) { - $this->errors[] = $property.' : must be present'; - } - unset($this->config[$property]); - - return false; - } - - return true; - } - - private function validateArray($property, $mandatory = false) - { - if (isset($this->config[$property]) && !is_array($this->config[$property])) { - $this->errors[] = $property.' : should be an array, '.gettype($this->config[$property]).' given'; - unset($this->config[$property]); - - return false; - } - - if (!isset($this->config[$property]) || !count($this->config[$property])) { - if ($mandatory) { - $this->errors[] = $property.' : must be present and contain at least one element'; - } - unset($this->config[$property]); - - return false; - } - - return true; - } - - private function validateFlatArray($property, $regex = null, $mandatory = false) - { - if (!$this->validateArray($property, $mandatory)) { - return false; - } - - $pass = true; - foreach ($this->config[$property] as $key => $value) { - if (!is_string($value) && !is_numeric($value)) { - $this->errors[] = $property.'.'.$key.' : must be a string or int, '.gettype($value).' given'; - unset($this->config[$property][$key]); - $pass = false; - - continue; - } - - if ($regex && !preg_match('{^'.$regex.'$}u', $value)) { - $this->warnings[] = $property.'.'.$key.' : invalid value ('.$value.'), must match '.$regex; - unset($this->config[$property][$key]); - $pass = false; - } - } - - return $pass; - } - - private function validateUrl($property, $mandatory = false) - { - if (!$this->validateString($property, $mandatory)) { - return false; - } - - if (!$this->filterUrl($this->config[$property])) { - $this->warnings[] = $property.' : invalid value ('.$this->config[$property].'), must be an http/https URL'; - unset($this->config[$property]); - - return false; - } - - return true; - } - - private function filterUrl($value, array $schemes = array('http', 'https')) - { - if ($value === '') { - return true; - } - - $bits = parse_url($value); - if (empty($bits['scheme']) || empty($bits['host'])) { - return false; - } - - if (!in_array($bits['scheme'], $schemes, true)) { - return false; - } - - return true; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Locker.php b/vendor/composer/composer/src/Composer/Package/Locker.php deleted file mode 100644 index 57ec742..0000000 --- a/vendor/composer/composer/src/Composer/Package/Locker.php +++ /dev/null @@ -1,438 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -use Composer\Json\JsonFile; -use Composer\Installer\InstallationManager; -use Composer\Repository\RepositoryManager; -use Composer\Util\ProcessExecutor; -use Composer\Repository\ArrayRepository; -use Composer\Package\Dumper\ArrayDumper; -use Composer\Package\Loader\ArrayLoader; -use Composer\Util\Git as GitUtil; -use Composer\IO\IOInterface; -use Seld\JsonLint\ParsingException; - -/** - * Reads/writes project lockfile (composer.lock). - * - * @author Konstantin Kudryashiv - * @author Jordi Boggiano - */ -class Locker -{ - private $lockFile; - private $repositoryManager; - private $installationManager; - private $hash; - private $contentHash; - private $loader; - private $dumper; - private $process; - private $lockDataCache; - - /** - * Initializes packages locker. - * - * @param IOInterface $io - * @param JsonFile $lockFile lockfile loader - * @param RepositoryManager $repositoryManager repository manager instance - * @param InstallationManager $installationManager installation manager instance - * @param string $composerFileContents The contents of the composer file - */ - public function __construct(IOInterface $io, JsonFile $lockFile, RepositoryManager $repositoryManager, InstallationManager $installationManager, $composerFileContents) - { - $this->lockFile = $lockFile; - $this->repositoryManager = $repositoryManager; - $this->installationManager = $installationManager; - $this->hash = md5($composerFileContents); - $this->contentHash = self::getContentHash($composerFileContents); - $this->loader = new ArrayLoader(null, true); - $this->dumper = new ArrayDumper(); - $this->process = new ProcessExecutor($io); - } - - /** - * Returns the md5 hash of the sorted content of the composer file. - * - * @param string $composerFileContents The contents of the composer file. - * - * @return string - */ - public static function getContentHash($composerFileContents) - { - $content = json_decode($composerFileContents, true); - - $relevantKeys = array( - 'name', - 'version', - 'require', - 'require-dev', - 'conflict', - 'replace', - 'provide', - 'minimum-stability', - 'prefer-stable', - 'repositories', - 'extra', - ); - - $relevantContent = array(); - - foreach (array_intersect($relevantKeys, array_keys($content)) as $key) { - $relevantContent[$key] = $content[$key]; - } - if (isset($content['config']['platform'])) { - $relevantContent['config']['platform'] = $content['config']['platform']; - } - - ksort($relevantContent); - - return md5(json_encode($relevantContent)); - } - - /** - * Checks whether locker has been locked (lockfile found). - * - * @return bool - */ - public function isLocked() - { - if (!$this->lockFile->exists()) { - return false; - } - - $data = $this->getLockData(); - - return isset($data['packages']); - } - - /** - * Checks whether the lock file is still up to date with the current hash - * - * @return bool - */ - public function isFresh() - { - $lock = $this->lockFile->read(); - - if (!empty($lock['content-hash'])) { - // There is a content hash key, use that instead of the file hash - return $this->contentHash === $lock['content-hash']; - } - - // BC support for old lock files without content-hash - if (!empty($lock['hash'])) { - return $this->hash === $lock['hash']; - } - - // should not be reached unless the lock file is corrupted, so assume it's out of date - return false; - } - - /** - * Searches and returns an array of locked packages, retrieved from registered repositories. - * - * @param bool $withDevReqs true to retrieve the locked dev packages - * @throws \RuntimeException - * @return \Composer\Repository\RepositoryInterface - */ - public function getLockedRepository($withDevReqs = false) - { - $lockData = $this->getLockData(); - $packages = new ArrayRepository(); - - $lockedPackages = $lockData['packages']; - if ($withDevReqs) { - if (isset($lockData['packages-dev'])) { - $lockedPackages = array_merge($lockedPackages, $lockData['packages-dev']); - } else { - throw new \RuntimeException('The lock file does not contain require-dev information, run install with the --no-dev option or run update to install those packages.'); - } - } - - if (empty($lockedPackages)) { - return $packages; - } - - if (isset($lockedPackages[0]['name'])) { - foreach ($lockedPackages as $info) { - $packages->addPackage($this->loader->load($info)); - } - - return $packages; - } - - throw new \RuntimeException('Your composer.lock was created before 2012-09-15, and is not supported anymore. Run "composer update" to generate a new one.'); - } - - /** - * Returns the platform requirements stored in the lock file - * - * @param bool $withDevReqs if true, the platform requirements from the require-dev block are also returned - * @return \Composer\Package\Link[] - */ - public function getPlatformRequirements($withDevReqs = false) - { - $lockData = $this->getLockData(); - $requirements = array(); - - if (!empty($lockData['platform'])) { - $requirements = $this->loader->parseLinks( - '__ROOT__', - '1.0.0', - 'requires', - isset($lockData['platform']) ? $lockData['platform'] : array() - ); - } - - if ($withDevReqs && !empty($lockData['platform-dev'])) { - $devRequirements = $this->loader->parseLinks( - '__ROOT__', - '1.0.0', - 'requires', - isset($lockData['platform-dev']) ? $lockData['platform-dev'] : array() - ); - - $requirements = array_merge($requirements, $devRequirements); - } - - return $requirements; - } - - public function getMinimumStability() - { - $lockData = $this->getLockData(); - - return isset($lockData['minimum-stability']) ? $lockData['minimum-stability'] : 'stable'; - } - - public function getStabilityFlags() - { - $lockData = $this->getLockData(); - - return isset($lockData['stability-flags']) ? $lockData['stability-flags'] : array(); - } - - public function getPreferStable() - { - $lockData = $this->getLockData(); - - // return null if not set to allow caller logic to choose the - // right behavior since old lock files have no prefer-stable - return isset($lockData['prefer-stable']) ? $lockData['prefer-stable'] : null; - } - - public function getPreferLowest() - { - $lockData = $this->getLockData(); - - // return null if not set to allow caller logic to choose the - // right behavior since old lock files have no prefer-lowest - return isset($lockData['prefer-lowest']) ? $lockData['prefer-lowest'] : null; - } - - public function getPlatformOverrides() - { - $lockData = $this->getLockData(); - - return isset($lockData['platform-overrides']) ? $lockData['platform-overrides'] : array(); - } - - public function getAliases() - { - $lockData = $this->getLockData(); - - return isset($lockData['aliases']) ? $lockData['aliases'] : array(); - } - - public function getLockData() - { - if (null !== $this->lockDataCache) { - return $this->lockDataCache; - } - - if (!$this->lockFile->exists()) { - throw new \LogicException('No lockfile found. Unable to read locked packages'); - } - - return $this->lockDataCache = $this->lockFile->read(); - } - - /** - * Locks provided data into lockfile. - * - * @param array $packages array of packages - * @param mixed $devPackages array of dev packages or null if installed without --dev - * @param array $platformReqs array of package name => constraint for required platform packages - * @param mixed $platformDevReqs array of package name => constraint for dev-required platform packages - * @param array $aliases array of aliases - * @param string $minimumStability - * @param array $stabilityFlags - * @param bool $preferStable - * @param bool $preferLowest - * @param array $platformOverrides - * - * @return bool - */ - public function setLockData(array $packages, $devPackages, array $platformReqs, $platformDevReqs, array $aliases, $minimumStability, array $stabilityFlags, $preferStable, $preferLowest, array $platformOverrides) - { - $lock = array( - '_readme' => array('This file locks the dependencies of your project to a known state', - 'Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies', - 'This file is @gener'.'ated automatically', ), - 'content-hash' => $this->contentHash, - 'packages' => null, - 'packages-dev' => null, - 'aliases' => array(), - 'minimum-stability' => $minimumStability, - 'stability-flags' => $stabilityFlags, - 'prefer-stable' => $preferStable, - 'prefer-lowest' => $preferLowest, - ); - - foreach ($aliases as $package => $versions) { - foreach ($versions as $version => $alias) { - $lock['aliases'][] = array( - 'alias' => $alias['alias'], - 'alias_normalized' => $alias['alias_normalized'], - 'version' => $version, - 'package' => $package, - ); - } - } - - $lock['packages'] = $this->lockPackages($packages); - if (null !== $devPackages) { - $lock['packages-dev'] = $this->lockPackages($devPackages); - } - - $lock['platform'] = $platformReqs; - $lock['platform-dev'] = $platformDevReqs; - if ($platformOverrides) { - $lock['platform-overrides'] = $platformOverrides; - } - - if (empty($lock['packages']) && empty($lock['packages-dev']) && empty($lock['platform']) && empty($lock['platform-dev'])) { - if ($this->lockFile->exists()) { - unlink($this->lockFile->getPath()); - } - - return false; - } - - try { - $isLocked = $this->isLocked(); - } catch (ParsingException $e) { - $isLocked = false; - } - if (!$isLocked || $lock !== $this->getLockData()) { - $this->lockFile->write($lock); - $this->lockDataCache = null; - - return true; - } - - return false; - } - - private function lockPackages(array $packages) - { - $locked = array(); - - foreach ($packages as $package) { - if ($package instanceof AliasPackage) { - continue; - } - - $name = $package->getPrettyName(); - $version = $package->getPrettyVersion(); - - if (!$name || !$version) { - throw new \LogicException(sprintf( - 'Package "%s" has no version or name and can not be locked', - $package - )); - } - - $spec = $this->dumper->dump($package); - unset($spec['version_normalized']); - - // always move time to the end of the package definition - $time = isset($spec['time']) ? $spec['time'] : null; - unset($spec['time']); - if ($package->isDev() && $package->getInstallationSource() === 'source') { - // use the exact commit time of the current reference if it's a dev package - $time = $this->getPackageTime($package) ?: $time; - } - if (null !== $time) { - $spec['time'] = $time; - } - - unset($spec['installation-source']); - - $locked[] = $spec; - } - - usort($locked, function ($a, $b) { - $comparison = strcmp($a['name'], $b['name']); - - if (0 !== $comparison) { - return $comparison; - } - - // If it is the same package, compare the versions to make the order deterministic - return strcmp($a['version'], $b['version']); - }); - - return $locked; - } - - /** - * Returns the packages's datetime for its source reference. - * - * @param PackageInterface $package The package to scan. - * @return string|null The formatted datetime or null if none was found. - */ - private function getPackageTime(PackageInterface $package) - { - if (!function_exists('proc_open')) { - return null; - } - - $path = realpath($this->installationManager->getInstallPath($package)); - $sourceType = $package->getSourceType(); - $datetime = null; - - if ($path && in_array($sourceType, array('git', 'hg'))) { - $sourceRef = $package->getSourceReference() ?: $package->getDistReference(); - switch ($sourceType) { - case 'git': - GitUtil::cleanEnv(); - - if (0 === $this->process->execute('git log -n1 --pretty=%ct '.ProcessExecutor::escape($sourceRef), $output, $path) && preg_match('{^\s*\d+\s*$}', $output)) { - $datetime = new \DateTime('@'.trim($output), new \DateTimeZone('UTC')); - } - break; - - case 'hg': - if (0 === $this->process->execute('hg log --template "{date|hgdate}" -r '.ProcessExecutor::escape($sourceRef), $output, $path) && preg_match('{^\s*(\d+)\s*}', $output, $match)) { - $datetime = new \DateTime('@'.$match[1], new \DateTimeZone('UTC')); - } - break; - } - } - - return $datetime ? $datetime->format(DATE_RFC3339) : null; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Package.php b/vendor/composer/composer/src/Composer/Package/Package.php deleted file mode 100644 index 6c7b426..0000000 --- a/vendor/composer/composer/src/Composer/Package/Package.php +++ /dev/null @@ -1,612 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -use Composer\Package\Version\VersionParser; -use Composer\Util\ComposerMirror; - -/** - * Core package definitions that are needed to resolve dependencies and install packages - * - * @author Nils Adermann - */ -class Package extends BasePackage -{ - protected $type; - protected $targetDir; - protected $installationSource; - protected $sourceType; - protected $sourceUrl; - protected $sourceReference; - protected $sourceMirrors; - protected $distType; - protected $distUrl; - protected $distReference; - protected $distSha1Checksum; - protected $distMirrors; - protected $version; - protected $prettyVersion; - protected $releaseDate; - protected $extra = array(); - protected $binaries = array(); - protected $dev; - protected $stability; - protected $notificationUrl; - - /** @var Link[] */ - protected $requires = array(); - /** @var Link[] */ - protected $conflicts = array(); - /** @var Link[] */ - protected $provides = array(); - /** @var Link[] */ - protected $replaces = array(); - /** @var Link[] */ - protected $devRequires = array(); - protected $suggests = array(); - protected $autoload = array(); - protected $devAutoload = array(); - protected $includePaths = array(); - protected $archiveExcludes = array(); - - /** - * Creates a new in memory package. - * - * @param string $name The package's name - * @param string $version The package's version - * @param string $prettyVersion The package's non-normalized version - */ - public function __construct($name, $version, $prettyVersion) - { - parent::__construct($name); - - $this->version = $version; - $this->prettyVersion = $prettyVersion; - - $this->stability = VersionParser::parseStability($version); - $this->dev = $this->stability === 'dev'; - } - - /** - * {@inheritDoc} - */ - public function isDev() - { - return $this->dev; - } - - /** - * @param string $type - */ - public function setType($type) - { - $this->type = $type; - } - - /** - * {@inheritDoc} - */ - public function getType() - { - return $this->type ?: 'library'; - } - - /** - * {@inheritDoc} - */ - public function getStability() - { - return $this->stability; - } - - /** - * @param string $targetDir - */ - public function setTargetDir($targetDir) - { - $this->targetDir = $targetDir; - } - - /** - * {@inheritDoc} - */ - public function getTargetDir() - { - if (null === $this->targetDir) { - return; - } - - return ltrim(preg_replace('{ (?:^|[\\\\/]+) \.\.? (?:[\\\\/]+|$) (?:\.\.? (?:[\\\\/]+|$) )*}x', '/', $this->targetDir), '/'); - } - - /** - * @param array $extra - */ - public function setExtra(array $extra) - { - $this->extra = $extra; - } - - /** - * {@inheritDoc} - */ - public function getExtra() - { - return $this->extra; - } - - /** - * @param array $binaries - */ - public function setBinaries(array $binaries) - { - $this->binaries = $binaries; - } - - /** - * {@inheritDoc} - */ - public function getBinaries() - { - return $this->binaries; - } - - /** - * {@inheritDoc} - */ - public function setInstallationSource($type) - { - $this->installationSource = $type; - } - - /** - * {@inheritDoc} - */ - public function getInstallationSource() - { - return $this->installationSource; - } - - /** - * @param string $type - */ - public function setSourceType($type) - { - $this->sourceType = $type; - } - - /** - * {@inheritDoc} - */ - public function getSourceType() - { - return $this->sourceType; - } - - /** - * @param string $url - */ - public function setSourceUrl($url) - { - $this->sourceUrl = $url; - } - - /** - * {@inheritDoc} - */ - public function getSourceUrl() - { - return $this->sourceUrl; - } - - /** - * @param string $reference - */ - public function setSourceReference($reference) - { - $this->sourceReference = $reference; - } - - /** - * {@inheritDoc} - */ - public function getSourceReference() - { - return $this->sourceReference; - } - - /** - * @param array|null $mirrors - */ - public function setSourceMirrors($mirrors) - { - $this->sourceMirrors = $mirrors; - } - - /** - * {@inheritDoc} - */ - public function getSourceMirrors() - { - return $this->sourceMirrors; - } - - /** - * {@inheritDoc} - */ - public function getSourceUrls() - { - return $this->getUrls($this->sourceUrl, $this->sourceMirrors, $this->sourceReference, $this->sourceType, 'source'); - } - - /** - * @param string $type - */ - public function setDistType($type) - { - $this->distType = $type; - } - - /** - * {@inheritDoc} - */ - public function getDistType() - { - return $this->distType; - } - - /** - * @param string $url - */ - public function setDistUrl($url) - { - $this->distUrl = $url; - } - - /** - * {@inheritDoc} - */ - public function getDistUrl() - { - return $this->distUrl; - } - - /** - * @param string $reference - */ - public function setDistReference($reference) - { - $this->distReference = $reference; - } - - /** - * {@inheritDoc} - */ - public function getDistReference() - { - return $this->distReference; - } - - /** - * @param string $sha1checksum - */ - public function setDistSha1Checksum($sha1checksum) - { - $this->distSha1Checksum = $sha1checksum; - } - - /** - * {@inheritDoc} - */ - public function getDistSha1Checksum() - { - return $this->distSha1Checksum; - } - - /** - * @param array|null $mirrors - */ - public function setDistMirrors($mirrors) - { - $this->distMirrors = $mirrors; - } - - /** - * {@inheritDoc} - */ - public function getDistMirrors() - { - return $this->distMirrors; - } - - /** - * {@inheritDoc} - */ - public function getDistUrls() - { - return $this->getUrls($this->distUrl, $this->distMirrors, $this->distReference, $this->distType, 'dist'); - } - - /** - * {@inheritDoc} - */ - public function getVersion() - { - return $this->version; - } - - /** - * {@inheritDoc} - */ - public function getPrettyVersion() - { - return $this->prettyVersion; - } - - /** - * Set the releaseDate - * - * @param \DateTime $releaseDate - */ - public function setReleaseDate(\DateTime $releaseDate) - { - $this->releaseDate = $releaseDate; - } - - /** - * {@inheritDoc} - */ - public function getReleaseDate() - { - return $this->releaseDate; - } - - /** - * Set the required packages - * - * @param Link[] $requires A set of package links - */ - public function setRequires(array $requires) - { - $this->requires = $requires; - } - - /** - * {@inheritDoc} - */ - public function getRequires() - { - return $this->requires; - } - - /** - * Set the conflicting packages - * - * @param Link[] $conflicts A set of package links - */ - public function setConflicts(array $conflicts) - { - $this->conflicts = $conflicts; - } - - /** - * {@inheritDoc} - */ - public function getConflicts() - { - return $this->conflicts; - } - - /** - * Set the provided virtual packages - * - * @param Link[] $provides A set of package links - */ - public function setProvides(array $provides) - { - $this->provides = $provides; - } - - /** - * {@inheritDoc} - */ - public function getProvides() - { - return $this->provides; - } - - /** - * Set the packages this one replaces - * - * @param Link[] $replaces A set of package links - */ - public function setReplaces(array $replaces) - { - $this->replaces = $replaces; - } - - /** - * {@inheritDoc} - */ - public function getReplaces() - { - return $this->replaces; - } - - /** - * Set the recommended packages - * - * @param Link[] $devRequires A set of package links - */ - public function setDevRequires(array $devRequires) - { - $this->devRequires = $devRequires; - } - - /** - * {@inheritDoc} - */ - public function getDevRequires() - { - return $this->devRequires; - } - - /** - * Set the suggested packages - * - * @param array $suggests A set of package names/comments - */ - public function setSuggests(array $suggests) - { - $this->suggests = $suggests; - } - - /** - * {@inheritDoc} - */ - public function getSuggests() - { - return $this->suggests; - } - - /** - * Set the autoload mapping - * - * @param array $autoload Mapping of autoloading rules - */ - public function setAutoload(array $autoload) - { - $this->autoload = $autoload; - } - - /** - * {@inheritDoc} - */ - public function getAutoload() - { - return $this->autoload; - } - - /** - * Set the dev autoload mapping - * - * @param array $devAutoload Mapping of dev autoloading rules - */ - public function setDevAutoload(array $devAutoload) - { - $this->devAutoload = $devAutoload; - } - - /** - * {@inheritDoc} - */ - public function getDevAutoload() - { - return $this->devAutoload; - } - - /** - * Sets the list of paths added to PHP's include path. - * - * @param array $includePaths List of directories. - */ - public function setIncludePaths(array $includePaths) - { - $this->includePaths = $includePaths; - } - - /** - * {@inheritDoc} - */ - public function getIncludePaths() - { - return $this->includePaths; - } - - /** - * Sets the notification URL - * - * @param string $notificationUrl - */ - public function setNotificationUrl($notificationUrl) - { - $this->notificationUrl = $notificationUrl; - } - - /** - * {@inheritDoc} - */ - public function getNotificationUrl() - { - return $this->notificationUrl; - } - - /** - * Sets a list of patterns to be excluded from archives - * - * @param array $excludes - */ - public function setArchiveExcludes(array $excludes) - { - $this->archiveExcludes = $excludes; - } - - /** - * {@inheritDoc} - */ - public function getArchiveExcludes() - { - return $this->archiveExcludes; - } - - /** - * Replaces current version and pretty version with passed values. - * It also sets stability. - * - * @param string $version The package's normalized version - * @param string $prettyVersion The package's non-normalized version - */ - public function replaceVersion($version, $prettyVersion) - { - $this->version = $version; - $this->prettyVersion = $prettyVersion; - - $this->stability = VersionParser::parseStability($version); - $this->dev = $this->stability === 'dev'; - } - - protected function getUrls($url, $mirrors, $ref, $type, $urlType) - { - if (!$url) { - return array(); - } - $urls = array($url); - if ($mirrors) { - foreach ($mirrors as $mirror) { - if ($urlType === 'dist') { - $mirrorUrl = ComposerMirror::processUrl($mirror['url'], $this->name, $this->version, $ref, $type); - } elseif ($urlType === 'source' && $type === 'git') { - $mirrorUrl = ComposerMirror::processGitUrl($mirror['url'], $this->name, $url, $type); - } elseif ($urlType === 'source' && $type === 'hg') { - $mirrorUrl = ComposerMirror::processHgUrl($mirror['url'], $this->name, $url, $type); - } - if (!in_array($mirrorUrl, $urls)) { - $func = $mirror['preferred'] ? 'array_unshift' : 'array_push'; - $func($urls, $mirrorUrl); - } - } - } - - return $urls; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/PackageInterface.php b/vendor/composer/composer/src/Composer/Package/PackageInterface.php deleted file mode 100644 index cb16efa..0000000 --- a/vendor/composer/composer/src/Composer/Package/PackageInterface.php +++ /dev/null @@ -1,389 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -use Composer\Repository\RepositoryInterface; - -/** - * Defines the essential information a package has that is used during solving/installation - * - * @author Jordi Boggiano - */ -interface PackageInterface -{ - /** - * Returns the package's name without version info, thus not a unique identifier - * - * @return string package name - */ - public function getName(); - - /** - * Returns the package's pretty (i.e. with proper case) name - * - * @return string package name - */ - public function getPrettyName(); - - /** - * Returns a set of names that could refer to this package - * - * No version or release type information should be included in any of the - * names. Provided or replaced package names need to be returned as well. - * - * @return array An array of strings referring to this package - */ - public function getNames(); - - /** - * Allows the solver to set an id for this package to refer to it. - * - * @param int $id - */ - public function setId($id); - - /** - * Retrieves the package's id set through setId - * - * @return int The previously set package id - */ - public function getId(); - - /** - * Returns whether the package is a development virtual package or a concrete one - * - * @return bool - */ - public function isDev(); - - /** - * Returns the package type, e.g. library - * - * @return string The package type - */ - public function getType(); - - /** - * Returns the package targetDir property - * - * @return string The package targetDir - */ - public function getTargetDir(); - - /** - * Returns the package extra data - * - * @return array The package extra data - */ - public function getExtra(); - - /** - * Sets source from which this package was installed (source/dist). - * - * @param string $type source/dist - */ - public function setInstallationSource($type); - - /** - * Returns source from which this package was installed (source/dist). - * - * @return string source/dist - */ - public function getInstallationSource(); - - /** - * Returns the repository type of this package, e.g. git, svn - * - * @return string The repository type - */ - public function getSourceType(); - - /** - * Returns the repository url of this package, e.g. git://github.com/naderman/composer.git - * - * @return string The repository url - */ - public function getSourceUrl(); - - /** - * Returns the repository urls of this package including mirrors, e.g. git://github.com/naderman/composer.git - * - * @return array - */ - public function getSourceUrls(); - - /** - * Returns the repository reference of this package, e.g. master, 1.0.0 or a commit hash for git - * - * @return string The repository reference - */ - public function getSourceReference(); - - /** - * Returns the source mirrors of this package - * - * @return array|null - */ - public function getSourceMirrors(); - - /** - * Returns the type of the distribution archive of this version, e.g. zip, tarball - * - * @return string The repository type - */ - public function getDistType(); - - /** - * Returns the url of the distribution archive of this version - * - * @return string - */ - public function getDistUrl(); - - /** - * Returns the urls of the distribution archive of this version, including mirrors - * - * @return array - */ - public function getDistUrls(); - - /** - * Returns the reference of the distribution archive of this version, e.g. master, 1.0.0 or a commit hash for git - * - * @return string - */ - public function getDistReference(); - - /** - * Returns the sha1 checksum for the distribution archive of this version - * - * @return string - */ - public function getDistSha1Checksum(); - - /** - * Returns the dist mirrors of this package - * - * @return array|null - */ - public function getDistMirrors(); - - /** - * Returns the version of this package - * - * @return string version - */ - public function getVersion(); - - /** - * Returns the pretty (i.e. non-normalized) version string of this package - * - * @return string version - */ - public function getPrettyVersion(); - - /** - * Returns the pretty version string plus a git or hg commit hash of this package - * - * @see getPrettyVersion - * - * @param bool $truncate If the source reference is a sha1 hash, truncate it - * @return string version - */ - public function getFullPrettyVersion($truncate = true); - - /** - * Returns the release date of the package - * - * @return \DateTime - */ - public function getReleaseDate(); - - /** - * Returns the stability of this package: one of (dev, alpha, beta, RC, stable) - * - * @return string - */ - public function getStability(); - - /** - * Returns a set of links to packages which need to be installed before - * this package can be installed - * - * @return Link[] An array of package links defining required packages - */ - public function getRequires(); - - /** - * Returns a set of links to packages which must not be installed at the - * same time as this package - * - * @return Link[] An array of package links defining conflicting packages - */ - public function getConflicts(); - - /** - * Returns a set of links to virtual packages that are provided through - * this package - * - * @return Link[] An array of package links defining provided packages - */ - public function getProvides(); - - /** - * Returns a set of links to packages which can alternatively be - * satisfied by installing this package - * - * @return Link[] An array of package links defining replaced packages - */ - public function getReplaces(); - - /** - * Returns a set of links to packages which are required to develop - * this package. These are installed if in dev mode. - * - * @return Link[] An array of package links defining packages required for development - */ - public function getDevRequires(); - - /** - * Returns a set of package names and reasons why they are useful in - * combination with this package. - * - * @return array An array of package suggestions with descriptions - */ - public function getSuggests(); - - /** - * Returns an associative array of autoloading rules - * - * {"": {""}} - * - * Type is either "psr-4", "psr-0", "classmap" or "files". Namespaces are mapped to - * directories for autoloading using the type specified. - * - * @return array Mapping of autoloading rules - */ - public function getAutoload(); - - /** - * Returns an associative array of dev autoloading rules - * - * {"": {""}} - * - * Type is either "psr-4", "psr-0", "classmap" or "files". Namespaces are mapped to - * directories for autoloading using the type specified. - * - * @return array Mapping of dev autoloading rules - */ - public function getDevAutoload(); - - /** - * Returns a list of directories which should get added to PHP's - * include path. - * - * @return array - */ - public function getIncludePaths(); - - /** - * Stores a reference to the repository that owns the package - * - * @param RepositoryInterface $repository - */ - public function setRepository(RepositoryInterface $repository); - - /** - * Returns a reference to the repository that owns the package - * - * @return RepositoryInterface - */ - public function getRepository(); - - /** - * Returns the package binaries - * - * @return array - */ - public function getBinaries(); - - /** - * Returns package unique name, constructed from name and version. - * - * @return string - */ - public function getUniqueName(); - - /** - * Returns the package notification url - * - * @return string - */ - public function getNotificationUrl(); - - /** - * Converts the package into a readable and unique string - * - * @return string - */ - public function __toString(); - - /** - * Converts the package into a pretty readable string - * - * @return string - */ - public function getPrettyString(); - - /** - * Returns a list of patterns to exclude from package archives - * - * @return array - */ - public function getArchiveExcludes(); - - /** - * Returns a list of options to download package dist files - * - * @return array - */ - public function getTransportOptions(); - - /** - * @param string $reference - * - * @return void - */ - public function setSourceReference($reference); - - /** - * @param string $url - * - * @return void - */ - public function setDistUrl($url); - - /** - * @param string $type - * - * @return void - */ - public function setDistType($type); - - /** - * @param string $reference - * - * @return void - */ - public function setDistReference($reference); -} diff --git a/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php b/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php deleted file mode 100644 index 862cb21..0000000 --- a/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php +++ /dev/null @@ -1,173 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -/** - * @author Jordi Boggiano - */ -class RootAliasPackage extends AliasPackage implements RootPackageInterface -{ - public function __construct(RootPackageInterface $aliasOf, $version, $prettyVersion) - { - parent::__construct($aliasOf, $version, $prettyVersion); - } - - /** - * {@inheritDoc} - */ - public function getAliases() - { - return $this->aliasOf->getAliases(); - } - - /** - * {@inheritDoc} - */ - public function getMinimumStability() - { - return $this->aliasOf->getMinimumStability(); - } - - /** - * {@inheritDoc} - */ - public function getStabilityFlags() - { - return $this->aliasOf->getStabilityFlags(); - } - - /** - * {@inheritDoc} - */ - public function getReferences() - { - return $this->aliasOf->getReferences(); - } - - /** - * {@inheritDoc} - */ - public function getPreferStable() - { - return $this->aliasOf->getPreferStable(); - } - - /** - * {@inheritDoc} - */ - public function getConfig() - { - return $this->aliasOf->getConfig(); - } - - /** - * {@inheritDoc} - */ - public function setRequires(array $require) - { - $this->requires = $this->replaceSelfVersionDependencies($require, 'requires'); - - $this->aliasOf->setRequires($require); - } - - /** - * {@inheritDoc} - */ - public function setDevRequires(array $devRequire) - { - $this->devRequires = $this->replaceSelfVersionDependencies($devRequire, 'devRequires'); - - $this->aliasOf->setDevRequires($devRequire); - } - - /** - * {@inheritDoc} - */ - public function setConflicts(array $conflicts) - { - $this->conflicts = $this->replaceSelfVersionDependencies($conflicts, 'conflicts'); - $this->aliasOf->setConflicts($conflicts); - } - - /** - * {@inheritDoc} - */ - public function setProvides(array $provides) - { - $this->provides = $this->replaceSelfVersionDependencies($provides, 'provides'); - $this->aliasOf->setProvides($provides); - } - - /** - * {@inheritDoc} - */ - public function setReplaces(array $replaces) - { - $this->replaces = $this->replaceSelfVersionDependencies($replaces, 'replaces'); - $this->aliasOf->setReplaces($replaces); - } - - /** - * {@inheritDoc} - */ - public function setRepositories($repositories) - { - $this->aliasOf->setRepositories($repositories); - } - - /** - * {@inheritDoc} - */ - public function setAutoload(array $autoload) - { - $this->aliasOf->setAutoload($autoload); - } - - /** - * {@inheritDoc} - */ - public function setDevAutoload(array $devAutoload) - { - $this->aliasOf->setDevAutoload($devAutoload); - } - - /** - * {@inheritDoc} - */ - public function setStabilityFlags(array $stabilityFlags) - { - $this->aliasOf->setStabilityFlags($stabilityFlags); - } - - /** - * {@inheritDoc} - */ - public function setSuggests(array $suggests) - { - $this->aliasOf->setSuggests($suggests); - } - - /** - * {@inheritDoc} - */ - public function setExtra(array $extra) - { - $this->aliasOf->setExtra($extra); - } - - public function __clone() - { - parent::__clone(); - $this->aliasOf = clone $this->aliasOf; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/RootPackage.php b/vendor/composer/composer/src/Composer/Package/RootPackage.php deleted file mode 100644 index 52e851a..0000000 --- a/vendor/composer/composer/src/Composer/Package/RootPackage.php +++ /dev/null @@ -1,136 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -/** - * The root package represents the project's composer.json and contains additional metadata - * - * @author Jordi Boggiano - */ -class RootPackage extends CompletePackage implements RootPackageInterface -{ - protected $minimumStability = 'stable'; - protected $preferStable = false; - protected $stabilityFlags = array(); - protected $config = array(); - protected $references = array(); - protected $aliases = array(); - - /** - * Set the minimumStability - * - * @param string $minimumStability - */ - public function setMinimumStability($minimumStability) - { - $this->minimumStability = $minimumStability; - } - - /** - * {@inheritDoc} - */ - public function getMinimumStability() - { - return $this->minimumStability; - } - - /** - * Set the stabilityFlags - * - * @param array $stabilityFlags - */ - public function setStabilityFlags(array $stabilityFlags) - { - $this->stabilityFlags = $stabilityFlags; - } - - /** - * {@inheritDoc} - */ - public function getStabilityFlags() - { - return $this->stabilityFlags; - } - - /** - * Set the preferStable - * - * @param bool $preferStable - */ - public function setPreferStable($preferStable) - { - $this->preferStable = $preferStable; - } - - /** - * {@inheritDoc} - */ - public function getPreferStable() - { - return $this->preferStable; - } - - /** - * Set the config - * - * @param array $config - */ - public function setConfig(array $config) - { - $this->config = $config; - } - - /** - * {@inheritDoc} - */ - public function getConfig() - { - return $this->config; - } - - /** - * Set the references - * - * @param array $references - */ - public function setReferences(array $references) - { - $this->references = $references; - } - - /** - * {@inheritDoc} - */ - public function getReferences() - { - return $this->references; - } - - /** - * Set the aliases - * - * @param array $aliases - */ - public function setAliases(array $aliases) - { - $this->aliases = $aliases; - } - - /** - * {@inheritDoc} - */ - public function getAliases() - { - return $this->aliases; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php b/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php deleted file mode 100644 index 7a3be9d..0000000 --- a/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php +++ /dev/null @@ -1,142 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package; - -/** - * Defines additional fields that are only needed for the root package - * - * @author Jordi Boggiano - */ -interface RootPackageInterface extends CompletePackageInterface -{ - /** - * Returns a set of package names and their aliases - * - * @return array - */ - public function getAliases(); - - /** - * Returns the minimum stability of the package - * - * @return string - */ - public function getMinimumStability(); - - /** - * Returns the stability flags to apply to dependencies - * - * array('foo/bar' => 'dev') - * - * @return array - */ - public function getStabilityFlags(); - - /** - * Returns a set of package names and source references that must be enforced on them - * - * array('foo/bar' => 'abcd1234') - * - * @return array - */ - public function getReferences(); - - /** - * Returns true if the root package prefers picking stable packages over unstable ones - * - * @return bool - */ - public function getPreferStable(); - - /** - * Returns the root package's configuration - * - * @return array - */ - public function getConfig(); - - /** - * Set the required packages - * - * @param Link[] $requires A set of package links - */ - public function setRequires(array $requires); - - /** - * Set the recommended packages - * - * @param Link[] $devRequires A set of package links - */ - public function setDevRequires(array $devRequires); - - /** - * Set the conflicting packages - * - * @param Link[] $conflicts A set of package links - */ - public function setConflicts(array $conflicts); - - /** - * Set the provided virtual packages - * - * @param Link[] $provides A set of package links - */ - public function setProvides(array $provides); - - /** - * Set the packages this one replaces - * - * @param Link[] $replaces A set of package links - */ - public function setReplaces(array $replaces); - - /** - * Set the repositories - * - * @param array $repositories - */ - public function setRepositories($repositories); - - /** - * Set the autoload mapping - * - * @param array $autoload Mapping of autoloading rules - */ - public function setAutoload(array $autoload); - - /** - * Set the dev autoload mapping - * - * @param array $devAutoload Mapping of dev autoloading rules - */ - public function setDevAutoload(array $devAutoload); - - /** - * Set the stabilityFlags - * - * @param array $stabilityFlags - */ - public function setStabilityFlags(array $stabilityFlags); - - /** - * Set the suggested packages - * - * @param array $suggests A set of package names/comments - */ - public function setSuggests(array $suggests); - - /** - * @param array $extra - */ - public function setExtra(array $extra); -} diff --git a/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php b/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php deleted file mode 100644 index f35aabe..0000000 --- a/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php +++ /dev/null @@ -1,322 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Version; - -use Composer\Config; -use Composer\Repository\Vcs\HgDriver; -use Composer\IO\NullIO; -use Composer\Semver\VersionParser as SemverVersionParser; -use Composer\Util\Git as GitUtil; -use Composer\Util\ProcessExecutor; -use Composer\Util\Svn as SvnUtil; - -/** - * Try to guess the current version number based on different VCS configuration. - * - * @author Jordi Boggiano - * @author Samuel Roze - */ -class VersionGuesser -{ - /** - * @var Config - */ - private $config; - - /** - * @var ProcessExecutor - */ - private $process; - - /** - * @var SemverVersionParser - */ - private $versionParser; - - /** - * @param Config $config - * @param ProcessExecutor $process - * @param SemverVersionParser $versionParser - */ - public function __construct(Config $config, ProcessExecutor $process, SemverVersionParser $versionParser) - { - $this->config = $config; - $this->process = $process; - $this->versionParser = $versionParser; - } - - /** - * @param array $packageConfig - * @param string $path Path to guess into - * - * @return null|array versionData, 'version', 'pretty_version' and 'commit' keys, if the version is a feature branch, 'feature_version' and 'feature_pretty_version' keys may also be returned - */ - public function guessVersion(array $packageConfig, $path) - { - if (function_exists('proc_open')) { - $versionData = $this->guessGitVersion($packageConfig, $path); - if (null !== $versionData && null !== $versionData['version']) { - return $this->postprocess($versionData); - } - - $versionData = $this->guessHgVersion($packageConfig, $path); - if (null !== $versionData && null !== $versionData['version']) { - return $this->postprocess($versionData); - } - - $versionData = $this->guessFossilVersion($packageConfig, $path); - if (null !== $versionData && null !== $versionData['version']) { - return $this->postprocess($versionData); - } - - $versionData = $this->guessSvnVersion($packageConfig, $path); - if (null !== $versionData && null !== $versionData['version']) { - return $this->postprocess($versionData); - } - } - } - - private function postprocess(array $versionData) - { - if (!empty($versionData['feature_version']) && $versionData['feature_version'] === $versionData['version'] && $versionData['feature_pretty_version'] === $versionData['feature_pretty_version']) { - unset($versionData['feature_version'], $versionData['feature_pretty_version']); - } - - if ('-dev' === substr($versionData['version'], -4) && preg_match('{\.9{7}}', $versionData['version'])) { - $versionData['pretty_version'] = preg_replace('{(\.9{7})+}', '.x', $versionData['version']); - } - - if (!empty($versionData['feature_version']) && '-dev' === substr($versionData['feature_version'], -4) && preg_match('{\.9{7}}', $versionData['feature_version'])) { - $versionData['feature_pretty_version'] = preg_replace('{(\.9{7})+}', '.x', $versionData['feature_version']); - } - - return $versionData; - } - - private function guessGitVersion(array $packageConfig, $path) - { - GitUtil::cleanEnv(); - $commit = null; - $version = null; - $prettyVersion = null; - $featureVersion = null; - $featurePrettyVersion = null; - $isDetached = false; - - // try to fetch current version from git branch - if (0 === $this->process->execute('git branch --no-color --no-abbrev -v', $output, $path)) { - $branches = array(); - $isFeatureBranch = false; - - // find current branch and collect all branch names - foreach ($this->process->splitLines($output) as $branch) { - if ($branch && preg_match('{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}', $branch, $match)) { - if ($match[1] === '(no branch)' || substr($match[1], 0, 10) === '(detached ' || substr($match[1], 0, 17) === '(HEAD detached at') { - $version = 'dev-' . $match[2]; - $prettyVersion = $version; - $isFeatureBranch = true; - $isDetached = true; - } else { - $version = $this->versionParser->normalizeBranch($match[1]); - $prettyVersion = 'dev-' . $match[1]; - $isFeatureBranch = 0 === strpos($version, 'dev-'); - } - - if ($match[2]) { - $commit = $match[2]; - } - } - - if ($branch && !preg_match('{^ *[^/]+/HEAD }', $branch)) { - if (preg_match('{^(?:\* )? *(\S+) *([a-f0-9]+) .*$}', $branch, $match)) { - $branches[] = $match[1]; - } - } - } - - if ($isFeatureBranch) { - $featureVersion = $version; - $featurePrettyVersion = $prettyVersion; - // try to find the best (nearest) version branch to assume this feature's version - $result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'git rev-list %candidate%..%branch%', $path); - $version = $result['version']; - $prettyVersion = $result['pretty_version']; - } - } - - if (!$version || $isDetached) { - $result = $this->versionFromGitTags($path); - if ($result) { - $version = $result['version']; - $prettyVersion = $result['pretty_version']; - $featureVersion = null; - $featurePrettyVersion = null; - } - } - - if (!$commit) { - $command = 'git log --pretty="%H" -n1 HEAD'; - if (0 === $this->process->execute($command, $output, $path)) { - $commit = trim($output) ?: null; - } - } - - if ($featureVersion) { - return array('version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion, 'feature_version' => $featureVersion, 'feature_pretty_version' => $featurePrettyVersion); - } - - return array('version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion); - } - - private function versionFromGitTags($path) - { - // try to fetch current version from git tags - if (0 === $this->process->execute('git describe --exact-match --tags', $output, $path)) { - try { - $version = $this->versionParser->normalize(trim($output)); - - return array('version' => $version, 'pretty_version' => trim($output)); - } catch (\Exception $e) { - } - } - - return null; - } - - private function guessHgVersion(array $packageConfig, $path) - { - // try to fetch current version from hg branch - if (0 === $this->process->execute('hg branch', $output, $path)) { - $branch = trim($output); - $version = $this->versionParser->normalizeBranch($branch); - $isFeatureBranch = 0 === strpos($version, 'dev-'); - - if ('9999999-dev' === $version) { - return array('version' => $version, 'commit' => null, 'pretty_version' => 'dev-'.$branch); - } - - if (!$isFeatureBranch) { - return array('version' => $version, 'commit' => null, 'pretty_version' => $version); - } - - // re-use the HgDriver to fetch branches (this properly includes bookmarks) - $driver = new HgDriver(array('url' => $path), new NullIO(), $this->config, $this->process); - $branches = array_keys($driver->getBranches()); - - // try to find the best (nearest) version branch to assume this feature's version - $result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'hg log -r "not ancestors(\'%candidate%\') and ancestors(\'%branch%\')" --template "{node}\\n"', $path); - $result['commit'] = ''; - $result['feature_version'] = $version; - $result['feature_pretty_version'] = $version; - - return $result; - } - } - - private function guessFeatureVersion(array $packageConfig, $version, array $branches, $scmCmdline, $path) - { - $prettyVersion = $version; - - // ignore feature branches if they have no branch-alias or self.version is used - // and find the branch they came from to use as a version instead - if ((isset($packageConfig['extra']['branch-alias']) && !isset($packageConfig['extra']['branch-alias'][$version])) - || strpos(json_encode($packageConfig), '"self.version"') - ) { - $branch = preg_replace('{^dev-}', '', $version); - $length = PHP_INT_MAX; - - $nonFeatureBranches = ''; - if (!empty($packageConfig['non-feature-branches'])) { - $nonFeatureBranches = implode('|', $packageConfig['non-feature-branches']); - } - - foreach ($branches as $candidate) { - // return directly, if branch is configured to be non-feature branch - if ($candidate === $branch && preg_match('{^(' . $nonFeatureBranches . ')$}', $candidate)) { - break; - } - - // do not compare against itself or other feature branches - if ($candidate === $branch || !preg_match('{^(' . $nonFeatureBranches . '|master|trunk|default|develop|\d+\..+)$}', $candidate, $match)) { - continue; - } - - $cmdLine = str_replace(array('%candidate%', '%branch%'), array($candidate, $branch), $scmCmdline); - if (0 !== $this->process->execute($cmdLine, $output, $path)) { - continue; - } - - if (strlen($output) < $length) { - $length = strlen($output); - $version = $this->versionParser->normalizeBranch($candidate); - $prettyVersion = 'dev-' . $match[1]; - } - } - } - - return array('version' => $version, 'pretty_version' => $prettyVersion); - } - - private function guessFossilVersion(array $packageConfig, $path) - { - $version = null; - $prettyVersion = null; - - // try to fetch current version from fossil - if (0 === $this->process->execute('fossil branch list', $output, $path)) { - $branch = trim($output); - $version = $this->versionParser->normalizeBranch($branch); - $prettyVersion = 'dev-' . $branch; - } - - // try to fetch current version from fossil tags - if (0 === $this->process->execute('fossil tag list', $output, $path)) { - try { - $version = $this->versionParser->normalize(trim($output)); - $prettyVersion = trim($output); - } catch (\Exception $e) { - } - } - - return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); - } - - private function guessSvnVersion(array $packageConfig, $path) - { - SvnUtil::cleanEnv(); - - // try to fetch current version from svn - if (0 === $this->process->execute('svn info --xml', $output, $path)) { - $trunkPath = isset($packageConfig['trunk-path']) ? preg_quote($packageConfig['trunk-path'], '#') : 'trunk'; - $branchesPath = isset($packageConfig['branches-path']) ? preg_quote($packageConfig['branches-path'], '#') : 'branches'; - $tagsPath = isset($packageConfig['tags-path']) ? preg_quote($packageConfig['tags-path'], '#') : 'tags'; - - $urlPattern = '#.*/(' . $trunkPath . '|(' . $branchesPath . '|' . $tagsPath . ')/(.*))#'; - - if (preg_match($urlPattern, $output, $matches)) { - if (isset($matches[2]) && ($branchesPath === $matches[2] || $tagsPath === $matches[2])) { - // we are in a branches path - $version = $this->versionParser->normalizeBranch($matches[3]); - $prettyVersion = 'dev-' . $matches[3]; - - return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); - } - - $prettyVersion = trim($matches[1]); - $version = $this->versionParser->normalize($prettyVersion); - - return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); - } - } - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php b/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php deleted file mode 100644 index 831c61d..0000000 --- a/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php +++ /dev/null @@ -1,81 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Version; - -use Composer\Repository\PlatformRepository; -use Composer\Semver\VersionParser as SemverVersionParser; -use Composer\Semver\Semver; - -class VersionParser extends SemverVersionParser -{ - private static $constraints = array(); - - /** - * {@inheritDoc} - */ - public function parseConstraints($constraints) - { - if (!isset(self::$constraints[$constraints])) { - self::$constraints[$constraints] = parent::parseConstraints($constraints); - } - - return self::$constraints[$constraints]; - } - - /** - * Parses an array of strings representing package/version pairs. - * - * The parsing results in an array of arrays, each of which - * contain a 'name' key with value and optionally a 'version' key with value. - * - * @param array $pairs a set of package/version pairs separated by ":", "=" or " " - * - * @return array[] array of arrays containing a name and (if provided) a version - */ - public function parseNameVersionPairs(array $pairs) - { - $pairs = array_values($pairs); - $result = array(); - - for ($i = 0, $count = count($pairs); $i < $count; $i++) { - $pair = preg_replace('{^([^=: ]+)[=: ](.*)$}', '$1 $2', trim($pairs[$i])); - if (false === strpos($pair, ' ') && isset($pairs[$i + 1]) && false === strpos($pairs[$i + 1], '/') && !preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $pairs[$i + 1])) { - $pair .= ' '.$pairs[$i + 1]; - $i++; - } - - if (strpos($pair, ' ')) { - list($name, $version) = explode(' ', $pair, 2); - $result[] = array('name' => $name, 'version' => $version); - } else { - $result[] = array('name' => $pair); - } - } - - return $result; - } - - /** - * @return bool - */ - public static function isUpgrade($normalizedFrom, $normalizedTo) - { - if (substr($normalizedFrom, 0, 4) === 'dev-' || substr($normalizedTo, 0, 4) === 'dev-') { - return true; - } - - $sorted = Semver::sort(array($normalizedTo, $normalizedFrom)); - - return $sorted[0] === $normalizedFrom; - } -} diff --git a/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php b/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php deleted file mode 100644 index 8e225d8..0000000 --- a/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php +++ /dev/null @@ -1,176 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Package\Version; - -use Composer\DependencyResolver\Pool; -use Composer\Package\BasePackage; -use Composer\Package\PackageInterface; -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\Dumper\ArrayDumper; -use Composer\Semver\Constraint\Constraint; - -/** - * Selects the best possible version for a package - * - * @author Ryan Weaver - * @author Jordi Boggiano - */ -class VersionSelector -{ - private $pool; - - private $parser; - - public function __construct(Pool $pool) - { - $this->pool = $pool; - } - - /** - * Given a package name and optional version, returns the latest PackageInterface - * that matches. - * - * @param string $packageName - * @param string $targetPackageVersion - * @param string $targetPhpVersion - * @param string $preferredStability - * @return PackageInterface|bool - */ - public function findBestCandidate($packageName, $targetPackageVersion = null, $targetPhpVersion = null, $preferredStability = 'stable') - { - $constraint = $targetPackageVersion ? $this->getParser()->parseConstraints($targetPackageVersion) : null; - $candidates = $this->pool->whatProvides(strtolower($packageName), $constraint, true); - - if ($targetPhpVersion) { - $phpConstraint = new Constraint('==', $this->getParser()->normalize($targetPhpVersion)); - $candidates = array_filter($candidates, function ($pkg) use ($phpConstraint) { - $reqs = $pkg->getRequires(); - - return !isset($reqs['php']) || $reqs['php']->getConstraint()->matches($phpConstraint); - }); - } - - if (!$candidates) { - return false; - } - - // select highest version if we have many - $package = reset($candidates); - $minPriority = BasePackage::$stabilities[$preferredStability]; - foreach ($candidates as $candidate) { - $candidatePriority = $candidate->getStabilityPriority(); - $currentPriority = $package->getStabilityPriority(); - - // candidate is less stable than our preferred stability, - // and current package is more stable than candidate, skip it - if ($minPriority < $candidatePriority && $currentPriority < $candidatePriority) { - continue; - } - - // candidate is less stable than our preferred stability, - // and current package is less stable than candidate, select candidate - if ($minPriority < $candidatePriority && $candidatePriority < $currentPriority) { - $package = $candidate; - continue; - } - - // candidate is more stable than our preferred stability, - // and current package is less stable than preferred stability, select candidate - if ($minPriority >= $candidatePriority && $minPriority < $currentPriority) { - $package = $candidate; - continue; - } - - // select highest version of the two - if (version_compare($package->getVersion(), $candidate->getVersion(), '<')) { - $package = $candidate; - } - } - - return $package; - } - - /** - * Given a concrete version, this returns a ~ constraint (when possible) - * that should be used, for example, in composer.json. - * - * For example: - * * 1.2.1 -> ^1.2 - * * 1.2 -> ^1.2 - * * v3.2.1 -> ^3.2 - * * 2.0-beta.1 -> ^2.0@beta - * * dev-master -> ^2.1@dev (dev version with alias) - * * dev-master -> dev-master (dev versions are untouched) - * - * @param PackageInterface $package - * @return string - */ - public function findRecommendedRequireVersion(PackageInterface $package) - { - $version = $package->getVersion(); - if (!$package->isDev()) { - return $this->transformVersion($version, $package->getPrettyVersion(), $package->getStability()); - } - - $loader = new ArrayLoader($this->getParser()); - $dumper = new ArrayDumper(); - $extra = $loader->getBranchAlias($dumper->dump($package)); - if ($extra) { - $extra = preg_replace('{^(\d+\.\d+\.\d+)(\.9999999)-dev$}', '$1.0', $extra, -1, $count); - if ($count) { - $extra = str_replace('.9999999', '.0', $extra); - - return $this->transformVersion($extra, $extra, 'dev'); - } - } - - return $package->getPrettyVersion(); - } - - private function transformVersion($version, $prettyVersion, $stability) - { - // attempt to transform 2.1.1 to 2.1 - // this allows you to upgrade through minor versions - $semanticVersionParts = explode('.', $version); - - // check to see if we have a semver-looking version - if (count($semanticVersionParts) == 4 && preg_match('{^0\D?}', $semanticVersionParts[3])) { - // remove the last parts (i.e. the patch version number and any extra) - if ($semanticVersionParts[0] === '0') { - unset($semanticVersionParts[3]); - } else { - unset($semanticVersionParts[2], $semanticVersionParts[3]); - } - $version = implode('.', $semanticVersionParts); - } else { - return $prettyVersion; - } - - // append stability flag if not default - if ($stability != 'stable') { - $version .= '@'.$stability; - } - - // 2.1 -> ^2.1 - return '^' . $version; - } - - private function getParser() - { - if ($this->parser === null) { - $this->parser = new VersionParser(); - } - - return $this->parser; - } -} diff --git a/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php b/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php deleted file mode 100644 index b124106..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php +++ /dev/null @@ -1,23 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin\Capability; - -/** - * Marker interface for Plugin capabilities. - * Every new Capability which is added to the Plugin API must implement this interface. - * - * @api - */ -interface Capability -{ -} diff --git a/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php b/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php deleted file mode 100644 index 0f94bf3..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin\Capability; - -/** - * Commands Provider Interface - * - * This capability will receive an array with 'composer' and 'io' keys as - * constructor argument. Those contain Composer\Composer and Composer\IO\IOInterface - * instances. It also contains a 'plugin' key containing the plugin instance that - * created the capability. - * - * @author Jérémy Derussé - */ -interface CommandProvider extends Capability -{ - /** - * Retrieves an array of commands - * - * @return \Composer\Command\BaseCommand[] - */ - public function getCommands(); -} diff --git a/vendor/composer/composer/src/Composer/Plugin/Capable.php b/vendor/composer/composer/src/Composer/Plugin/Capable.php deleted file mode 100644 index 48ae422..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/Capable.php +++ /dev/null @@ -1,43 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin; - -/** - * Plugins which need to expose various implementations - * of the Composer Plugin Capabilities must have their - * declared Plugin class implementing this interface. - * - * @api - */ -interface Capable -{ - /** - * Method by which a Plugin announces its API implementations, through an array - * with a special structure. - * - * The key must be a string, representing a fully qualified class/interface name - * which Composer Plugin API exposes. - * The value must be a string as well, representing the fully qualified class name - * of the implementing class. - * - * @tutorial - * - * return array( - * 'Composer\Plugin\Capability\CommandProvider' => 'My\CommandProvider', - * 'Composer\Plugin\Capability\Validator' => 'My\Validator', - * ); - * - * @return string[] - */ - public function getCapabilities(); -} diff --git a/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php b/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php deleted file mode 100644 index 0697df9..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php +++ /dev/null @@ -1,88 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin; - -use Composer\EventDispatcher\Event; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * An event for all commands. - * - * @author Nils Adermann - */ -class CommandEvent extends Event -{ - /** - * @var string - */ - private $commandName; - - /** - * @var InputInterface - */ - private $input; - - /** - * @var OutputInterface - */ - private $output; - - /** - * Constructor. - * - * @param string $name The event name - * @param string $commandName The command name - * @param InputInterface $input - * @param OutputInterface $output - * @param array $args Arguments passed by the user - * @param array $flags Optional flags to pass data not as argument - */ - public function __construct($name, $commandName, $input, $output, array $args = array(), array $flags = array()) - { - parent::__construct($name, $args, $flags); - $this->commandName = $commandName; - $this->input = $input; - $this->output = $output; - } - - /** - * Returns the command input interface - * - * @return InputInterface - */ - public function getInput() - { - return $this->input; - } - - /** - * Retrieves the command output interface - * - * @return OutputInterface - */ - public function getOutput() - { - return $this->output; - } - - /** - * Retrieves the name of the command being run - * - * @return string - */ - public function getCommandName() - { - return $this->commandName; - } -} diff --git a/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php b/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php deleted file mode 100644 index 1fb368b..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin; - -/** - * The Plugin Events. - * - * @author Nils Adermann - */ -class PluginEvents -{ - /** - * The INIT event occurs after a Composer instance is done being initialized - * - * The event listener method receives a - * Composer\EventDispatcher\Event instance. - * - * @var string - */ - const INIT = 'init'; - - /** - * The COMMAND event occurs as a command begins - * - * The event listener method receives a - * Composer\Plugin\CommandEvent instance. - * - * @var string - */ - const COMMAND = 'command'; - - /** - * The PRE_FILE_DOWNLOAD event occurs before downloading a file - * - * The event listener method receives a - * Composer\Plugin\PreFileDownloadEvent instance. - * - * @var string - */ - const PRE_FILE_DOWNLOAD = 'pre-file-download'; - - /** - * The PRE_COMMAND_RUN event occurs before a command is executed and lets you modify the input arguments/options - * - * The event listener method receives a - * Composer\Plugin\PreCommandRunEvent instance. - * - * @var string - */ - const PRE_COMMAND_RUN = 'pre-command-run'; -} diff --git a/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php b/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php deleted file mode 100644 index 6eaca4e..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin; - -use Composer\Composer; -use Composer\IO\IOInterface; - -/** - * Plugin interface - * - * @author Nils Adermann - */ -interface PluginInterface -{ - /** - * Version number of the internal composer-plugin-api package - * - * @var string - */ - const PLUGIN_API_VERSION = '1.1.0'; - - /** - * Apply plugin modifications to Composer - * - * @param Composer $composer - * @param IOInterface $io - */ - public function activate(Composer $composer, IOInterface $io); -} diff --git a/vendor/composer/composer/src/Composer/Plugin/PluginManager.php b/vendor/composer/composer/src/Composer/Plugin/PluginManager.php deleted file mode 100644 index bb9b66d..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/PluginManager.php +++ /dev/null @@ -1,406 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin; - -use Composer\Composer; -use Composer\EventDispatcher\EventSubscriberInterface; -use Composer\IO\IOInterface; -use Composer\Package\CompletePackage; -use Composer\Package\Package; -use Composer\Package\Version\VersionParser; -use Composer\Repository\RepositoryInterface; -use Composer\Package\PackageInterface; -use Composer\Package\Link; -use Composer\Semver\Constraint\Constraint; -use Composer\DependencyResolver\Pool; -use Composer\Plugin\Capability\Capability; -use Composer\Util\PackageSorter; - -/** - * Plugin manager - * - * @author Nils Adermann - * @author Jordi Boggiano - */ -class PluginManager -{ - protected $composer; - protected $io; - protected $globalComposer; - protected $versionParser; - protected $disablePlugins = false; - - protected $plugins = array(); - protected $registeredPlugins = array(); - - private static $classCounter = 0; - - /** - * Initializes plugin manager - * - * @param IOInterface $io - * @param Composer $composer - * @param Composer $globalComposer - * @param bool $disablePlugins - */ - public function __construct(IOInterface $io, Composer $composer, Composer $globalComposer = null, $disablePlugins = false) - { - $this->io = $io; - $this->composer = $composer; - $this->globalComposer = $globalComposer; - $this->versionParser = new VersionParser(); - $this->disablePlugins = $disablePlugins; - } - - /** - * Loads all plugins from currently installed plugin packages - */ - public function loadInstalledPlugins() - { - if ($this->disablePlugins) { - return; - } - - $repo = $this->composer->getRepositoryManager()->getLocalRepository(); - $globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null; - if ($repo) { - $this->loadRepository($repo); - } - if ($globalRepo) { - $this->loadRepository($globalRepo); - } - } - - /** - * Gets all currently active plugin instances - * - * @return array plugins - */ - public function getPlugins() - { - return $this->plugins; - } - - /** - * Gets global composer or null when main composer is not fully loaded - * - * @return Composer|null - */ - public function getGlobalComposer() - { - return $this->globalComposer; - } - - /** - * Register a plugin package, activate it etc. - * - * If it's of type composer-installer it is registered as an installer - * instead for BC - * - * @param PackageInterface $package - * @param bool $failOnMissingClasses By default this silently skips plugins that can not be found, but if set to true it fails with an exception - * - * @throws \UnexpectedValueException - */ - public function registerPackage(PackageInterface $package, $failOnMissingClasses = false) - { - if ($this->disablePlugins) { - return; - } - - if ($package->getType() === 'composer-plugin') { - $requiresComposer = null; - foreach ($package->getRequires() as $link) { /** @var Link $link */ - if ('composer-plugin-api' === $link->getTarget()) { - $requiresComposer = $link->getConstraint(); - break; - } - } - - if (!$requiresComposer) { - throw new \RuntimeException("Plugin ".$package->getName()." is missing a require statement for a version of the composer-plugin-api package."); - } - - $currentPluginApiVersion = $this->getPluginApiVersion(); - $currentPluginApiConstraint = new Constraint('==', $this->versionParser->normalize($currentPluginApiVersion)); - - if ($requiresComposer->getPrettyString() === '1.0.0' && $this->getPluginApiVersion() === '1.0.0') { - $this->io->writeError('The "' . $package->getName() . '" plugin requires composer-plugin-api 1.0.0, this *WILL* break in the future and it should be fixed ASAP (require ^1.0 for example).'); - } elseif (!$requiresComposer->matches($currentPluginApiConstraint)) { - $this->io->writeError('The "' . $package->getName() . '" plugin was skipped because it requires a Plugin API version ("' . $requiresComposer->getPrettyString() . '") that does not match your Composer installation ("' . $currentPluginApiVersion . '"). You may need to run composer update with the "--no-plugins" option.'); - - return; - } - } - - $oldInstallerPlugin = ($package->getType() === 'composer-installer'); - - if (in_array($package->getName(), $this->registeredPlugins)) { - return; - } - - $extra = $package->getExtra(); - if (empty($extra['class'])) { - throw new \UnexpectedValueException('Error while installing '.$package->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); - } - $classes = is_array($extra['class']) ? $extra['class'] : array($extra['class']); - - $localRepo = $this->composer->getRepositoryManager()->getLocalRepository(); - $globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null; - - $pool = new Pool('dev'); - $pool->addRepository($localRepo); - if ($globalRepo) { - $pool->addRepository($globalRepo); - } - - $autoloadPackages = array($package->getName() => $package); - $autoloadPackages = $this->collectDependencies($pool, $autoloadPackages, $package); - - $generator = $this->composer->getAutoloadGenerator(); - $autoloads = array(); - foreach ($autoloadPackages as $autoloadPackage) { - $downloadPath = $this->getInstallPath($autoloadPackage, $globalRepo && $globalRepo->hasPackage($autoloadPackage)); - $autoloads[] = array($autoloadPackage, $downloadPath); - } - - $map = $generator->parseAutoloads($autoloads, new Package('dummy', '1.0.0.0', '1.0.0')); - $classLoader = $generator->createLoader($map); - $classLoader->register(); - - foreach ($classes as $class) { - if (class_exists($class, false)) { - $class = trim($class, '\\'); - $path = $classLoader->findFile($class); - $code = file_get_contents($path); - $separatorPos = strrpos($class, '\\'); - $className = $class; - if ($separatorPos) { - $className = substr($class, $separatorPos + 1); - } - $code = preg_replace('{^((?:final\s+)?(?:\s*))class\s+('.preg_quote($className).')}mi', '$1class $2_composer_tmp'.self::$classCounter, $code, 1); - $code = str_replace('__FILE__', var_export($path, true), $code); - $code = str_replace('__DIR__', var_export(dirname($path), true), $code); - $code = str_replace('__CLASS__', var_export($class, true), $code); - $code = preg_replace('/^\s*<\?(php)?/i', '', $code, 1); - eval($code); - $class .= '_composer_tmp'.self::$classCounter; - self::$classCounter++; - } - - if ($oldInstallerPlugin) { - $installer = new $class($this->io, $this->composer); - $this->composer->getInstallationManager()->addInstaller($installer); - } elseif (class_exists($class)) { - $plugin = new $class(); - $this->addPlugin($plugin); - $this->registeredPlugins[] = $package->getName(); - } elseif ($failOnMissingClasses) { - throw new \UnexpectedValueException('Plugin '.$package->getName().' could not be initialized, class not found: '.$class); - } - } - } - - /** - * Returns the version of the internal composer-plugin-api package. - * - * @return string - */ - protected function getPluginApiVersion() - { - return PluginInterface::PLUGIN_API_VERSION; - } - - /** - * Adds a plugin, activates it and registers it with the event dispatcher - * - * Ideally plugin packages should be registered via registerPackage, but if you use Composer - * programmatically and want to register a plugin class directly this is a valid way - * to do it. - * - * @param PluginInterface $plugin plugin instance - */ - public function addPlugin(PluginInterface $plugin) - { - $this->io->writeError('Loading plugin '.get_class($plugin), true, IOInterface::DEBUG); - $this->plugins[] = $plugin; - $plugin->activate($this->composer, $this->io); - - if ($plugin instanceof EventSubscriberInterface) { - $this->composer->getEventDispatcher()->addSubscriber($plugin); - } - } - - /** - * Load all plugins and installers from a repository - * - * Note that plugins in the specified repository that rely on events that - * have fired prior to loading will be missed. This means you likely want to - * call this method as early as possible. - * - * @param RepositoryInterface $repo Repository to scan for plugins to install - * - * @throws \RuntimeException - */ - private function loadRepository(RepositoryInterface $repo) - { - $packages = $repo->getPackages(); - $sortedPackages = array_reverse(PackageSorter::sortPackages($packages)); - foreach ($sortedPackages as $package) { - if (!($package instanceof CompletePackage)) { - continue; - } - if ('composer-plugin' === $package->getType()) { - $this->registerPackage($package); - // Backward compatibility - } elseif ('composer-installer' === $package->getType()) { - $this->registerPackage($package); - } - } - } - - /** - * Recursively generates a map of package names to packages for all deps - * - * @param Pool $pool Package pool of installed packages - * @param array $collected Current state of the map for recursion - * @param PackageInterface $package The package to analyze - * - * @return array Map of package names to packages - */ - private function collectDependencies(Pool $pool, array $collected, PackageInterface $package) - { - $requires = array_merge( - $package->getRequires(), - $package->getDevRequires() - ); - - foreach ($requires as $requireLink) { - $requiredPackage = $this->lookupInstalledPackage($pool, $requireLink); - if ($requiredPackage && !isset($collected[$requiredPackage->getName()])) { - $collected[$requiredPackage->getName()] = $requiredPackage; - $collected = $this->collectDependencies($pool, $collected, $requiredPackage); - } - } - - return $collected; - } - - /** - * Resolves a package link to a package in the installed pool - * - * Since dependencies are already installed this should always find one. - * - * @param Pool $pool Pool of installed packages only - * @param Link $link Package link to look up - * - * @return PackageInterface|null The found package - */ - private function lookupInstalledPackage(Pool $pool, Link $link) - { - $packages = $pool->whatProvides($link->getTarget(), $link->getConstraint()); - - return !empty($packages) ? $packages[0] : null; - } - - /** - * Retrieves the path a package is installed to. - * - * @param PackageInterface $package - * @param bool $global Whether this is a global package - * - * @return string Install path - */ - private function getInstallPath(PackageInterface $package, $global = false) - { - if (!$global) { - return $this->composer->getInstallationManager()->getInstallPath($package); - } - - return $this->globalComposer->getInstallationManager()->getInstallPath($package); - } - - /** - * @param PluginInterface $plugin - * @param string $capability - * @throws \RuntimeException On empty or non-string implementation class name value - * @return null|string The fully qualified class of the implementation or null if Plugin is not of Capable type or does not provide it - */ - protected function getCapabilityImplementationClassName(PluginInterface $plugin, $capability) - { - if (!($plugin instanceof Capable)) { - return null; - } - - $capabilities = (array) $plugin->getCapabilities(); - - if (!empty($capabilities[$capability]) && is_string($capabilities[$capability]) && trim($capabilities[$capability])) { - return trim($capabilities[$capability]); - } - - if ( - array_key_exists($capability, $capabilities) - && (empty($capabilities[$capability]) || !is_string($capabilities[$capability]) || !trim($capabilities[$capability])) - ) { - throw new \UnexpectedValueException('Plugin '.get_class($plugin).' provided invalid capability class name(s), got '.var_export($capabilities[$capability], 1)); - } - } - - /** - * @param PluginInterface $plugin - * @param string $capabilityClassName The fully qualified name of the API interface which the plugin may provide - * an implementation of. - * @param array $ctorArgs Arguments passed to Capability's constructor. - * Keeping it an array will allow future values to be passed w\o changing the signature. - * @return null|Capability - */ - public function getPluginCapability(PluginInterface $plugin, $capabilityClassName, array $ctorArgs = array()) - { - if ($capabilityClass = $this->getCapabilityImplementationClassName($plugin, $capabilityClassName)) { - if (!class_exists($capabilityClass)) { - throw new \RuntimeException("Cannot instantiate Capability, as class $capabilityClass from plugin ".get_class($plugin)." does not exist."); - } - - $ctorArgs['plugin'] = $plugin; - $capabilityObj = new $capabilityClass($ctorArgs); - - // FIXME these could use is_a and do the check *before* instantiating once drop support for php<5.3.9 - if (!$capabilityObj instanceof Capability || !$capabilityObj instanceof $capabilityClassName) { - throw new \RuntimeException( - 'Class ' . $capabilityClass . ' must implement both Composer\Plugin\Capability\Capability and '. $capabilityClassName . '.' - ); - } - - return $capabilityObj; - } - } - - /** - * @param string $capabilityClassName The fully qualified name of the API interface which the plugin may provide - * an implementation of. - * @param array $ctorArgs Arguments passed to Capability's constructor. - * Keeping it an array will allow future values to be passed w\o changing the signature. - * @return Capability[] - */ - public function getPluginCapabilities($capabilityClassName, array $ctorArgs = array()) - { - $capabilities = array(); - foreach ($this->getPlugins() as $plugin) { - if ($capability = $this->getPluginCapability($plugin, $capabilityClassName, $ctorArgs)) { - $capabilities[] = $capability; - } - } - - return $capabilities; - } -} diff --git a/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php b/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php deleted file mode 100644 index 60ad05b..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin; - -use Composer\EventDispatcher\Event; -use Symfony\Component\Console\Input\InputInterface; - -/** - * The pre command run event. - * - * @author Jordi Boggiano - */ -class PreCommandRunEvent extends Event -{ - /** - * @var InputInterface - */ - private $input; - - /** - * @var string - */ - private $command; - - /** - * Constructor. - * - * @param string $name The event name - * @param InputInterface $input - * @param string $command The command about to be executed - */ - public function __construct($name, InputInterface $input, $command) - { - parent::__construct($name); - $this->input = $input; - $this->command = $command; - } - - /** - * Returns the console input - * - * @return InputInterface - */ - public function getInput() - { - return $this->input; - } - - /** - * Returns the command about to be executed - * - * @return string - */ - public function getCommand() - { - return $this->command; - } -} diff --git a/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php b/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php deleted file mode 100644 index 7ae6821..0000000 --- a/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Plugin; - -use Composer\EventDispatcher\Event; -use Composer\Util\RemoteFilesystem; - -/** - * The pre file download event. - * - * @author Nils Adermann - */ -class PreFileDownloadEvent extends Event -{ - /** - * @var RemoteFilesystem - */ - private $rfs; - - /** - * @var string - */ - private $processedUrl; - - /** - * Constructor. - * - * @param string $name The event name - * @param RemoteFilesystem $rfs - * @param string $processedUrl - */ - public function __construct($name, RemoteFilesystem $rfs, $processedUrl) - { - parent::__construct($name); - $this->rfs = $rfs; - $this->processedUrl = $processedUrl; - } - - /** - * Returns the remote filesystem - * - * @return RemoteFilesystem - */ - public function getRemoteFilesystem() - { - return $this->rfs; - } - - /** - * Sets the remote filesystem - * - * @param RemoteFilesystem $rfs - */ - public function setRemoteFilesystem(RemoteFilesystem $rfs) - { - $this->rfs = $rfs; - } - - /** - * Retrieves the processed URL this remote filesystem will be used for - * - * @return string - */ - public function getProcessedUrl() - { - return $this->processedUrl; - } -} diff --git a/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php b/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php deleted file mode 100644 index c64890b..0000000 --- a/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php +++ /dev/null @@ -1,94 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Question; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Question\Question; - -/** - * Represents a yes/no question - * Enforces strict responses rather than non-standard answers counting as default - * Based on Symfony\Component\Console\Question\ConfirmationQuestion - * - * @author Theo Tonge - */ -class StrictConfirmationQuestion extends Question -{ - private $trueAnswerRegex; - private $falseAnswerRegex; - - /** - * Constructor.s - * - * @param string $question The question to ask to the user - * @param bool $default The default answer to return, true or false - * @param string $trueAnswerRegex A regex to match the "yes" answer - * @param string $falseAnswerRegex A regex to match the "no" answer - */ - public function __construct($question, $default = true, $trueAnswerRegex = '/^y(?:es)?$/i', $falseAnswerRegex = '/^no?$/i') - { - parent::__construct($question, (bool) $default); - - $this->trueAnswerRegex = $trueAnswerRegex; - $this->falseAnswerRegex = $falseAnswerRegex; - $this->setNormalizer($this->getDefaultNormalizer()); - $this->setValidator($this->getDefaultValidator()); - } - - /** - * Returns the default answer normalizer. - * - * @return callable - */ - private function getDefaultNormalizer() - { - $default = $this->getDefault(); - $trueRegex = $this->trueAnswerRegex; - $falseRegex = $this->falseAnswerRegex; - - return function ($answer) use ($default, $trueRegex, $falseRegex) { - if (is_bool($answer)) { - return $answer; - } - if (empty($answer) && !empty($default)) { - return $default; - } - - if (preg_match($trueRegex, $answer)) { - return true; - } - - if (preg_match($falseRegex, $answer)) { - return false; - } - - return null; - }; - } - - /** - * Returns the default answer validator. - * - * @return callable - */ - private function getDefaultValidator() - { - return function ($answer) { - if (!is_bool($answer)) { - throw new InvalidArgumentException('Please answer yes, y, no, or n.'); - } - - return $answer; - }; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php b/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php deleted file mode 100644 index 4f0409a..0000000 --- a/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php +++ /dev/null @@ -1,208 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\AliasPackage; -use Composer\Package\PackageInterface; -use Composer\Package\CompletePackageInterface; -use Composer\Package\Version\VersionParser; -use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Semver\Constraint\Constraint; - -/** - * A repository implementation that simply stores packages in an array - * - * @author Nils Adermann - */ -class ArrayRepository extends BaseRepository -{ - /** @var PackageInterface[] */ - protected $packages; - - public function __construct(array $packages = array()) - { - foreach ($packages as $package) { - $this->addPackage($package); - } - } - - /** - * {@inheritDoc} - */ - public function findPackage($name, $constraint) - { - $name = strtolower($name); - - if (!$constraint instanceof ConstraintInterface) { - $versionParser = new VersionParser(); - $constraint = $versionParser->parseConstraints($constraint); - } - - foreach ($this->getPackages() as $package) { - if ($name === $package->getName()) { - $pkgConstraint = new Constraint('==', $package->getVersion()); - if ($constraint->matches($pkgConstraint)) { - return $package; - } - } - } - - return null; - } - - /** - * {@inheritDoc} - */ - public function findPackages($name, $constraint = null) - { - // normalize name - $name = strtolower($name); - $packages = array(); - - if (null !== $constraint && !$constraint instanceof ConstraintInterface) { - $versionParser = new VersionParser(); - $constraint = $versionParser->parseConstraints($constraint); - } - - foreach ($this->getPackages() as $package) { - if ($name === $package->getName()) { - $pkgConstraint = new Constraint('==', $package->getVersion()); - if (null === $constraint || $constraint->matches($pkgConstraint)) { - $packages[] = $package; - } - } - } - - return $packages; - } - - /** - * {@inheritDoc} - */ - public function search($query, $mode = 0, $type = null) - { - $regex = '{(?:'.implode('|', preg_split('{\s+}', $query)).')}i'; - - $matches = array(); - foreach ($this->getPackages() as $package) { - $name = $package->getName(); - if (isset($matches[$name])) { - continue; - } - if (preg_match($regex, $name) - || ($mode === self::SEARCH_FULLTEXT && $package instanceof CompletePackageInterface && preg_match($regex, implode(' ', (array) $package->getKeywords()) . ' ' . $package->getDescription())) - ) { - if (null !== $type && $package->getType() !== $type) { - continue; - } - - $matches[$name] = array( - 'name' => $package->getPrettyName(), - 'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : null, - ); - } - } - - return array_values($matches); - } - - /** - * {@inheritDoc} - */ - public function hasPackage(PackageInterface $package) - { - $packageId = $package->getUniqueName(); - - foreach ($this->getPackages() as $repoPackage) { - if ($packageId === $repoPackage->getUniqueName()) { - return true; - } - } - - return false; - } - - /** - * Adds a new package to the repository - * - * @param PackageInterface $package - */ - public function addPackage(PackageInterface $package) - { - if (null === $this->packages) { - $this->initialize(); - } - $package->setRepository($this); - $this->packages[] = $package; - - if ($package instanceof AliasPackage) { - $aliasedPackage = $package->getAliasOf(); - if (null === $aliasedPackage->getRepository()) { - $this->addPackage($aliasedPackage); - } - } - } - - protected function createAliasPackage(PackageInterface $package, $alias, $prettyAlias) - { - return new AliasPackage($package instanceof AliasPackage ? $package->getAliasOf() : $package, $alias, $prettyAlias); - } - - /** - * Removes package from repository. - * - * @param PackageInterface $package package instance - */ - public function removePackage(PackageInterface $package) - { - $packageId = $package->getUniqueName(); - - foreach ($this->getPackages() as $key => $repoPackage) { - if ($packageId === $repoPackage->getUniqueName()) { - array_splice($this->packages, $key, 1); - - return; - } - } - } - - /** - * {@inheritDoc} - */ - public function getPackages() - { - if (null === $this->packages) { - $this->initialize(); - } - - return $this->packages; - } - - /** - * Returns the number of packages in this repository - * - * @return int Number of packages - */ - public function count() - { - return count($this->packages); - } - - /** - * Initializes the packages array. Mostly meant as an extension point. - */ - protected function initialize() - { - $this->packages = array(); - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php b/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php deleted file mode 100644 index aff80e4..0000000 --- a/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php +++ /dev/null @@ -1,107 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\IO\IOInterface; -use Composer\Json\JsonFile; -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\Loader\LoaderInterface; -use Composer\Util\Zip; - -/** - * @author Serge Smertin - */ -class ArtifactRepository extends ArrayRepository implements ConfigurableRepositoryInterface -{ - /** @var LoaderInterface */ - protected $loader; - - protected $lookup; - protected $repoConfig; - private $io; - - public function __construct(array $repoConfig, IOInterface $io) - { - parent::__construct(); - if (!extension_loaded('zip')) { - throw new \RuntimeException('The artifact repository requires PHP\'s zip extension'); - } - - $this->loader = new ArrayLoader(); - $this->lookup = $repoConfig['url']; - $this->io = $io; - $this->repoConfig = $repoConfig; - } - - public function getRepoConfig() - { - return $this->repoConfig; - } - - protected function initialize() - { - parent::initialize(); - - $this->scanDirectory($this->lookup); - } - - private function scanDirectory($path) - { - $io = $this->io; - - $directory = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS); - $iterator = new \RecursiveIteratorIterator($directory); - $regex = new \RegexIterator($iterator, '/^.+\.(zip|phar)$/i'); - foreach ($regex as $file) { - /* @var $file \SplFileInfo */ - if (!$file->isFile()) { - continue; - } - - $package = $this->getComposerInformation($file); - if (!$package) { - $io->writeError("File {$file->getBasename()} doesn't seem to hold a package", true, IOInterface::VERBOSE); - continue; - } - - $template = 'Found package %s (%s) in file %s'; - $io->writeError(sprintf($template, $package->getName(), $package->getPrettyVersion(), $file->getBasename()), true, IOInterface::VERBOSE); - - $this->addPackage($package); - } - } - - private function getComposerInformation(\SplFileInfo $file) - { - $json = Zip::getComposerJson($file->getPathname()); - - if (null === $json) { - return false; - } - - $package = JsonFile::parseJson($json, $file->getPathname().'#composer.json'); - $package['dist'] = array( - 'type' => 'zip', - 'url' => strtr($file->getPathname(), '\\', '/'), - 'shasum' => sha1_file($file->getRealPath()), - ); - - try { - $package = $this->loader->load($package); - } catch (\UnexpectedValueException $e) { - throw new \UnexpectedValueException('Failed loading package in '.$file.': '.$e->getMessage(), 0, $e); - } - - return $package; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/BaseRepository.php b/vendor/composer/composer/src/Composer/Repository/BaseRepository.php deleted file mode 100644 index d668f43..0000000 --- a/vendor/composer/composer/src/Composer/Repository/BaseRepository.php +++ /dev/null @@ -1,178 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\RootPackageInterface; -use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Semver\Constraint\Constraint; -use Composer\Package\Link; - -/** - * Common ancestor class for generic repository functionality. - * - * @author Niels Keurentjes - */ -abstract class BaseRepository implements RepositoryInterface -{ - /** - * Returns a list of links causing the requested needle packages to be installed, as an associative array with the - * dependent's name as key, and an array containing in order the PackageInterface and Link describing the relationship - * as values. If recursive lookup was requested a third value is returned containing an identically formed array up - * to the root package. That third value will be false in case a circular recursion was detected. - * - * @param string|string[] $needle The package name(s) to inspect. - * @param ConstraintInterface|null $constraint Optional constraint to filter by. - * @param bool $invert Whether to invert matches to discover reasons for the package *NOT* to be installed. - * @param bool $recurse Whether to recursively expand the requirement tree up to the root package. - * @param string[] $packagesFound Used internally when recurring - * @return array An associative array of arrays as described above. - */ - public function getDependents($needle, $constraint = null, $invert = false, $recurse = true, $packagesFound = null) - { - $needles = array_map('strtolower', (array) $needle); - $results = array(); - - // initialize the array with the needles before any recursion occurs - if (null === $packagesFound) { - $packagesFound = $needles; - } - - // locate root package for use below - $rootPackage = null; - foreach ($this->getPackages() as $package) { - if ($package instanceof RootPackageInterface) { - $rootPackage = $package; - break; - } - } - - // Loop over all currently installed packages. - foreach ($this->getPackages() as $package) { - $links = $package->getRequires(); - - // each loop needs its own "tree" as we want to show the complete dependent set of every needle - // without warning all the time about finding circular deps - $packagesInTree = $packagesFound; - - // Replacements are considered valid reasons for a package to be installed during forward resolution - if (!$invert) { - $links += $package->getReplaces(); - - // On forward search, check if any replaced package was required and add the replaced - // packages to the list of needles. Contrary to the cross-reference link check below, - // replaced packages are the target of links. - foreach ($package->getReplaces() as $link) { - foreach ($needles as $needle) { - if ($link->getSource() === $needle) { - if ($constraint === null || ($link->getConstraint()->matches($constraint) === !$invert)) { - // already displayed this node's dependencies, cutting short - if (in_array($link->getTarget(), $packagesInTree)) { - $results[] = array($package, $link, false); - continue; - } - $packagesInTree[] = $link->getTarget(); - $dependents = $recurse ? $this->getDependents($link->getTarget(), null, false, true, $packagesInTree) : array(); - $results[] = array($package, $link, $dependents); - $needles[] = $link->getTarget(); - } - } - } - } - } - - // Require-dev is only relevant for the root package - if ($package instanceof RootPackageInterface) { - $links += $package->getDevRequires(); - } - - // Cross-reference all discovered links to the needles - foreach ($links as $link) { - foreach ($needles as $needle) { - if ($link->getTarget() === $needle) { - if ($constraint === null || ($link->getConstraint()->matches($constraint) === !$invert)) { - // already displayed this node's dependencies, cutting short - if (in_array($link->getSource(), $packagesInTree)) { - $results[] = array($package, $link, false); - continue; - } - $packagesInTree[] = $link->getSource(); - $dependents = $recurse ? $this->getDependents($link->getSource(), null, false, true, $packagesInTree) : array(); - $results[] = array($package, $link, $dependents); - } - } - } - } - - // When inverting, we need to check for conflicts of the needles against installed packages - if ($invert && in_array($package->getName(), $needles)) { - foreach ($package->getConflicts() as $link) { - foreach ($this->findPackages($link->getTarget()) as $pkg) { - $version = new Constraint('=', $pkg->getVersion()); - if ($link->getConstraint()->matches($version) === $invert) { - $results[] = array($package, $link, false); - } - } - } - } - - // When inverting, we need to check for conflicts of the needles' requirements against installed packages - if ($invert && $constraint && in_array($package->getName(), $needles) && $constraint->matches(new Constraint('=', $package->getVersion()))) { - foreach ($package->getRequires() as $link) { - if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) { - if ($this->findPackage($link->getTarget(), $link->getConstraint())) { - continue; - } - - $platformPkg = $this->findPackage($link->getTarget(), '*'); - $description = $platformPkg ? 'but '.$platformPkg->getPrettyVersion().' is installed' : 'but it is missing'; - $results[] = array($package, new Link($package->getName(), $link->getTarget(), null, 'requires', $link->getPrettyConstraint().' '.$description), false); - - continue; - } - - foreach ($this->getPackages() as $pkg) { - if (!in_array($link->getTarget(), $pkg->getNames())) { - continue; - } - - $version = new Constraint('=', $pkg->getVersion()); - if (!$link->getConstraint()->matches($version)) { - // if we have a root package (we should but can not guarantee..) we show - // the root requires as well to perhaps allow to find an issue there - if ($rootPackage) { - foreach (array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires()) as $rootReq) { - if (in_array($rootReq->getTarget(), $pkg->getNames()) && !$rootReq->getConstraint()->matches($link->getConstraint())) { - $results[] = array($package, $link, false); - $results[] = array($rootPackage, $rootReq, false); - continue 3; - } - } - $results[] = array($package, $link, false); - $results[] = array($rootPackage, new Link($rootPackage->getName(), $link->getTarget(), null, 'does not require', 'but ' . $pkg->getPrettyVersion() . ' is installed'), false); - } else { - // no root so let's just print whatever we found - $results[] = array($package, $link, false); - } - } - - continue 2; - } - } - } - } - - ksort($results); - - return $results; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php b/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php deleted file mode 100644 index 649c2f1..0000000 --- a/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php +++ /dev/null @@ -1,841 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\PackageInterface; -use Composer\Package\AliasPackage; -use Composer\Package\Version\VersionParser; -use Composer\DependencyResolver\Pool; -use Composer\Json\JsonFile; -use Composer\Cache; -use Composer\Config; -use Composer\Composer; -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\Util\RemoteFilesystem; -use Composer\Plugin\PluginEvents; -use Composer\Plugin\PreFileDownloadEvent; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Downloader\TransportException; -use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Semver\Constraint\Constraint; - -/** - * @author Jordi Boggiano - */ -class ComposerRepository extends ArrayRepository implements ConfigurableRepositoryInterface -{ - protected $config; - protected $repoConfig; - protected $options; - protected $url; - protected $baseUrl; - protected $io; - protected $rfs; - protected $cache; - protected $notifyUrl; - protected $searchUrl; - protected $hasProviders = false; - protected $providersUrl; - protected $lazyProvidersUrl; - protected $providerListing; - protected $providers = array(); - protected $providersByUid = array(); - protected $loader; - protected $rootAliases; - protected $allowSslDowngrade = false; - protected $eventDispatcher; - protected $sourceMirrors; - protected $distMirrors; - private $degradedMode = false; - private $rootData; - private $hasPartialPackages; - private $partialPackagesByName; - - public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, RemoteFilesystem $rfs = null) - { - parent::__construct(); - if (!preg_match('{^[\w.]+\??://}', $repoConfig['url'])) { - // assume http as the default protocol - $repoConfig['url'] = 'http://'.$repoConfig['url']; - } - $repoConfig['url'] = rtrim($repoConfig['url'], '/'); - - if ('https?' === substr($repoConfig['url'], 0, 6)) { - $repoConfig['url'] = (extension_loaded('openssl') ? 'https' : 'http') . substr($repoConfig['url'], 6); - } - - $urlBits = parse_url($repoConfig['url']); - if ($urlBits === false || empty($urlBits['scheme'])) { - throw new \UnexpectedValueException('Invalid url given for Composer repository: '.$repoConfig['url']); - } - - if (!isset($repoConfig['options'])) { - $repoConfig['options'] = array(); - } - if (isset($repoConfig['allow_ssl_downgrade']) && true === $repoConfig['allow_ssl_downgrade']) { - $this->allowSslDowngrade = true; - } - - $this->config = $config; - $this->options = $repoConfig['options']; - $this->url = $repoConfig['url']; - - // force url for packagist.org to repo.packagist.org - if (preg_match('{^(?Phttps?)://packagist\.org/?$}i', $this->url, $match)) { - $this->url = $match['proto'].'://repo.packagist.org'; - } - - $this->baseUrl = rtrim(preg_replace('{(?:/[^/\\\\]+\.json)?(?:[?#].*)?$}', '', $this->url), '/'); - $this->io = $io; - $this->cache = new Cache($io, $config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $this->url), 'a-z0-9.$'); - $this->loader = new ArrayLoader(); - if ($rfs && $this->options) { - $rfs = clone $rfs; - $rfs->setOptions($this->options); - } - $this->rfs = $rfs ?: Factory::createRemoteFilesystem($this->io, $this->config, $this->options); - $this->eventDispatcher = $eventDispatcher; - $this->repoConfig = $repoConfig; - } - - public function getRepoConfig() - { - return $this->repoConfig; - } - - public function setRootAliases(array $rootAliases) - { - $this->rootAliases = $rootAliases; - } - - /** - * {@inheritDoc} - */ - public function findPackage($name, $constraint) - { - if (!$this->hasProviders()) { - return parent::findPackage($name, $constraint); - } - - $name = strtolower($name); - if (!$constraint instanceof ConstraintInterface) { - $versionParser = new VersionParser(); - $constraint = $versionParser->parseConstraints($constraint); - } - - foreach ($this->getProviderNames() as $providerName) { - if ($name === $providerName) { - $packages = $this->whatProvides(new Pool('dev'), $providerName); - foreach ($packages as $package) { - if ($name === $package->getName()) { - $pkgConstraint = new Constraint('==', $package->getVersion()); - if ($constraint->matches($pkgConstraint)) { - return $package; - } - } - } - break; - } - } - } - - /** - * {@inheritDoc} - */ - public function findPackages($name, $constraint = null) - { - if (!$this->hasProviders()) { - return parent::findPackages($name, $constraint); - } - // normalize name - $name = strtolower($name); - - if (null !== $constraint && !$constraint instanceof ConstraintInterface) { - $versionParser = new VersionParser(); - $constraint = $versionParser->parseConstraints($constraint); - } - - $packages = array(); - - foreach ($this->getProviderNames() as $providerName) { - if ($name === $providerName) { - $candidates = $this->whatProvides(new Pool('dev'), $providerName); - foreach ($candidates as $package) { - if ($name === $package->getName()) { - $pkgConstraint = new Constraint('==', $package->getVersion()); - if (null === $constraint || $constraint->matches($pkgConstraint)) { - $packages[] = $package; - } - } - } - break; - } - } - - return $packages; - } - - public function getPackages() - { - if ($this->hasProviders()) { - throw new \LogicException('Composer repositories that have providers can not load the complete list of packages, use getProviderNames instead.'); - } - - return parent::getPackages(); - } - - /** - * {@inheritDoc} - */ - public function search($query, $mode = 0, $type = null) - { - $this->loadRootServerFile(); - - if ($this->searchUrl && $mode === self::SEARCH_FULLTEXT) { - $url = str_replace(array('%query%', '%type%'), array($query, $type), $this->searchUrl); - - $origin = RemoteFilesystem::getOrigin($url); - $json = $this->rfs->getContents($origin, $url, false); - $search = JsonFile::parseJson($json, $url); - - if (empty($search['results'])) { - return array(); - } - - $results = array(); - foreach ($search['results'] as $result) { - // do not show virtual packages in results as they are not directly useful from a composer perspective - if (empty($result['virtual'])) { - $results[] = $result; - } - } - - return $results; - } - - if ($this->hasProviders()) { - $results = array(); - $regex = '{(?:'.implode('|', preg_split('{\s+}', $query)).')}i'; - - foreach ($this->getProviderNames() as $name) { - if (preg_match($regex, $name)) { - $results[] = array('name' => $name); - } - } - - return $results; - } - - return parent::search($query, $mode); - } - - public function getProviderNames() - { - $this->loadRootServerFile(); - - if (null === $this->providerListing) { - $this->loadProviderListings($this->loadRootServerFile()); - } - - if ($this->hasPartialPackages) { - if (null === $this->partialPackagesByName) { - $this->initializePartialPackages(); - } - - return array_keys($this->partialPackagesByName); - } - - if ($this->lazyProvidersUrl) { - // Can not determine list of provided packages for lazy repositories - return array(); - } - - if ($this->providersUrl) { - return array_keys($this->providerListing); - } - - return array(); - } - - protected function configurePackageTransportOptions(PackageInterface $package) - { - foreach ($package->getDistUrls() as $url) { - if (strpos($url, $this->baseUrl) === 0) { - $package->setTransportOptions($this->options); - - return; - } - } - } - - public function hasProviders() - { - $this->loadRootServerFile(); - - return $this->hasProviders; - } - - public function resetPackageIds() - { - foreach ($this->providersByUid as $package) { - if ($package instanceof AliasPackage) { - $package->getAliasOf()->setId(-1); - } - $package->setId(-1); - } - } - - /** - * @param Pool $pool - * @param string $name package name - * @param bool $bypassFilters If set to true, this bypasses the stability filtering, and forces a recompute without cache - * @return array|mixed - */ - public function whatProvides(Pool $pool, $name, $bypassFilters = false) - { - if (isset($this->providers[$name]) && !$bypassFilters) { - return $this->providers[$name]; - } - - if ($this->hasPartialPackages && null === $this->partialPackagesByName) { - $this->initializePartialPackages(); - } - - if (!$this->hasPartialPackages || !isset($this->partialPackagesByName[$name])) { - // skip platform packages, root package and composer-plugin-api - if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name) || '__root__' === $name || 'composer-plugin-api' === $name) { - return array(); - } - - if (null === $this->providerListing) { - $this->loadProviderListings($this->loadRootServerFile()); - } - - $useLastModifiedCheck = false; - if ($this->lazyProvidersUrl && !isset($this->providerListing[$name])) { - $hash = null; - $url = str_replace('%package%', $name, $this->lazyProvidersUrl); - $cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; - $useLastModifiedCheck = true; - } elseif ($this->providersUrl) { - // package does not exist in this repo - if (!isset($this->providerListing[$name])) { - return array(); - } - - $hash = $this->providerListing[$name]['sha256']; - $url = str_replace(array('%package%', '%hash%'), array($name, $hash), $this->providersUrl); - $cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; - } else { - return array(); - } - - $packages = null; - if ($cacheKey) { - if (!$useLastModifiedCheck && $hash && $this->cache->sha256($cacheKey) === $hash) { - $packages = json_decode($this->cache->read($cacheKey), true); - } elseif ($useLastModifiedCheck) { - if ($contents = $this->cache->read($cacheKey)) { - $contents = json_decode($contents, true); - if (isset($contents['last-modified'])) { - $response = $this->fetchFileIfLastModified($url, $cacheKey, $contents['last-modified']); - if (true === $response) { - $packages = $contents; - } elseif ($response) { - $packages = $response; - } - } - } - } - } - - if (!$packages) { - try { - $packages = $this->fetchFile($url, $cacheKey, $hash, $useLastModifiedCheck); - } catch (TransportException $e) { - // 404s are acceptable for lazy provider repos - if ($e->getStatusCode() === 404 && $this->lazyProvidersUrl) { - $packages = array('packages' => array()); - } else { - throw $e; - } - } - } - - $loadingPartialPackage = false; - } else { - $packages = array('packages' => array('versions' => $this->partialPackagesByName[$name])); - $loadingPartialPackage = true; - } - - $this->providers[$name] = array(); - foreach ($packages['packages'] as $versions) { - foreach ($versions as $version) { - if (!$loadingPartialPackage && $this->hasPartialPackages && isset($this->partialPackagesByName[$version['name']])) { - continue; - } - - // avoid loading the same objects twice - if (isset($this->providersByUid[$version['uid']])) { - // skip if already assigned - if (!isset($this->providers[$name][$version['uid']])) { - // expand alias in two packages - if ($this->providersByUid[$version['uid']] instanceof AliasPackage) { - $this->providers[$name][$version['uid']] = $this->providersByUid[$version['uid']]->getAliasOf(); - $this->providers[$name][$version['uid'].'-alias'] = $this->providersByUid[$version['uid']]; - } else { - $this->providers[$name][$version['uid']] = $this->providersByUid[$version['uid']]; - } - // check for root aliases - if (isset($this->providersByUid[$version['uid'].'-root'])) { - $this->providers[$name][$version['uid'].'-root'] = $this->providersByUid[$version['uid'].'-root']; - } - } - } else { - if (!$bypassFilters && !$pool->isPackageAcceptable(strtolower($version['name']), VersionParser::parseStability($version['version']))) { - continue; - } - - // load acceptable packages in the providers - $package = $this->createPackage($version, 'Composer\Package\CompletePackage'); - $package->setRepository($this); - - if ($package instanceof AliasPackage) { - $aliased = $package->getAliasOf(); - $aliased->setRepository($this); - - $this->providers[$name][$version['uid']] = $aliased; - $this->providers[$name][$version['uid'].'-alias'] = $package; - - // override provider with its alias so it can be expanded in the if block above - $this->providersByUid[$version['uid']] = $package; - } else { - $this->providers[$name][$version['uid']] = $package; - $this->providersByUid[$version['uid']] = $package; - } - - // handle root package aliases - unset($rootAliasData); - - if (isset($this->rootAliases[$package->getName()][$package->getVersion()])) { - $rootAliasData = $this->rootAliases[$package->getName()][$package->getVersion()]; - } elseif ($package instanceof AliasPackage && isset($this->rootAliases[$package->getName()][$package->getAliasOf()->getVersion()])) { - $rootAliasData = $this->rootAliases[$package->getName()][$package->getAliasOf()->getVersion()]; - } - - if (isset($rootAliasData)) { - $alias = $this->createAliasPackage($package, $rootAliasData['alias_normalized'], $rootAliasData['alias']); - $alias->setRepository($this); - - $this->providers[$name][$version['uid'].'-root'] = $alias; - $this->providersByUid[$version['uid'].'-root'] = $alias; - } - } - } - } - - $result = $this->providers[$name]; - - // clean up the cache because otherwise using this puts the repo in an inconsistent state with a polluted unfiltered cache - // which is likely not an issue but might cause hard to track behaviors depending on how the repo is used - if ($bypassFilters) { - foreach ($this->providers[$name] as $uid => $provider) { - unset($this->providersByUid[$uid]); - } - unset($this->providers[$name]); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - protected function initialize() - { - parent::initialize(); - - $repoData = $this->loadDataFromServer(); - - foreach ($repoData as $package) { - $this->addPackage($this->createPackage($package, 'Composer\Package\CompletePackage')); - } - } - - /** - * Adds a new package to the repository - * - * @param PackageInterface $package - */ - public function addPackage(PackageInterface $package) - { - parent::addPackage($package); - $this->configurePackageTransportOptions($package); - } - - protected function loadRootServerFile() - { - if (null !== $this->rootData) { - return $this->rootData; - } - - if (!extension_loaded('openssl') && 'https' === substr($this->url, 0, 5)) { - throw new \RuntimeException('You must enable the openssl extension in your php.ini to load information from '.$this->url); - } - - $jsonUrlParts = parse_url($this->url); - - if (isset($jsonUrlParts['path']) && false !== strpos($jsonUrlParts['path'], '.json')) { - $jsonUrl = $this->url; - } else { - $jsonUrl = $this->url . '/packages.json'; - } - - $data = $this->fetchFile($jsonUrl, 'packages.json'); - - if (!empty($data['notify-batch'])) { - $this->notifyUrl = $this->canonicalizeUrl($data['notify-batch']); - } elseif (!empty($data['notify'])) { - $this->notifyUrl = $this->canonicalizeUrl($data['notify']); - } - - if (!empty($data['search'])) { - $this->searchUrl = $this->canonicalizeUrl($data['search']); - } - - if (!empty($data['mirrors'])) { - foreach ($data['mirrors'] as $mirror) { - if (!empty($mirror['git-url'])) { - $this->sourceMirrors['git'][] = array('url' => $mirror['git-url'], 'preferred' => !empty($mirror['preferred'])); - } - if (!empty($mirror['hg-url'])) { - $this->sourceMirrors['hg'][] = array('url' => $mirror['hg-url'], 'preferred' => !empty($mirror['preferred'])); - } - if (!empty($mirror['dist-url'])) { - $this->distMirrors[] = array( - 'url' => $this->canonicalizeUrl($mirror['dist-url']), - 'preferred' => !empty($mirror['preferred']), - ); - } - } - } - - if (!empty($data['providers-lazy-url'])) { - $this->lazyProvidersUrl = $this->canonicalizeUrl($data['providers-lazy-url']); - $this->hasProviders = true; - - $this->hasPartialPackages = !empty($data['packages']) && is_array($data['packages']); - } - - if ($this->allowSslDowngrade) { - $this->url = str_replace('https://', 'http://', $this->url); - $this->baseUrl = str_replace('https://', 'http://', $this->baseUrl); - } - - if (!empty($data['providers-url'])) { - $this->providersUrl = $this->canonicalizeUrl($data['providers-url']); - $this->hasProviders = true; - } - - if (!empty($data['providers']) || !empty($data['providers-includes'])) { - $this->hasProviders = true; - } - - // force values for packagist - if (preg_match('{^https?://repo\.packagist\.org/?$}i', $this->url) && !empty($this->repoConfig['force-lazy-providers'])) { - $this->url = 'https://repo.packagist.org'; - $this->baseUrl = 'https://repo.packagist.org'; - $this->lazyProvidersUrl = $this->canonicalizeUrl('https://repo.packagist.org/p/%package%.json'); - $this->providersUrl = null; - } elseif (!empty($this->repoConfig['force-lazy-providers'])) { - $this->lazyProvidersUrl = $this->canonicalizeUrl('/p/%package%.json'); - $this->providersUrl = null; - } - - return $this->rootData = $data; - } - - protected function canonicalizeUrl($url) - { - if ('/' === $url[0]) { - if (preg_match('{^[^:]++://[^/]*+}', $this->url, $matches)) { - return $matches[0] . $url; - } - - return $this->url; - } - - return $url; - } - - protected function loadDataFromServer() - { - $data = $this->loadRootServerFile(); - - return $this->loadIncludes($data); - } - - protected function loadProviderListings($data) - { - if (isset($data['providers'])) { - if (!is_array($this->providerListing)) { - $this->providerListing = array(); - } - $this->providerListing = array_merge($this->providerListing, $data['providers']); - } - - if ($this->providersUrl && isset($data['provider-includes'])) { - $includes = $data['provider-includes']; - foreach ($includes as $include => $metadata) { - $url = $this->baseUrl . '/' . str_replace('%hash%', $metadata['sha256'], $include); - $cacheKey = str_replace(array('%hash%','$'), '', $include); - if ($this->cache->sha256($cacheKey) === $metadata['sha256']) { - $includedData = json_decode($this->cache->read($cacheKey), true); - } else { - $includedData = $this->fetchFile($url, $cacheKey, $metadata['sha256']); - } - - $this->loadProviderListings($includedData); - } - } - } - - protected function loadIncludes($data) - { - $packages = array(); - - // legacy repo handling - if (!isset($data['packages']) && !isset($data['includes'])) { - foreach ($data as $pkg) { - foreach ($pkg['versions'] as $metadata) { - $packages[] = $metadata; - } - } - - return $packages; - } - - if (isset($data['packages'])) { - foreach ($data['packages'] as $package => $versions) { - foreach ($versions as $version => $metadata) { - $packages[] = $metadata; - } - } - } - - if (isset($data['includes'])) { - foreach ($data['includes'] as $include => $metadata) { - if ($this->cache->sha1($include) === $metadata['sha1']) { - $includedData = json_decode($this->cache->read($include), true); - } else { - $includedData = $this->fetchFile($include); - } - $packages = array_merge($packages, $this->loadIncludes($includedData)); - } - } - - return $packages; - } - - protected function createPackage(array $data, $class = 'Composer\Package\CompletePackage') - { - try { - if (!isset($data['notification-url'])) { - $data['notification-url'] = $this->notifyUrl; - } - - $package = $this->loader->load($data, $class); - if (isset($this->sourceMirrors[$package->getSourceType()])) { - $package->setSourceMirrors($this->sourceMirrors[$package->getSourceType()]); - } - $package->setDistMirrors($this->distMirrors); - $this->configurePackageTransportOptions($package); - - return $package; - } catch (\Exception $e) { - throw new \RuntimeException('Could not load package '.(isset($data['name']) ? $data['name'] : json_encode($data)).' in '.$this->url.': ['.get_class($e).'] '.$e->getMessage(), 0, $e); - } - } - - protected function fetchFile($filename, $cacheKey = null, $sha256 = null, $storeLastModifiedTime = false) - { - if (null === $cacheKey) { - $cacheKey = $filename; - $filename = $this->baseUrl.'/'.$filename; - } - - // url-encode $ signs in URLs as bad proxies choke on them - if (($pos = strpos($filename, '$')) && preg_match('{^https?://.*}i', $filename)) { - $filename = substr($filename, 0, $pos) . '%24' . substr($filename, $pos + 1); - } - - $retries = 3; - while ($retries--) { - try { - $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->rfs, $filename); - if ($this->eventDispatcher) { - $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); - } - - $origin = RemoteFilesystem::getOrigin($filename); - $rfs = $preFileDownloadEvent->getRemoteFilesystem(); - - $json = $rfs->getContents($origin, $filename, false); - if ($sha256 && $sha256 !== hash('sha256', $json)) { - // undo downgrade before trying again if http seems to be hijacked or modifying content somehow - if ($this->allowSslDowngrade) { - $this->url = str_replace('http://', 'https://', $this->url); - $this->baseUrl = str_replace('http://', 'https://', $this->baseUrl); - $filename = str_replace('http://', 'https://', $filename); - } - - if ($retries) { - usleep(100000); - - continue; - } - - // TODO use scarier wording once we know for sure it doesn't do false positives anymore - throw new RepositorySecurityException('The contents of '.$filename.' do not match its signature. This could indicate a man-in-the-middle attack or e.g. antivirus software corrupting files. Try running composer again and report this if you think it is a mistake.'); - } - - $data = JsonFile::parseJson($json, $filename); - RemoteFilesystem::outputWarnings($this->io, $this->url, $data); - - if ($cacheKey) { - if ($storeLastModifiedTime) { - $lastModifiedDate = $rfs->findHeaderValue($rfs->getLastHeaders(), 'last-modified'); - if ($lastModifiedDate) { - $data['last-modified'] = $lastModifiedDate; - $json = json_encode($data); - } - } - $this->cache->write($cacheKey, $json); - } - - break; - } catch (\Exception $e) { - if ($e instanceof TransportException && $e->getStatusCode() === 404) { - throw $e; - } - - if ($retries) { - usleep(100000); - continue; - } - - if ($e instanceof RepositorySecurityException) { - throw $e; - } - - if ($cacheKey && ($contents = $this->cache->read($cacheKey))) { - if (!$this->degradedMode) { - $this->io->writeError(''.$e->getMessage().''); - $this->io->writeError(''.$this->url.' could not be fully loaded, package information was loaded from the local cache and may be out of date'); - } - $this->degradedMode = true; - $data = JsonFile::parseJson($contents, $this->cache->getRoot().$cacheKey); - - break; - } - - throw $e; - } - } - - return $data; - } - - protected function fetchFileIfLastModified($filename, $cacheKey, $lastModifiedTime) - { - $retries = 3; - while ($retries--) { - try { - $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->rfs, $filename); - if ($this->eventDispatcher) { - $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); - } - - $origin = RemoteFilesystem::getOrigin($filename); - $rfs = $preFileDownloadEvent->getRemoteFilesystem(); - $options = array('http' => array('header' => array('If-Modified-Since: '.$lastModifiedTime))); - $json = $rfs->getContents($origin, $filename, false, $options); - if ($json === '' && $rfs->findStatusCode($rfs->getLastHeaders()) === 304) { - return true; - } - - $data = JsonFile::parseJson($json, $filename); - RemoteFilesystem::outputWarnings($this->io, $this->url, $data); - - $lastModifiedDate = $rfs->findHeaderValue($rfs->getLastHeaders(), 'last-modified'); - if ($lastModifiedDate) { - $data['last-modified'] = $lastModifiedDate; - $json = json_encode($data); - } - $this->cache->write($cacheKey, $json); - - return $data; - } catch (\Exception $e) { - if ($e instanceof TransportException && $e->getStatusCode() === 404) { - throw $e; - } - - if ($retries) { - usleep(100000); - continue; - } - - if (!$this->degradedMode) { - $this->io->writeError(''.$e->getMessage().''); - $this->io->writeError(''.$this->url.' could not be fully loaded, package information was loaded from the local cache and may be out of date'); - } - $this->degradedMode = true; - - return true; - } - } - } - - /** - * This initializes the packages key of a partial packages.json that contain some packages inlined + a providers-lazy-url - * - * This should only be called once - */ - private function initializePartialPackages() - { - $rootData = $this->loadRootServerFile(); - - $this->partialPackagesByName = array(); - foreach ($rootData['packages'] as $package => $versions) { - $package = strtolower($package); - foreach ($versions as $version) { - $this->partialPackagesByName[$package][] = $version; - if (!empty($version['provide']) && is_array($version['provide'])) { - foreach ($version['provide'] as $provided => $providedVersion) { - $this->partialPackagesByName[strtolower($provided)][] = $version; - } - } - if (!empty($version['replace']) && is_array($version['replace'])) { - foreach ($version['replace'] as $provided => $providedVersion) { - $this->partialPackagesByName[strtolower($provided)][] = $version; - } - } - } - } - - // wipe rootData as it is fully consumed at this point and this saves some memory - $this->rootData = true; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php b/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php deleted file mode 100644 index ce57504..0000000 --- a/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php +++ /dev/null @@ -1,164 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\PackageInterface; - -/** - * Composite repository. - * - * @author Beau Simensen - */ -class CompositeRepository extends BaseRepository -{ - /** - * List of repositories - * @var array - */ - private $repositories; - - /** - * Constructor - * @param array $repositories - */ - public function __construct(array $repositories) - { - $this->repositories = array(); - foreach ($repositories as $repo) { - $this->addRepository($repo); - } - } - - /** - * Returns all the wrapped repositories - * - * @return array - */ - public function getRepositories() - { - return $this->repositories; - } - - /** - * {@inheritdoc} - */ - public function hasPackage(PackageInterface $package) - { - foreach ($this->repositories as $repository) { - /* @var $repository RepositoryInterface */ - if ($repository->hasPackage($package)) { - return true; - } - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function findPackage($name, $constraint) - { - foreach ($this->repositories as $repository) { - /* @var $repository RepositoryInterface */ - $package = $repository->findPackage($name, $constraint); - if (null !== $package) { - return $package; - } - } - - return null; - } - - /** - * {@inheritdoc} - */ - public function findPackages($name, $constraint = null) - { - $packages = array(); - foreach ($this->repositories as $repository) { - /* @var $repository RepositoryInterface */ - $packages[] = $repository->findPackages($name, $constraint); - } - - return $packages ? call_user_func_array('array_merge', $packages) : array(); - } - - /** - * {@inheritdoc} - */ - public function search($query, $mode = 0, $type = null) - { - $matches = array(); - foreach ($this->repositories as $repository) { - /* @var $repository RepositoryInterface */ - $matches[] = $repository->search($query, $mode, $type); - } - - return $matches ? call_user_func_array('array_merge', $matches) : array(); - } - - /** - * {@inheritdoc} - */ - public function getPackages() - { - $packages = array(); - foreach ($this->repositories as $repository) { - /* @var $repository RepositoryInterface */ - $packages[] = $repository->getPackages(); - } - - return $packages ? call_user_func_array('array_merge', $packages) : array(); - } - - /** - * {@inheritdoc} - */ - public function removePackage(PackageInterface $package) - { - foreach ($this->repositories as $repository) { - /* @var $repository RepositoryInterface */ - $repository->removePackage($package); - } - } - - /** - * {@inheritdoc} - */ - public function count() - { - $total = 0; - foreach ($this->repositories as $repository) { - /* @var $repository RepositoryInterface */ - $total += $repository->count(); - } - - return $total; - } - - /** - * Add a repository. - * @param RepositoryInterface $repository - */ - public function addRepository(RepositoryInterface $repository) - { - if ($repository instanceof self) { - foreach ($repository->getRepositories() as $repo) { - $this->addRepository($repo); - } - } else { - $this->repositories[] = $repository; - } - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php b/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php deleted file mode 100644 index ff202dc..0000000 --- a/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -/** - * Configurable repository interface. - * - * @author Lukas Homza - */ -interface ConfigurableRepositoryInterface -{ - public function getRepoConfig(); -} diff --git a/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php b/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php deleted file mode 100644 index 204aa09..0000000 --- a/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php +++ /dev/null @@ -1,97 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Json\JsonFile; -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\Dumper\ArrayDumper; - -/** - * Filesystem repository. - * - * @author Konstantin Kudryashov - * @author Jordi Boggiano - */ -class FilesystemRepository extends WritableArrayRepository -{ - private $file; - - /** - * Initializes filesystem repository. - * - * @param JsonFile $repositoryFile repository json file - */ - public function __construct(JsonFile $repositoryFile) - { - parent::__construct(); - $this->file = $repositoryFile; - } - - /** - * Initializes repository (reads file, or remote address). - */ - protected function initialize() - { - parent::initialize(); - - if (!$this->file->exists()) { - return; - } - - try { - $packages = $this->file->read(); - - // forward compatibility for composer v2 installed.json - if (isset($packages['packages'])) { - $packages = $packages['packages']; - } - - if (!is_array($packages)) { - throw new \UnexpectedValueException('Could not parse package list from the repository'); - } - } catch (\Exception $e) { - throw new InvalidRepositoryException('Invalid repository data in '.$this->file->getPath().', packages could not be loaded: ['.get_class($e).'] '.$e->getMessage()); - } - - $loader = new ArrayLoader(null, true); - foreach ($packages as $packageData) { - $package = $loader->load($packageData); - $this->addPackage($package); - } - } - - public function reload() - { - $this->packages = null; - $this->initialize(); - } - - /** - * Writes writable repository. - */ - public function write() - { - $data = array(); - $dumper = new ArrayDumper(); - - foreach ($this->getCanonicalPackages() as $package) { - $data[] = $dumper->dump($package); - } - - usort($data, function ($a, $b) { - return strcmp($a['name'], $b['name']); - }); - - $this->file->write($data); - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php b/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php deleted file mode 100644 index c801d49..0000000 --- a/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -/** - * Installed array repository. - * - * This is used for serving the RootPackage inside an in-memory InstalledRepository - * - * @author Jordi Boggiano - */ -class InstalledArrayRepository extends WritableArrayRepository implements InstalledRepositoryInterface -{ -} diff --git a/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php b/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php deleted file mode 100644 index 1ff8a0a..0000000 --- a/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -/** - * Installed filesystem repository. - * - * @author Jordi Boggiano - */ -class InstalledFilesystemRepository extends FilesystemRepository implements InstalledRepositoryInterface -{ -} diff --git a/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php b/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php deleted file mode 100644 index 19b095b..0000000 --- a/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -/** - * Installable repository interface. - * - * Just used to tag installed repositories so the base classes can act differently on Alias packages - * - * @author Jordi Boggiano - */ -interface InstalledRepositoryInterface extends WritableRepositoryInterface -{ -} diff --git a/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php b/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php deleted file mode 100644 index 061a504..0000000 --- a/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -/** - * Exception thrown when a package repository is utterly broken - * - * @author Jordi Boggiano - */ -class InvalidRepositoryException extends \Exception -{ -} diff --git a/vendor/composer/composer/src/Composer/Repository/PackageRepository.php b/vendor/composer/composer/src/Composer/Repository/PackageRepository.php deleted file mode 100644 index 52b9a0f..0000000 --- a/vendor/composer/composer/src/Composer/Repository/PackageRepository.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\Loader\ValidatingArrayLoader; - -/** - * Package repository. - * - * @author Jordi Boggiano - */ -class PackageRepository extends ArrayRepository -{ - private $config; - - /** - * Initializes filesystem repository. - * - * @param array $config package definition - */ - public function __construct(array $config) - { - parent::__construct(); - $this->config = $config['package']; - - // make sure we have an array of package definitions - if (!is_numeric(key($this->config))) { - $this->config = array($this->config); - } - } - - /** - * Initializes repository (reads file, or remote address). - */ - protected function initialize() - { - parent::initialize(); - - $loader = new ValidatingArrayLoader(new ArrayLoader(null, true), false); - foreach ($this->config as $package) { - try { - $package = $loader->load($package); - } catch (\Exception $e) { - throw new InvalidRepositoryException('A repository of type "package" contains an invalid package definition: '.$e->getMessage()."\n\nInvalid package definition:\n".json_encode($package)); - } - - $this->addPackage($package); - } - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/PathRepository.php b/vendor/composer/composer/src/Composer/Repository/PathRepository.php deleted file mode 100644 index 4e6bb05..0000000 --- a/vendor/composer/composer/src/Composer/Repository/PathRepository.php +++ /dev/null @@ -1,201 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Config; -use Composer\IO\IOInterface; -use Composer\Json\JsonFile; -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\Version\VersionGuesser; -use Composer\Package\Version\VersionParser; -use Composer\Util\Platform; -use Composer\Util\ProcessExecutor; - -/** - * This repository allows installing local packages that are not necessarily under their own VCS. - * - * The local packages will be symlinked when possible, else they will be copied. - * - * @code - * "require": { - * "/": "*" - * }, - * "repositories": [ - * { - * "type": "path", - * "url": "../../relative/path/to/package/" - * }, - * { - * "type": "path", - * "url": "/absolute/path/to/package/" - * }, - * { - * "type": "path", - * "url": "/absolute/path/to/several/packages/*" - * }, - * { - * "type": "path", - * "url": "../../relative/path/to/package/", - * "options": { - * "symlink": false - * } - * }, - * ] - * @endcode - * - * @author Samuel Roze - * @author Johann Reinke - */ -class PathRepository extends ArrayRepository implements ConfigurableRepositoryInterface -{ - /** - * @var ArrayLoader - */ - private $loader; - - /** - * @var VersionGuesser - */ - private $versionGuesser; - - /** - * @var string - */ - private $url; - - /** - * @var array - */ - private $repoConfig; - - /** - * @var ProcessExecutor - */ - private $process; - - /** - * @var array - */ - private $options; - - /** - * Initializes path repository. - * - * @param array $repoConfig - * @param IOInterface $io - * @param Config $config - */ - public function __construct(array $repoConfig, IOInterface $io, Config $config) - { - if (!isset($repoConfig['url'])) { - throw new \RuntimeException('You must specify the `url` configuration for the path repository'); - } - - $this->loader = new ArrayLoader(null, true); - $this->url = Platform::expandPath($repoConfig['url']); - $this->process = new ProcessExecutor($io); - $this->versionGuesser = new VersionGuesser($config, $this->process, new VersionParser()); - $this->repoConfig = $repoConfig; - $this->options = isset($repoConfig['options']) ? $repoConfig['options'] : array(); - - parent::__construct(); - } - - public function getRepoConfig() - { - return $this->repoConfig; - } - - /** - * Initializes path repository. - * - * This method will basically read the folder and add the found package. - */ - protected function initialize() - { - parent::initialize(); - - foreach ($this->getUrlMatches() as $url) { - $path = realpath($url) . DIRECTORY_SEPARATOR; - $composerFilePath = $path.'composer.json'; - - if (!file_exists($composerFilePath)) { - continue; - } - - $json = file_get_contents($composerFilePath); - $package = JsonFile::parseJson($json, $composerFilePath); - $package['dist'] = array( - 'type' => 'path', - 'url' => $url, - 'reference' => sha1($json . serialize($this->options)), - ); - $package['transport-options'] = $this->options; - - // carry over the root package version if this path repo is in the same git repository as root package - if (!isset($package['version']) && ($rootVersion = getenv('COMPOSER_ROOT_VERSION'))) { - if ( - 0 === $this->process->execute('git rev-parse HEAD', $ref1, $path) - && 0 === $this->process->execute('git rev-parse HEAD', $ref2) - && $ref1 === $ref2 - ) { - $package['version'] = $rootVersion; - } - } - - $output = ''; - if (is_dir($path . DIRECTORY_SEPARATOR . '.git') && 0 === $this->process->execute('git log -n1 --pretty=%H', $output, $path)) { - $package['dist']['reference'] = trim($output); - } - - if (!isset($package['version'])) { - $versionData = $this->versionGuesser->guessVersion($package, $path); - if (is_array($versionData) && $versionData['pretty_version']) { - // if there is a feature branch detected, we add a second packages with the feature branch version - if (!empty($versionData['feature_pretty_version'])) { - $package['version'] = $versionData['feature_pretty_version']; - $this->addPackage($this->loader->load($package)); - } - - $package['version'] = $versionData['pretty_version']; - } else { - $package['version'] = 'dev-master'; - } - } - - $package = $this->loader->load($package); - $this->addPackage($package); - } - } - - /** - * Get a list of all (possibly relative) path names matching given url (supports globbing). - * - * @return string[] - */ - private function getUrlMatches() - { - $flags = GLOB_MARK | GLOB_ONLYDIR; - - if (defined('GLOB_BRACE')) { - $flags |= GLOB_BRACE; - } elseif (strpos($this->url, '{') !== false || strpos($this->url, '}') !== false) { - throw new \RuntimeException('The operating system does not support GLOB_BRACE which is required for the url '. $this->url); - } - - // Ensure environment-specific path separators are normalized to URL separators - return array_map(function ($val) { - return rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $val), '/'); - }, glob($this->url, $flags)); - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php b/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php deleted file mode 100644 index 9b26eb9..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php +++ /dev/null @@ -1,82 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -use Composer\Util\RemoteFilesystem; - -/** - * Base PEAR Channel reader. - * - * Provides xml namespaces and red - * - * @author Alexey Prilipko - */ -abstract class BaseChannelReader -{ - /** - * PEAR REST Interface namespaces - */ - const CHANNEL_NS = 'http://pear.php.net/channel-1.0'; - const ALL_CATEGORIES_NS = 'http://pear.php.net/dtd/rest.allcategories'; - const CATEGORY_PACKAGES_INFO_NS = 'http://pear.php.net/dtd/rest.categorypackageinfo'; - const ALL_PACKAGES_NS = 'http://pear.php.net/dtd/rest.allpackages'; - const ALL_RELEASES_NS = 'http://pear.php.net/dtd/rest.allreleases'; - const PACKAGE_INFO_NS = 'http://pear.php.net/dtd/rest.package'; - - /** @var RemoteFilesystem */ - private $rfs; - - protected function __construct(RemoteFilesystem $rfs) - { - $this->rfs = $rfs; - } - - /** - * Read content from remote filesystem. - * - * @param string $origin server - * @param string $path relative path to content - * @throws \UnexpectedValueException - * @return \SimpleXMLElement - */ - protected function requestContent($origin, $path) - { - $url = rtrim($origin, '/') . '/' . ltrim($path, '/'); - $content = $this->rfs->getContents($origin, $url, false); - if (!$content) { - throw new \UnexpectedValueException('The PEAR channel at ' . $url . ' did not respond.'); - } - - return str_replace('http://pear.php.net/rest/', 'https://pear.php.net/rest/', $content); - } - - /** - * Read xml content from remote filesystem - * - * @param string $origin server - * @param string $path relative path to content - * @throws \UnexpectedValueException - * @return \SimpleXMLElement - */ - protected function requestXml($origin, $path) - { - // http://components.ez.no/p/packages.xml is malformed. to read it we must ignore parsing errors. - $xml = simplexml_load_string($this->requestContent($origin, $path), "SimpleXMLElement", LIBXML_NOERROR); - - if (false === $xml) { - throw new \UnexpectedValueException(sprintf('The PEAR channel at ' . $origin . ' is broken. (Invalid XML at file `%s`)', $path)); - } - - return $xml; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php deleted file mode 100644 index 69e33b8..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -/** - * PEAR channel info - * - * @author Alexey Prilipko - */ -class ChannelInfo -{ - private $name; - private $alias; - private $packages; - - /** - * @param string $name - * @param string $alias - * @param PackageInfo[] $packages - */ - public function __construct($name, $alias, array $packages) - { - $this->name = $name; - $this->alias = $alias; - $this->packages = $packages; - } - - /** - * Name of the channel - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Alias of the channel - * - * @return string - */ - public function getAlias() - { - return $this->alias; - } - - /** - * List of channel packages - * - * @return PackageInfo[] - */ - public function getPackages() - { - return $this->packages; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php deleted file mode 100644 index 73cc915..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php +++ /dev/null @@ -1,101 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -use Composer\Util\RemoteFilesystem; - -/** - * PEAR Channel package reader. - * - * Reads channel packages info from and builds Package's - * - * @author Alexey Prilipko - */ -class ChannelReader extends BaseChannelReader -{ - /** @var array of ('xpath test' => 'rest implementation') */ - private $readerMap; - - public function __construct(RemoteFilesystem $rfs) - { - parent::__construct($rfs); - - $rest10reader = new ChannelRest10Reader($rfs); - $rest11reader = new ChannelRest11Reader($rfs); - - $this->readerMap = array( - 'REST1.3' => $rest11reader, - 'REST1.2' => $rest11reader, - 'REST1.1' => $rest11reader, - 'REST1.0' => $rest10reader, - ); - } - - /** - * Reads PEAR channel through REST interface and builds list of packages - * - * @param string $url PEAR Channel url - * @throws \UnexpectedValueException - * @return ChannelInfo - */ - public function read($url) - { - $xml = $this->requestXml($url, "/channel.xml"); - - $channelName = (string) $xml->name; - $channelAlias = (string) $xml->suggestedalias; - - $supportedVersions = array_keys($this->readerMap); - $selectedRestVersion = $this->selectRestVersion($xml, $supportedVersions); - if (!$selectedRestVersion) { - throw new \UnexpectedValueException(sprintf('PEAR repository %s does not supports any of %s protocols.', $url, implode(', ', $supportedVersions))); - } - - $reader = $this->readerMap[$selectedRestVersion['version']]; - $packageDefinitions = $reader->read($selectedRestVersion['baseUrl']); - - return new ChannelInfo($channelName, $channelAlias, $packageDefinitions); - } - - /** - * Reads channel supported REST interfaces and selects one of them - * - * @param \SimpleXMLElement $channelXml - * @param string[] $supportedVersions supported PEAR REST protocols - * @return array|null hash with selected version and baseUrl - */ - private function selectRestVersion($channelXml, $supportedVersions) - { - $channelXml->registerXPathNamespace('ns', self::CHANNEL_NS); - - foreach ($supportedVersions as $version) { - $xpathTest = "ns:servers/ns:*/ns:rest/ns:baseurl[@type='{$version}']"; - $testResult = $channelXml->xpath($xpathTest); - - foreach ($testResult as $result) { - // Choose first https:// option. - $result = (string) $result; - if (preg_match('{^https://}i', $result)) { - return array('version' => $version, 'baseUrl' => $result); - } - } - - // Fallback to non-https if it does not exist. - if (count($testResult) > 0) { - return array('version' => $version, 'baseUrl' => (string) $testResult[0]); - } - } - - return null; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php deleted file mode 100644 index 489914d..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php +++ /dev/null @@ -1,164 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -use Composer\Downloader\TransportException; - -/** - * Read PEAR packages using REST 1.0 interface - * - * At version 1.0 package descriptions read from: - * {baseUrl}/p/packages.xml - * {baseUrl}/p/{package}/info.xml - * {baseUrl}/p/{package}/allreleases.xml - * {baseUrl}/p/{package}/deps.{version}.txt - * - * @author Alexey Prilipko - */ -class ChannelRest10Reader extends BaseChannelReader -{ - private $dependencyReader; - - public function __construct($rfs) - { - parent::__construct($rfs); - - $this->dependencyReader = new PackageDependencyParser(); - } - - /** - * Reads package descriptions using PEAR Rest 1.0 interface - * - * @param string $baseUrl base Url interface - * - * @return PackageInfo[] - */ - public function read($baseUrl) - { - return $this->readPackages($baseUrl); - } - - /** - * Read list of packages from - * {baseUrl}/p/packages.xml - * - * @param string $baseUrl - * @return PackageInfo[] - */ - private function readPackages($baseUrl) - { - $result = array(); - - $xmlPath = '/p/packages.xml'; - $xml = $this->requestXml($baseUrl, $xmlPath); - $xml->registerXPathNamespace('ns', self::ALL_PACKAGES_NS); - foreach ($xml->xpath('ns:p') as $node) { - $packageName = (string) $node; - $packageInfo = $this->readPackage($baseUrl, $packageName); - $result[] = $packageInfo; - } - - return $result; - } - - /** - * Read package info from - * {baseUrl}/p/{package}/info.xml - * - * @param string $baseUrl - * @param string $packageName - * @return PackageInfo - */ - private function readPackage($baseUrl, $packageName) - { - $xmlPath = '/p/' . strtolower($packageName) . '/info.xml'; - $xml = $this->requestXml($baseUrl, $xmlPath); - $xml->registerXPathNamespace('ns', self::PACKAGE_INFO_NS); - - $channelName = (string) $xml->c; - $packageName = (string) $xml->n; - $license = (string) $xml->l; - $shortDescription = (string) $xml->s; - $description = (string) $xml->d; - - return new PackageInfo( - $channelName, - $packageName, - $license, - $shortDescription, - $description, - $this->readPackageReleases($baseUrl, $packageName) - ); - } - - /** - * Read package releases from - * {baseUrl}/p/{package}/allreleases.xml - * - * @param string $baseUrl - * @param string $packageName - * @throws \Composer\Downloader\TransportException|\Exception - * @return ReleaseInfo[] hash array with keys as version numbers - */ - private function readPackageReleases($baseUrl, $packageName) - { - $result = array(); - - try { - $xmlPath = '/r/' . strtolower($packageName) . '/allreleases.xml'; - $xml = $this->requestXml($baseUrl, $xmlPath); - $xml->registerXPathNamespace('ns', self::ALL_RELEASES_NS); - foreach ($xml->xpath('ns:r') as $node) { - $releaseVersion = (string) $node->v; - $releaseStability = (string) $node->s; - - try { - $result[$releaseVersion] = new ReleaseInfo( - $releaseStability, - $this->readPackageReleaseDependencies($baseUrl, $packageName, $releaseVersion) - ); - } catch (TransportException $exception) { - if ($exception->getCode() != 404) { - throw $exception; - } - } - } - } catch (TransportException $exception) { - if ($exception->getCode() != 404) { - throw $exception; - } - } - - return $result; - } - - /** - * Read package dependencies from - * {baseUrl}/p/{package}/deps.{version}.txt - * - * @param string $baseUrl - * @param string $packageName - * @param string $version - * @return DependencyInfo[] - */ - private function readPackageReleaseDependencies($baseUrl, $packageName, $version) - { - $dependencyReader = new PackageDependencyParser(); - - $depthPath = '/r/' . strtolower($packageName) . '/deps.' . $version . '.txt'; - $content = $this->requestContent($baseUrl, $depthPath); - $dependencyArray = unserialize($content); - - return $dependencyReader->buildDependencyInfo($dependencyArray); - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php b/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php deleted file mode 100644 index f9e05f5..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php +++ /dev/null @@ -1,139 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -/** - * Read PEAR packages using REST 1.1 interface - * - * At version 1.1 package descriptions read from: - * {baseUrl}/c/categories.xml - * {baseUrl}/c/{category}/packagesinfo.xml - * - * @author Alexey Prilipko - */ -class ChannelRest11Reader extends BaseChannelReader -{ - private $dependencyReader; - - public function __construct($rfs) - { - parent::__construct($rfs); - - $this->dependencyReader = new PackageDependencyParser(); - } - - /** - * Reads package descriptions using PEAR Rest 1.1 interface - * - * @param string $baseUrl base Url interface - * - * @return PackageInfo[] - */ - public function read($baseUrl) - { - return $this->readChannelPackages($baseUrl); - } - - /** - * Read list of channel categories from - * {baseUrl}/c/categories.xml - * - * @param string $baseUrl - * @return PackageInfo[] - */ - private function readChannelPackages($baseUrl) - { - $result = array(); - - $xml = $this->requestXml($baseUrl, "/c/categories.xml"); - $xml->registerXPathNamespace('ns', self::ALL_CATEGORIES_NS); - foreach ($xml->xpath('ns:c') as $node) { - $categoryName = (string) $node; - $categoryPackages = $this->readCategoryPackages($baseUrl, $categoryName); - $result = array_merge($result, $categoryPackages); - } - - return $result; - } - - /** - * Read packages from - * {baseUrl}/c/{category}/packagesinfo.xml - * - * @param string $baseUrl - * @param string $categoryName - * @return PackageInfo[] - */ - private function readCategoryPackages($baseUrl, $categoryName) - { - $result = array(); - - $categoryPath = '/c/'.urlencode($categoryName).'/packagesinfo.xml'; - $xml = $this->requestXml($baseUrl, $categoryPath); - $xml->registerXPathNamespace('ns', self::CATEGORY_PACKAGES_INFO_NS); - foreach ($xml->xpath('ns:pi') as $node) { - $packageInfo = $this->parsePackage($node); - $result[] = $packageInfo; - } - - return $result; - } - - /** - * Parses package node. - * - * @param \SimpleXMLElement $packageInfo xml element describing package - * @return PackageInfo - */ - private function parsePackage($packageInfo) - { - $packageInfo->registerXPathNamespace('ns', self::CATEGORY_PACKAGES_INFO_NS); - $channelName = (string) $packageInfo->p->c; - $packageName = (string) $packageInfo->p->n; - $license = (string) $packageInfo->p->l; - $shortDescription = (string) $packageInfo->p->s; - $description = (string) $packageInfo->p->d; - - $dependencies = array(); - foreach ($packageInfo->xpath('ns:deps') as $node) { - $dependencyVersion = (string) $node->v; - $dependencyArray = unserialize((string) $node->d); - - $dependencyInfo = $this->dependencyReader->buildDependencyInfo($dependencyArray); - - $dependencies[$dependencyVersion] = $dependencyInfo; - } - - $releases = array(); - $releasesInfo = $packageInfo->xpath('ns:a/ns:r'); - if ($releasesInfo) { - foreach ($releasesInfo as $node) { - $releaseVersion = (string) $node->v; - $releaseStability = (string) $node->s; - $releases[$releaseVersion] = new ReleaseInfo( - $releaseStability, - isset($dependencies[$releaseVersion]) ? $dependencies[$releaseVersion] : new DependencyInfo(array(), array()) - ); - } - } - - return new PackageInfo( - $channelName, - $packageName, - $license, - $shortDescription, - $description, - $releases - ); - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php b/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php deleted file mode 100644 index 13a7900..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php +++ /dev/null @@ -1,60 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -/** - * PEAR package release dependency info - * - * @author Alexey Prilipko - */ -class DependencyConstraint -{ - private $type; - private $constraint; - private $channelName; - private $packageName; - - /** - * @param string $type - * @param string $constraint - * @param string $channelName - * @param string $packageName - */ - public function __construct($type, $constraint, $channelName, $packageName) - { - $this->type = $type; - $this->constraint = $constraint; - $this->channelName = $channelName; - $this->packageName = $packageName; - } - - public function getChannelName() - { - return $this->channelName; - } - - public function getConstraint() - { - return $this->constraint; - } - - public function getPackageName() - { - return $this->packageName; - } - - public function getType() - { - return $this->type; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php b/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php deleted file mode 100644 index c6b266e..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -/** - * PEAR package release dependency info - * - * @author Alexey Prilipko - */ -class DependencyInfo -{ - private $requires; - private $optionals; - - /** - * @param DependencyConstraint[] $requires list of requires/conflicts/replaces - * @param array $optionals [groupName => DependencyConstraint[]] list of optional groups - */ - public function __construct($requires, $optionals) - { - $this->requires = $requires; - $this->optionals = $optionals; - } - - /** - * @return DependencyConstraint[] list of requires/conflicts/replaces - */ - public function getRequires() - { - return $this->requires; - } - - /** - * @return array [groupName => DependencyConstraint[]] list of optional groups - */ - public function getOptionals() - { - return $this->optionals; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php b/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php deleted file mode 100644 index 24f8fb9..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php +++ /dev/null @@ -1,317 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -/** - * Read PEAR packages using REST 1.0 interface - * - * @author Alexey Prilipko - */ -class PackageDependencyParser -{ - /** - * Builds dependency information. It detects used package.xml format. - * - * @param array $depArray - * @return DependencyInfo - */ - public function buildDependencyInfo($depArray) - { - if (!is_array($depArray)) { - return new DependencyInfo(array(), array()); - } - if (!$this->isHash($depArray)) { - return new DependencyInfo($this->buildDependency10Info($depArray), array()); - } - - return $this->buildDependency20Info($depArray); - } - - /** - * Builds dependency information from package.xml 1.0 format - * - * https://pear.php.net/manual/en/guide.developers.package2.dependencies.php - * - * package.xml 1.0 format consists of array of - * { type="php|os|sapi|ext|pkg" rel="has|not|eq|ge|gt|le|lt" optional="yes" - * channel="channelName" name="extName|packageName" } - * - * @param array $depArray Dependency data in package.xml 1.0 format - * @return DependencyConstraint[] - */ - private function buildDependency10Info($depArray) - { - static $dep10toOperatorMap = array('has' => '==', 'eq' => '==', 'ge' => '>=', 'gt' => '>', 'le' => '<=', 'lt' => '<', 'not' => '!='); - - $result = array(); - - foreach ($depArray as $depItem) { - if (empty($depItem['rel']) || !array_key_exists($depItem['rel'], $dep10toOperatorMap)) { - // 'unknown rel type:' . $depItem['rel']; - continue; - } - - $depType = !empty($depItem['optional']) && 'yes' == $depItem['optional'] - ? 'optional' - : 'required'; - $depType = 'not' == $depItem['rel'] - ? 'conflicts' - : $depType; - - $depVersion = !empty($depItem['version']) ? $this->parseVersion($depItem['version']) : '*'; - - // has & not are special operators that does not requires version - $depVersionConstraint = ('has' == $depItem['rel'] || 'not' == $depItem['rel']) && '*' == $depVersion - ? '*' - : $dep10toOperatorMap[$depItem['rel']] . $depVersion; - - switch ($depItem['type']) { - case 'php': - $depChannelName = 'php'; - $depPackageName = ''; - break; - case 'pkg': - $depChannelName = !empty($depItem['channel']) ? $depItem['channel'] : 'pear.php.net'; - $depPackageName = $depItem['name']; - break; - case 'ext': - $depChannelName = 'ext'; - $depPackageName = $depItem['name']; - break; - case 'os': - case 'sapi': - $depChannelName = ''; - $depPackageName = ''; - break; - default: - $depChannelName = ''; - $depPackageName = ''; - break; - } - - if ('' != $depChannelName) { - $result[] = new DependencyConstraint( - $depType, - $depVersionConstraint, - $depChannelName, - $depPackageName - ); - } - } - - return $result; - } - - /** - * Builds dependency information from package.xml 2.0 format - * - * @param array $depArray Dependency data in package.xml 1.0 format - * @return DependencyInfo - */ - private function buildDependency20Info($depArray) - { - $result = array(); - $optionals = array(); - $defaultOptionals = array(); - foreach ($depArray as $depType => $depTypeGroup) { - if (!is_array($depTypeGroup)) { - continue; - } - if ('required' == $depType || 'optional' == $depType) { - foreach ($depTypeGroup as $depItemType => $depItem) { - switch ($depItemType) { - case 'php': - $result[] = new DependencyConstraint( - $depType, - $this->parse20VersionConstraint($depItem), - 'php', - '' - ); - break; - case 'package': - $deps = $this->buildDepPackageConstraints($depItem, $depType); - $result = array_merge($result, $deps); - break; - case 'extension': - $deps = $this->buildDepExtensionConstraints($depItem, $depType); - $result = array_merge($result, $deps); - break; - case 'subpackage': - $deps = $this->buildDepPackageConstraints($depItem, 'replaces'); - $defaultOptionals += $deps; - break; - case 'os': - case 'pearinstaller': - break; - default: - break; - } - } - } elseif ('group' == $depType) { - if ($this->isHash($depTypeGroup)) { - $depTypeGroup = array($depTypeGroup); - } - - foreach ($depTypeGroup as $depItem) { - $groupName = $depItem['attribs']['name']; - if (!isset($optionals[$groupName])) { - $optionals[$groupName] = array(); - } - - if (isset($depItem['subpackage'])) { - $optionals[$groupName] += $this->buildDepPackageConstraints($depItem['subpackage'], 'replaces'); - } else { - $result += $this->buildDepPackageConstraints($depItem['package'], 'optional'); - } - } - } - } - - if (count($defaultOptionals) > 0) { - $optionals['*'] = $defaultOptionals; - } - - return new DependencyInfo($result, $optionals); - } - - /** - * Builds dependency constraint of 'extension' type - * - * @param array $depItem dependency constraint or array of dependency constraints - * @param string $depType target type of building constraint. - * @return DependencyConstraint[] - */ - private function buildDepExtensionConstraints($depItem, $depType) - { - if ($this->isHash($depItem)) { - $depItem = array($depItem); - } - - $result = array(); - foreach ($depItem as $subDepItem) { - $depChannelName = 'ext'; - $depPackageName = $subDepItem['name']; - $depVersionConstraint = $this->parse20VersionConstraint($subDepItem); - - $result[] = new DependencyConstraint( - $depType, - $depVersionConstraint, - $depChannelName, - $depPackageName - ); - } - - return $result; - } - - /** - * Builds dependency constraint of 'package' type - * - * @param array $depItem dependency constraint or array of dependency constraints - * @param string $depType target type of building constraint. - * @return DependencyConstraint[] - */ - private function buildDepPackageConstraints($depItem, $depType) - { - if ($this->isHash($depItem)) { - $depItem = array($depItem); - } - - $result = array(); - foreach ($depItem as $subDepItem) { - if (!array_key_exists('channel', $subDepItem)) { - $subDepItem['channel'] = $subDepItem['uri']; - } - $depChannelName = $subDepItem['channel']; - $depPackageName = $subDepItem['name']; - $depVersionConstraint = $this->parse20VersionConstraint($subDepItem); - if (isset($subDepItem['conflicts'])) { - $depType = 'conflicts'; - } - - $result[] = new DependencyConstraint( - $depType, - $depVersionConstraint, - $depChannelName, - $depPackageName - ); - } - - return $result; - } - - /** - * Parses version constraint - * - * @param array $data array containing several 'min', 'max', 'has', 'exclude' and other keys. - * @return string - */ - private function parse20VersionConstraint(array $data) - { - static $dep20toOperatorMap = array('has' => '==', 'min' => '>=', 'max' => '<=', 'exclude' => '!='); - - $versions = array(); - $values = array_intersect_key($data, $dep20toOperatorMap); - if (0 == count($values)) { - return '*'; - } - if (isset($values['min']) && isset($values['exclude']) && $data['min'] == $data['exclude']) { - $versions[] = '>' . $this->parseVersion($values['min']); - } elseif (isset($values['max']) && isset($values['exclude']) && $data['max'] == $data['exclude']) { - $versions[] = '<' . $this->parseVersion($values['max']); - } else { - foreach ($values as $op => $version) { - if ('exclude' == $op && is_array($version)) { - foreach ($version as $versionPart) { - $versions[] = $dep20toOperatorMap[$op] . $this->parseVersion($versionPart); - } - } else { - $versions[] = $dep20toOperatorMap[$op] . $this->parseVersion($version); - } - } - } - - return implode(',', $versions); - } - - /** - * Softened version parser - * - * @param string $version - * @return null|string - */ - private function parseVersion($version) - { - if (preg_match('{^v?(\d{1,3})(\.\d+)?(\.\d+)?(\.\d+)?}i', $version, $matches)) { - $version = $matches[1] - .(!empty($matches[2]) ? $matches[2] : '.0') - .(!empty($matches[3]) ? $matches[3] : '.0') - .(!empty($matches[4]) ? $matches[4] : '.0'); - - return $version; - } - - return null; - } - - /** - * Test if array is associative or hash type - * - * @param array $array - * @return bool - */ - private function isHash(array $array) - { - return !array_key_exists(1, $array) && !array_key_exists(0, $array); - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php b/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php deleted file mode 100644 index 3b2eb6d..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php +++ /dev/null @@ -1,94 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -/** - * PEAR Package info - * - * @author Alexey Prilipko - */ -class PackageInfo -{ - private $channelName; - private $packageName; - private $license; - private $shortDescription; - private $description; - private $releases; - - /** - * @param string $channelName - * @param string $packageName - * @param string $license - * @param string $shortDescription - * @param string $description - * @param ReleaseInfo[] $releases associative array maps release version to release info - */ - public function __construct($channelName, $packageName, $license, $shortDescription, $description, $releases) - { - $this->channelName = $channelName; - $this->packageName = $packageName; - $this->license = $license; - $this->shortDescription = $shortDescription; - $this->description = $description; - $this->releases = $releases; - } - - /** - * @return string the package channel name - */ - public function getChannelName() - { - return $this->channelName; - } - - /** - * @return string the package name - */ - public function getPackageName() - { - return $this->packageName; - } - - /** - * @return string the package description - */ - public function getDescription() - { - return $this->description; - } - - /** - * @return string the package short description - */ - public function getShortDescription() - { - return $this->shortDescription; - } - - /** - * @return string the package license - */ - public function getLicense() - { - return $this->license; - } - - /** - * @return ReleaseInfo[] - */ - public function getReleases() - { - return $this->releases; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php b/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php deleted file mode 100644 index 39d6e1e..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Pear; - -/** - * PEAR package release info - * - * @author Alexey Prilipko - */ -class ReleaseInfo -{ - private $stability; - private $dependencyInfo; - - /** - * @param string $stability - * @param DependencyInfo $dependencyInfo - */ - public function __construct($stability, $dependencyInfo) - { - $this->stability = $stability; - $this->dependencyInfo = $dependencyInfo; - } - - /** - * @return DependencyInfo release dependencies - */ - public function getDependencyInfo() - { - return $this->dependencyInfo; - } - - /** - * @return string release stability - */ - public function getStability() - { - return $this->stability; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/PearRepository.php b/vendor/composer/composer/src/Composer/Repository/PearRepository.php deleted file mode 100644 index c4f0b83..0000000 --- a/vendor/composer/composer/src/Composer/Repository/PearRepository.php +++ /dev/null @@ -1,198 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\IO\IOInterface; -use Composer\Semver\VersionParser as SemverVersionParser; -use Composer\Package\Version\VersionParser; -use Composer\Repository\Pear\ChannelReader; -use Composer\Package\CompletePackage; -use Composer\Repository\Pear\ChannelInfo; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Package\Link; -use Composer\Semver\Constraint\Constraint; -use Composer\Util\RemoteFilesystem; -use Composer\Config; -use Composer\Factory; - -/** - * Builds list of package from PEAR channel. - * - * Packages read from channel are named as 'pear-{channelName}/{packageName}' - * and has aliased as 'pear-{channelAlias}/{packageName}' - * - * @author Benjamin Eberlei - * @author Jordi Boggiano - */ -class PearRepository extends ArrayRepository implements ConfigurableRepositoryInterface -{ - private $url; - private $io; - private $rfs; - private $versionParser; - private $repoConfig; - - /** @var string vendor makes additional alias for each channel as {prefix}/{packagename}. It allows smoother - * package transition to composer-like repositories. - */ - private $vendorAlias; - - public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $dispatcher = null, RemoteFilesystem $rfs = null) - { - parent::__construct(); - if (!preg_match('{^https?://}', $repoConfig['url'])) { - $repoConfig['url'] = 'http://'.$repoConfig['url']; - } - - $urlBits = parse_url($repoConfig['url']); - if (empty($urlBits['scheme']) || empty($urlBits['host'])) { - throw new \UnexpectedValueException('Invalid url given for PEAR repository: '.$repoConfig['url']); - } - - $this->url = rtrim($repoConfig['url'], '/'); - $this->io = $io; - $this->rfs = $rfs ?: Factory::createRemoteFilesystem($this->io, $config); - $this->vendorAlias = isset($repoConfig['vendor-alias']) ? $repoConfig['vendor-alias'] : null; - $this->versionParser = new VersionParser(); - $this->repoConfig = $repoConfig; - } - - public function getRepoConfig() - { - return $this->repoConfig; - } - - protected function initialize() - { - parent::initialize(); - - $this->io->writeError('Initializing PEAR repository '.$this->url); - - $reader = new ChannelReader($this->rfs); - try { - $channelInfo = $reader->read($this->url); - } catch (\Exception $e) { - $this->io->writeError('PEAR repository from '.$this->url.' could not be loaded. '.$e->getMessage().''); - - return; - } - $packages = $this->buildComposerPackages($channelInfo, $this->versionParser); - foreach ($packages as $package) { - $this->addPackage($package); - } - } - - /** - * Builds CompletePackages from PEAR package definition data. - * - * @param ChannelInfo $channelInfo - * @param SemverVersionParser $versionParser - * @return CompletePackage - */ - private function buildComposerPackages(ChannelInfo $channelInfo, SemverVersionParser $versionParser) - { - $result = array(); - foreach ($channelInfo->getPackages() as $packageDefinition) { - foreach ($packageDefinition->getReleases() as $version => $releaseInfo) { - try { - $normalizedVersion = $versionParser->normalize($version); - } catch (\UnexpectedValueException $e) { - $this->io->writeError('Could not load '.$packageDefinition->getPackageName().' '.$version.': '.$e->getMessage(), true, IOInterface::VERBOSE); - continue; - } - - $composerPackageName = $this->buildComposerPackageName($packageDefinition->getChannelName(), $packageDefinition->getPackageName()); - - // distribution url must be read from /r/{packageName}/{version}.xml::/r/g:text() - // but this location is 'de-facto' standard - $urlBits = parse_url($this->url); - $scheme = (isset($urlBits['scheme']) && 'https' === $urlBits['scheme'] && extension_loaded('openssl')) ? 'https' : 'http'; - $distUrl = "{$scheme}://{$packageDefinition->getChannelName()}/get/{$packageDefinition->getPackageName()}-{$version}.tgz"; - - $requires = array(); - $suggests = array(); - $conflicts = array(); - $replaces = array(); - - // alias package only when its channel matches repository channel, - // cause we've know only repository channel alias - if ($channelInfo->getName() == $packageDefinition->getChannelName()) { - $composerPackageAlias = $this->buildComposerPackageName($channelInfo->getAlias(), $packageDefinition->getPackageName()); - $aliasConstraint = new Constraint('==', $normalizedVersion); - $replaces[] = new Link($composerPackageName, $composerPackageAlias, $aliasConstraint, 'replaces', (string) $aliasConstraint); - } - - // alias package with user-specified prefix. it makes private pear channels looks like composer's. - if (!empty($this->vendorAlias) - && ($this->vendorAlias != 'pear-'.$channelInfo->getAlias() || $channelInfo->getName() != $packageDefinition->getChannelName()) - ) { - $composerPackageAlias = "{$this->vendorAlias}/{$packageDefinition->getPackageName()}"; - $aliasConstraint = new Constraint('==', $normalizedVersion); - $replaces[] = new Link($composerPackageName, $composerPackageAlias, $aliasConstraint, 'replaces', (string) $aliasConstraint); - } - - foreach ($releaseInfo->getDependencyInfo()->getRequires() as $dependencyConstraint) { - $dependencyPackageName = $this->buildComposerPackageName($dependencyConstraint->getChannelName(), $dependencyConstraint->getPackageName()); - $constraint = $versionParser->parseConstraints($dependencyConstraint->getConstraint()); - $link = new Link($composerPackageName, $dependencyPackageName, $constraint, $dependencyConstraint->getType(), $dependencyConstraint->getConstraint()); - switch ($dependencyConstraint->getType()) { - case 'required': - $requires[] = $link; - break; - case 'conflicts': - $conflicts[] = $link; - break; - case 'replaces': - $replaces[] = $link; - break; - } - } - - foreach ($releaseInfo->getDependencyInfo()->getOptionals() as $group => $dependencyConstraints) { - foreach ($dependencyConstraints as $dependencyConstraint) { - $dependencyPackageName = $this->buildComposerPackageName($dependencyConstraint->getChannelName(), $dependencyConstraint->getPackageName()); - $suggests[$group.'-'.$dependencyPackageName] = $dependencyConstraint->getConstraint(); - } - } - - $package = new CompletePackage($composerPackageName, $normalizedVersion, $version); - $package->setType('pear-library'); - $package->setDescription($packageDefinition->getDescription()); - $package->setLicense(array($packageDefinition->getLicense())); - $package->setDistType('file'); - $package->setDistUrl($distUrl); - $package->setAutoload(array('classmap' => array(''))); - $package->setIncludePaths(array('/')); - $package->setRequires($requires); - $package->setConflicts($conflicts); - $package->setSuggests($suggests); - $package->setReplaces($replaces); - $result[] = $package; - } - } - - return $result; - } - - private function buildComposerPackageName($channelName, $packageName) - { - if ('php' === $channelName) { - return "php"; - } - if ('ext' === $channelName) { - return "ext-{$packageName}"; - } - - return "pear-{$channelName}/{$packageName}"; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php b/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php deleted file mode 100644 index 3126f86..0000000 --- a/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php +++ /dev/null @@ -1,342 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\CompletePackage; -use Composer\Package\PackageInterface; -use Composer\Package\Version\VersionParser; -use Composer\Plugin\PluginInterface; -use Composer\Util\ProcessExecutor; -use Composer\Util\Silencer; -use Composer\Util\Platform; -use Composer\XdebugHandler\XdebugHandler; -use Symfony\Component\Process\ExecutableFinder; - -/** - * @author Jordi Boggiano - */ -class PlatformRepository extends ArrayRepository -{ - const PLATFORM_PACKAGE_REGEX = '{^(?:php(?:-64bit|-ipv6|-zts|-debug)?|hhvm|(?:ext|lib)-[a-z0-9](?:[_.-]?[a-z0-9]+)*|composer-plugin-api)$}iD'; - - private $versionParser; - - /** - * Defines overrides so that the platform can be mocked - * - * Should be an array of package name => version number mappings - * - * @var array - */ - private $overrides = array(); - - private $process; - - public function __construct(array $packages = array(), array $overrides = array(), ProcessExecutor $process = null) - { - $this->process = $process === null ? (new ProcessExecutor()) : $process; - foreach ($overrides as $name => $version) { - $this->overrides[strtolower($name)] = array('name' => $name, 'version' => $version); - } - parent::__construct($packages); - } - - protected function initialize() - { - parent::initialize(); - - $this->versionParser = new VersionParser(); - - // Add each of the override versions as options. - // Later we might even replace the extensions instead. - foreach ($this->overrides as $override) { - // Check that it's a platform package. - if (!preg_match(self::PLATFORM_PACKAGE_REGEX, $override['name'])) { - throw new \InvalidArgumentException('Invalid platform package name in config.platform: '.$override['name']); - } - - $this->addOverriddenPackage($override); - } - - $prettyVersion = PluginInterface::PLUGIN_API_VERSION; - $version = $this->versionParser->normalize($prettyVersion); - $composerPluginApi = new CompletePackage('composer-plugin-api', $version, $prettyVersion); - $composerPluginApi->setDescription('The Composer Plugin API'); - $this->addPackage($composerPluginApi); - - try { - $prettyVersion = PHP_VERSION; - $version = $this->versionParser->normalize($prettyVersion); - } catch (\UnexpectedValueException $e) { - $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', PHP_VERSION); - $version = $this->versionParser->normalize($prettyVersion); - } - - $php = new CompletePackage('php', $version, $prettyVersion); - $php->setDescription('The PHP interpreter'); - $this->addPackage($php); - - if (PHP_DEBUG) { - $phpdebug = new CompletePackage('php-debug', $version, $prettyVersion); - $phpdebug->setDescription('The PHP interpreter, with debugging symbols'); - $this->addPackage($phpdebug); - } - - if (defined('PHP_ZTS') && PHP_ZTS) { - $phpzts = new CompletePackage('php-zts', $version, $prettyVersion); - $phpzts->setDescription('The PHP interpreter, with Zend Thread Safety'); - $this->addPackage($phpzts); - } - - if (PHP_INT_SIZE === 8) { - $php64 = new CompletePackage('php-64bit', $version, $prettyVersion); - $php64->setDescription('The PHP interpreter, 64bit'); - $this->addPackage($php64); - } - - // The AF_INET6 constant is only defined if ext-sockets is available but - // IPv6 support might still be available. - if (defined('AF_INET6') || Silencer::call('inet_pton', '::') !== false) { - $phpIpv6 = new CompletePackage('php-ipv6', $version, $prettyVersion); - $phpIpv6->setDescription('The PHP interpreter, with IPv6 support'); - $this->addPackage($phpIpv6); - } - - $loadedExtensions = get_loaded_extensions(); - - // Extensions scanning - foreach ($loadedExtensions as $name) { - if (in_array($name, array('standard', 'Core'))) { - continue; - } - - $reflExt = new \ReflectionExtension($name); - $prettyVersion = $reflExt->getVersion(); - $this->addExtension($name, $prettyVersion); - } - - // Check for xdebug in a restarted process - if (!in_array('xdebug', $loadedExtensions, true) && ($prettyVersion = XdebugHandler::getSkippedVersion())) { - $this->addExtension('xdebug', $prettyVersion); - } - - // Another quick loop, just for possible libraries - // Doing it this way to know that functions or constants exist before - // relying on them. - foreach ($loadedExtensions as $name) { - $prettyVersion = null; - $description = 'The '.$name.' PHP library'; - switch ($name) { - case 'curl': - $curlVersion = curl_version(); - $prettyVersion = $curlVersion['version']; - break; - - case 'iconv': - $prettyVersion = ICONV_VERSION; - break; - - case 'intl': - $name = 'ICU'; - if (defined('INTL_ICU_VERSION')) { - $prettyVersion = INTL_ICU_VERSION; - } else { - $reflector = new \ReflectionExtension('intl'); - - ob_start(); - $reflector->info(); - $output = ob_get_clean(); - - preg_match('/^ICU version => (.*)$/m', $output, $matches); - $prettyVersion = $matches[1]; - } - - break; - - case 'imagick': - $imagick = new \Imagick(); - $imageMagickVersion = $imagick->getVersion(); - // 6.x: ImageMagick 6.2.9 08/24/06 Q16 http://www.imagemagick.org - // 7.x: ImageMagick 7.0.8-34 Q16 x86_64 2019-03-23 https://imagemagick.org - preg_match('/^ImageMagick ([\d.]+)(?:-(\d+))?/', $imageMagickVersion['versionString'], $matches); - if (isset($matches[2])) { - $prettyVersion = "{$matches[1]}.{$matches[2]}"; - } else { - $prettyVersion = $matches[1]; - } - break; - - case 'libxml': - $prettyVersion = LIBXML_DOTTED_VERSION; - break; - - case 'openssl': - $prettyVersion = preg_replace_callback('{^(?:OpenSSL|LibreSSL)?\s*([0-9.]+)([a-z]*).*}i', function ($match) { - if (empty($match[2])) { - return $match[1]; - } - - // OpenSSL versions add another letter when they reach Z. - // e.g. OpenSSL 0.9.8zh 3 Dec 2015 - - if (!preg_match('{^z*[a-z]$}', $match[2])) { - // 0.9.8abc is garbage - return 0; - } - - $len = strlen($match[2]); - $patchVersion = ($len - 1) * 26; // All Z - $patchVersion += ord($match[2][$len - 1]) - 96; - - return $match[1].'.'.$patchVersion; - }, OPENSSL_VERSION_TEXT); - - $description = OPENSSL_VERSION_TEXT; - break; - - case 'pcre': - $prettyVersion = preg_replace('{^(\S+).*}', '$1', PCRE_VERSION); - break; - - case 'uuid': - $prettyVersion = phpversion('uuid'); - break; - - case 'xsl': - $prettyVersion = LIBXSLT_DOTTED_VERSION; - break; - - default: - // None handled extensions have no special cases, skip - continue 2; - } - - try { - $version = $this->versionParser->normalize($prettyVersion); - } catch (\UnexpectedValueException $e) { - continue; - } - - $lib = new CompletePackage('lib-'.$name, $version, $prettyVersion); - $lib->setDescription($description); - $this->addPackage($lib); - } - - $hhvmVersion = defined('HHVM_VERSION') ? HHVM_VERSION : null; - if ($hhvmVersion === null && !Platform::isWindows()) { - $finder = new ExecutableFinder(); - $hhvm = $finder->find('hhvm'); - if ($hhvm !== null) { - $exitCode = $this->process->execute( - ProcessExecutor::escape($hhvm). - ' --php -d hhvm.jit=0 -r "echo HHVM_VERSION;" 2>/dev/null', - $hhvmVersion - ); - if ($exitCode !== 0) { - $hhvmVersion = null; - } - } - } - if ($hhvmVersion) { - try { - $prettyVersion = $hhvmVersion; - $version = $this->versionParser->normalize($prettyVersion); - } catch (\UnexpectedValueException $e) { - $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', $hhvmVersion); - $version = $this->versionParser->normalize($prettyVersion); - } - - $hhvm = new CompletePackage('hhvm', $version, $prettyVersion); - $hhvm->setDescription('The HHVM Runtime (64bit)'); - $this->addPackage($hhvm); - } - } - - /** - * {@inheritDoc} - */ - public function addPackage(PackageInterface $package) - { - // Skip if overridden - if (isset($this->overrides[$package->getName()])) { - $overrider = $this->findPackage($package->getName(), '*'); - if ($package->getVersion() === $overrider->getVersion()) { - $actualText = 'same as actual'; - } else { - $actualText = 'actual: '.$package->getPrettyVersion(); - } - $overrider->setDescription($overrider->getDescription().' ('.$actualText.')'); - - return; - } - - // Skip if PHP is overridden and we are adding a php-* package - if (isset($this->overrides['php']) && 0 === strpos($package->getName(), 'php-')) { - $overrider = $this->addOverriddenPackage($this->overrides['php'], $package->getPrettyName()); - if ($package->getVersion() === $overrider->getVersion()) { - $actualText = 'same as actual'; - } else { - $actualText = 'actual: '.$package->getPrettyVersion(); - } - $overrider->setDescription($overrider->getDescription().' ('.$actualText.')'); - - return; - } - - parent::addPackage($package); - } - - private function addOverriddenPackage(array $override, $name = null) - { - $version = $this->versionParser->normalize($override['version']); - $package = new CompletePackage($name ?: $override['name'], $version, $override['version']); - $package->setDescription('Package overridden via config.platform'); - $package->setExtra(array('config.platform' => true)); - parent::addPackage($package); - - return $package; - } - - /** - * Parses the version and adds a new package to the repository - * - * @param string $name - * @param null|string $prettyVersion - */ - private function addExtension($name, $prettyVersion) - { - $extraDescription = null; - - try { - $version = $this->versionParser->normalize($prettyVersion); - } catch (\UnexpectedValueException $e) { - $extraDescription = ' (actual version: '.$prettyVersion.')'; - if (preg_match('{^(\d+\.\d+\.\d+(?:\.\d+)?)}', $prettyVersion, $match)) { - $prettyVersion = $match[1]; - } else { - $prettyVersion = '0'; - } - $version = $this->versionParser->normalize($prettyVersion); - } - - $packageName = $this->buildPackageName($name); - $ext = new CompletePackage($packageName, $version, $prettyVersion); - $ext->setDescription('The '.$name.' PHP extension'.$extraDescription); - $this->addPackage($ext); - } - - private function buildPackageName($name) - { - return 'ext-' . str_replace(' ', '-', $name); - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php b/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php deleted file mode 100644 index 5d3a2a6..0000000 --- a/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php +++ /dev/null @@ -1,169 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\Config; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Util\RemoteFilesystem; -use Composer\Json\JsonFile; - -/** - * @author Jordi Boggiano - */ -class RepositoryFactory -{ - /** - * @param IOInterface $io - * @param Config $config - * @param string $repository - * @param bool $allowFilesystem - * @return array|mixed - */ - public static function configFromString(IOInterface $io, Config $config, $repository, $allowFilesystem = false) - { - if (0 === strpos($repository, 'http')) { - $repoConfig = array('type' => 'composer', 'url' => $repository); - } elseif ("json" === pathinfo($repository, PATHINFO_EXTENSION)) { - $json = new JsonFile($repository, Factory::createRemoteFilesystem($io, $config)); - $data = $json->read(); - if (!empty($data['packages']) || !empty($data['includes']) || !empty($data['provider-includes'])) { - $repoConfig = array('type' => 'composer', 'url' => 'file://' . strtr(realpath($repository), '\\', '/')); - } elseif ($allowFilesystem) { - $repoConfig = array('type' => 'filesystem', 'json' => $json); - } else { - throw new \InvalidArgumentException("Invalid repository URL ($repository) given. This file does not contain a valid composer repository."); - } - } elseif ('{' === substr($repository, 0, 1)) { - // assume it is a json object that makes a repo config - $repoConfig = JsonFile::parseJson($repository); - } else { - throw new \InvalidArgumentException("Invalid repository url ($repository) given. Has to be a .json file, an http url or a JSON object."); - } - - return $repoConfig; - } - - /** - * @param IOInterface $io - * @param Config $config - * @param string $repository - * @param bool $allowFilesystem - * @return RepositoryInterface - */ - public static function fromString(IOInterface $io, Config $config, $repository, $allowFilesystem = false) - { - $repoConfig = static::configFromString($io, $config, $repository, $allowFilesystem); - - return static::createRepo($io, $config, $repoConfig); - } - - /** - * @param IOInterface $io - * @param Config $config - * @param array $repoConfig - * @return RepositoryInterface - */ - public static function createRepo(IOInterface $io, Config $config, array $repoConfig) - { - $rm = static::manager($io, $config, null, Factory::createRemoteFilesystem($io, $config)); - $repos = static::createRepos($rm, array($repoConfig)); - - return reset($repos); - } - - /** - * @param IOInterface|null $io - * @param Config|null $config - * @param RepositoryManager|null $rm - * @return RepositoryInterface[] - */ - public static function defaultRepos(IOInterface $io = null, Config $config = null, RepositoryManager $rm = null) - { - if (!$config) { - $config = Factory::createConfig($io); - } - if ($io) { - $io->loadConfiguration($config); - } - if (!$rm) { - if (!$io) { - throw new \InvalidArgumentException('This function requires either an IOInterface or a RepositoryManager'); - } - $rm = static::manager($io, $config, null, Factory::createRemoteFilesystem($io, $config)); - } - - return static::createRepos($rm, $config->getRepositories()); - } - - /** - * @param IOInterface $io - * @param Config $config - * @param EventDispatcher $eventDispatcher - * @param RemoteFilesystem $rfs - * @return RepositoryManager - */ - public static function manager(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, RemoteFilesystem $rfs = null) - { - $rm = new RepositoryManager($io, $config, $eventDispatcher, $rfs); - $rm->setRepositoryClass('composer', 'Composer\Repository\ComposerRepository'); - $rm->setRepositoryClass('vcs', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('package', 'Composer\Repository\PackageRepository'); - $rm->setRepositoryClass('pear', 'Composer\Repository\PearRepository'); - $rm->setRepositoryClass('git', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('git-bitbucket', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('github', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('gitlab', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('svn', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('fossil', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('perforce', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('hg', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('hg-bitbucket', 'Composer\Repository\VcsRepository'); - $rm->setRepositoryClass('artifact', 'Composer\Repository\ArtifactRepository'); - $rm->setRepositoryClass('path', 'Composer\Repository\PathRepository'); - - return $rm; - } - - /** - * @return RepositoryInterface[] - */ - private static function createRepos(RepositoryManager $rm, array $repoConfigs) - { - $repos = array(); - - foreach ($repoConfigs as $index => $repo) { - if (is_string($repo)) { - throw new \UnexpectedValueException('"repositories" should be an array of repository definitions, only a single repository was given'); - } - if (!is_array($repo)) { - throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') should be an array, '.gettype($repo).' given'); - } - if (!isset($repo['type'])) { - throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') must have a type defined'); - } - $name = is_int($index) && isset($repo['url']) ? preg_replace('{^https?://}i', '', $repo['url']) : $index; - while (isset($repos[$name])) { - $name .= '2'; - } - if ($repo['type'] === 'filesystem') { - $repos[$name] = new FilesystemRepository($repo['json']); - } else { - $repos[$name] = $rm->createRepository($repo['type'], $repo, $index); - } - } - - return $repos; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php b/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php deleted file mode 100644 index 9a2aaf3..0000000 --- a/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\PackageInterface; - -/** - * Repository interface. - * - * @author Nils Adermann - * @author Konstantin Kudryashov - * @author Jordi Boggiano - */ -interface RepositoryInterface extends \Countable -{ - const SEARCH_FULLTEXT = 0; - const SEARCH_NAME = 1; - - /** - * Checks if specified package registered (installed). - * - * @param PackageInterface $package package instance - * - * @return bool - */ - public function hasPackage(PackageInterface $package); - - /** - * Searches for the first match of a package by name and version. - * - * @param string $name package name - * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against - * - * @return PackageInterface|null - */ - public function findPackage($name, $constraint); - - /** - * Searches for all packages matching a name and optionally a version. - * - * @param string $name package name - * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against - * - * @return PackageInterface[] - */ - public function findPackages($name, $constraint = null); - - /** - * Returns list of registered packages. - * - * @return PackageInterface[] - */ - public function getPackages(); - - /** - * Searches the repository for packages containing the query - * - * @param string $query search query - * @param int $mode a set of SEARCH_* constants to search on, implementations should do a best effort only - * - * @return array[] an array of array('name' => '...', 'description' => '...') - */ - public function search($query, $mode = 0); -} diff --git a/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php b/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php deleted file mode 100644 index 87b82d1..0000000 --- a/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php +++ /dev/null @@ -1,177 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\IO\IOInterface; -use Composer\Config; -use Composer\EventDispatcher\EventDispatcher; -use Composer\Package\PackageInterface; -use Composer\Util\RemoteFilesystem; - -/** - * Repositories manager. - * - * @author Jordi Boggiano - * @author Konstantin Kudryashov - * @author François Pluchino - */ -class RepositoryManager -{ - private $localRepository; - private $repositories = array(); - private $repositoryClasses = array(); - private $io; - private $config; - private $eventDispatcher; - private $rfs; - - public function __construct(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null, RemoteFilesystem $rfs = null) - { - $this->io = $io; - $this->config = $config; - $this->eventDispatcher = $eventDispatcher; - $this->rfs = $rfs; - } - - /** - * Searches for a package by it's name and version in managed repositories. - * - * @param string $name package name - * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against - * - * @return PackageInterface|null - */ - public function findPackage($name, $constraint) - { - foreach ($this->repositories as $repository) { - /** @var RepositoryInterface $repository */ - if ($package = $repository->findPackage($name, $constraint)) { - return $package; - } - } - - return null; - } - - /** - * Searches for all packages matching a name and optionally a version in managed repositories. - * - * @param string $name package name - * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against - * - * @return PackageInterface[] - */ - public function findPackages($name, $constraint) - { - $packages = array(); - - foreach ($this->getRepositories() as $repository) { - $packages = array_merge($packages, $repository->findPackages($name, $constraint)); - } - - return $packages; - } - - /** - * Adds repository - * - * @param RepositoryInterface $repository repository instance - */ - public function addRepository(RepositoryInterface $repository) - { - $this->repositories[] = $repository; - } - - /** - * Adds a repository to the beginning of the chain - * - * This is useful when injecting additional repositories that should trump Packagist, e.g. from a plugin. - * - * @param RepositoryInterface $repository repository instance - */ - public function prependRepository(RepositoryInterface $repository) - { - array_unshift($this->repositories, $repository); - } - - /** - * Returns a new repository for a specific installation type. - * - * @param string $type repository type - * @param array $config repository configuration - * @param string $name repository name - * @throws \InvalidArgumentException if repository for provided type is not registered - * @return RepositoryInterface - */ - public function createRepository($type, $config, $name = null) - { - if (!isset($this->repositoryClasses[$type])) { - throw new \InvalidArgumentException('Repository type is not registered: '.$type); - } - - if (isset($config['packagist']) && false === $config['packagist']) { - $this->io->writeError('Repository "'.$name.'" ('.json_encode($config).') has a packagist key which should be in its own repository definition'); - } - - $class = $this->repositoryClasses[$type]; - - $reflMethod = new \ReflectionMethod($class, '__construct'); - $params = $reflMethod->getParameters(); - if (isset($params[4]) && $params[4]->getClass() && $params[4]->getClass()->getName() === 'Composer\Util\RemoteFilesystem') { - return new $class($config, $this->io, $this->config, $this->eventDispatcher, $this->rfs); - } - - return new $class($config, $this->io, $this->config, $this->eventDispatcher); - } - - /** - * Stores repository class for a specific installation type. - * - * @param string $type installation type - * @param string $class class name of the repo implementation - */ - public function setRepositoryClass($type, $class) - { - $this->repositoryClasses[$type] = $class; - } - - /** - * Returns all repositories, except local one. - * - * @return RepositoryInterface[] - */ - public function getRepositories() - { - return $this->repositories; - } - - /** - * Sets local repository for the project. - * - * @param WritableRepositoryInterface $repository repository instance - */ - public function setLocalRepository(WritableRepositoryInterface $repository) - { - $this->localRepository = $repository; - } - - /** - * Returns local repository for the project. - * - * @return WritableRepositoryInterface - */ - public function getLocalRepository() - { - return $this->localRepository; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php b/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php deleted file mode 100644 index b115d9c..0000000 --- a/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -/** - * Thrown when a security problem, like a broken or missing signature - * - * @author Eric Daspet - */ -class RepositorySecurityException extends \Exception -{ -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php deleted file mode 100644 index c360bad..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php +++ /dev/null @@ -1,452 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Cache; -use Composer\Downloader\TransportException; -use Composer\Json\JsonFile; -use Composer\Util\Bitbucket; - -abstract class BitbucketDriver extends VcsDriver -{ - /** @var Cache */ - protected $cache; - protected $owner; - protected $repository; - protected $hasIssues; - protected $rootIdentifier; - protected $tags; - protected $branches; - protected $infoCache = array(); - protected $branchesUrl = ''; - protected $tagsUrl = ''; - protected $homeUrl = ''; - protected $website = ''; - protected $cloneHttpsUrl = ''; - - /** - * @var VcsDriver - */ - protected $fallbackDriver; - /** @var string|null if set either git or hg */ - protected $vcsType; - - /** - * {@inheritDoc} - */ - public function initialize() - { - preg_match('#^https?://bitbucket\.org/([^/]+)/([^/]+?)(\.git|/?)$#i', $this->url, $match); - $this->owner = $match[1]; - $this->repository = $match[2]; - $this->originUrl = 'bitbucket.org'; - $this->cache = new Cache( - $this->io, - implode('/', array( - $this->config->get('cache-repo-dir'), - $this->originUrl, - $this->owner, - $this->repository, - )) - ); - } - - /** - * {@inheritDoc} - */ - public function getUrl() - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getUrl(); - } - - return $this->cloneHttpsUrl; - } - - /** - * Attempts to fetch the repository data via the BitBucket API and - * sets some parameters which are used in other methods - * - * @return bool - */ - protected function getRepoData() - { - $resource = sprintf( - 'https://api.bitbucket.org/2.0/repositories/%s/%s?%s', - $this->owner, - $this->repository, - http_build_query( - array('fields' => '-project,-owner'), - null, - '&' - ) - ); - - $repoData = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource, true), $resource); - if ($this->fallbackDriver) { - return false; - } - $this->parseCloneUrls($repoData['links']['clone']); - - $this->hasIssues = !empty($repoData['has_issues']); - $this->branchesUrl = $repoData['links']['branches']['href']; - $this->tagsUrl = $repoData['links']['tags']['href']; - $this->homeUrl = $repoData['links']['html']['href']; - $this->website = $repoData['website']; - $this->vcsType = $repoData['scm']; - - return true; - } - - /** - * {@inheritDoc} - */ - public function getComposerInformation($identifier) - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getComposerInformation($identifier); - } - - if (!isset($this->infoCache[$identifier])) { - if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { - return $this->infoCache[$identifier] = JsonFile::parseJson($res); - } - - $composer = $this->getBaseComposerInformation($identifier); - - if ($composer) { - // specials for bitbucket - if (!isset($composer['support']['source'])) { - $label = array_search( - $identifier, - $this->getTags() - ) ?: array_search( - $identifier, - $this->getBranches() - ) ?: $identifier; - - if (array_key_exists($label, $tags = $this->getTags())) { - $hash = $tags[$label]; - } elseif (array_key_exists($label, $branches = $this->getBranches())) { - $hash = $branches[$label]; - } - - if (! isset($hash)) { - $composer['support']['source'] = sprintf( - 'https://%s/%s/%s/src', - $this->originUrl, - $this->owner, - $this->repository - ); - } else { - $composer['support']['source'] = sprintf( - 'https://%s/%s/%s/src/%s/?at=%s', - $this->originUrl, - $this->owner, - $this->repository, - $hash, - $label - ); - } - } - if (!isset($composer['support']['issues']) && $this->hasIssues) { - $composer['support']['issues'] = sprintf( - 'https://%s/%s/%s/issues', - $this->originUrl, - $this->owner, - $this->repository - ); - } - if (!isset($composer['homepage'])) { - $composer['homepage'] = empty($this->website) ? $this->homeUrl : $this->website; - } - } - - $this->infoCache[$identifier] = $composer; - - if ($this->shouldCache($identifier)) { - $this->cache->write($identifier, json_encode($composer)); - } - } - - return $this->infoCache[$identifier]; - } - - /** - * {@inheritdoc} - */ - public function getFileContent($file, $identifier) - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getFileContent($file, $identifier); - } - - if (strpos($identifier, '/') !== false) { - $branches = $this->getBranches(); - if (isset($branches[$identifier])) { - $identifier = $branches[$identifier]; - } - } - - $resource = sprintf( - 'https://api.bitbucket.org/2.0/repositories/%s/%s/src/%s/%s', - $this->owner, - $this->repository, - $identifier, - $file - ); - - return $this->getContentsWithOAuthCredentials($resource); - } - - /** - * {@inheritdoc} - */ - public function getChangeDate($identifier) - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getChangeDate($identifier); - } - - if (strpos($identifier, '/') !== false) { - $branches = $this->getBranches(); - if (isset($branches[$identifier])) { - $identifier = $branches[$identifier]; - } - } - - $resource = sprintf( - 'https://api.bitbucket.org/2.0/repositories/%s/%s/commit/%s?fields=date', - $this->owner, - $this->repository, - $identifier - ); - $commit = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource); - - return new \DateTime($commit['date']); - } - - /** - * {@inheritDoc} - */ - public function getSource($identifier) - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getSource($identifier); - } - - return array('type' => $this->vcsType, 'url' => $this->getUrl(), 'reference' => $identifier); - } - - /** - * {@inheritDoc} - */ - public function getDist($identifier) - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getDist($identifier); - } - - $url = sprintf( - 'https://bitbucket.org/%s/%s/get/%s.zip', - $this->owner, - $this->repository, - $identifier - ); - - return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); - } - - /** - * {@inheritDoc} - */ - public function getTags() - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getTags(); - } - - if (null === $this->tags) { - $this->tags = array(); - $resource = sprintf( - '%s?%s', - $this->tagsUrl, - http_build_query( - array( - 'pagelen' => 100, - 'fields' => 'values.name,values.target.hash,next', - 'sort' => '-target.date', - ), - null, - '&' - ) - ); - $hasNext = true; - while ($hasNext) { - $tagsData = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource); - foreach ($tagsData['values'] as $data) { - $this->tags[$data['name']] = $data['target']['hash']; - } - if (empty($tagsData['next'])) { - $hasNext = false; - } else { - $resource = $tagsData['next']; - } - } - if ($this->vcsType === 'hg') { - unset($this->tags['tip']); - } - } - - return $this->tags; - } - - /** - * {@inheritDoc} - */ - public function getBranches() - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getBranches(); - } - - if (null === $this->branches) { - $this->branches = array(); - $resource = sprintf( - '%s?%s', - $this->branchesUrl, - http_build_query( - array( - 'pagelen' => 100, - 'fields' => 'values.name,values.target.hash,values.heads,next', - 'sort' => '-target.date', - ), - null, - '&' - ) - ); - $hasNext = true; - while ($hasNext) { - $branchData = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource); - foreach ($branchData['values'] as $data) { - // skip headless branches which seem to be deleted branches that bitbucket nevertheless returns in the API - if ($this->vcsType === 'hg' && empty($data['heads'])) { - continue; - } - - $this->branches[$data['name']] = $data['target']['hash']; - } - if (empty($branchData['next'])) { - $hasNext = false; - } else { - $resource = $branchData['next']; - } - } - } - - return $this->branches; - } - - /** - * Get the remote content. - * - * @param string $url The URL of content - * @param bool $fetchingRepoData - * - * @return mixed The result - */ - protected function getContentsWithOAuthCredentials($url, $fetchingRepoData = false) - { - try { - return parent::getContents($url); - } catch (TransportException $e) { - $bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process, $this->remoteFilesystem); - - if (403 === $e->getCode() || (401 === $e->getCode() && strpos($e->getMessage(), 'Could not authenticate against') === 0)) { - if (!$this->io->hasAuthentication($this->originUrl) - && $bitbucketUtil->authorizeOAuth($this->originUrl) - ) { - return parent::getContents($url); - } - - if (!$this->io->isInteractive() && $fetchingRepoData) { - return $this->attemptCloneFallback(); - } - } - - throw $e; - } - } - - /** - * Generate an SSH URL - * - * @return string - */ - abstract protected function generateSshUrl(); - - protected function attemptCloneFallback() - { - try { - $this->setupFallbackDriver($this->generateSshUrl()); - } catch (\RuntimeException $e) { - $this->fallbackDriver = null; - - $this->io->writeError( - 'Failed to clone the ' . $this->generateSshUrl() . ' repository, try running in interactive mode' - . ' so that you can enter your Bitbucket OAuth consumer credentials' - ); - throw $e; - } - } - - /** - * @param string $url - * @return void - */ - abstract protected function setupFallbackDriver($url); - - /** - * @param array $cloneLinks - * @return void - */ - protected function parseCloneUrls(array $cloneLinks) - { - foreach ($cloneLinks as $cloneLink) { - if ($cloneLink['name'] === 'https') { - // Format: https://(user@)bitbucket.org/{user}/{repo} - // Strip username from URL (only present in clone URL's for private repositories) - $this->cloneHttpsUrl = preg_replace('/https:\/\/([^@]+@)?/', 'https://', $cloneLink['href']); - } - } - } - - /** - * @return array|null - */ - protected function getMainBranchData() - { - $resource = sprintf( - 'https://api.bitbucket.org/2.0/repositories/%s/%s?fields=mainbranch', - $this->owner, - $this->repository - ); - - $data = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource); - if (isset($data['mainbranch'])) { - return $data['mainbranch']; - } - - return null; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php deleted file mode 100644 index 491fafa..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php +++ /dev/null @@ -1,243 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Cache; -use Composer\Config; -use Composer\Util\ProcessExecutor; -use Composer\Util\Filesystem; -use Composer\IO\IOInterface; - -/** - * @author BohwaZ - */ -class FossilDriver extends VcsDriver -{ - protected $tags; - protected $branches; - protected $rootIdentifier; - protected $repoFile; - protected $checkoutDir; - protected $infoCache = array(); - - /** - * {@inheritDoc} - */ - public function initialize() - { - // Make sure fossil is installed and reachable. - $this->checkFossil(); - - // Ensure we are allowed to use this URL by config. - $this->config->prohibitUrlByConfig($this->url, $this->io); - - // Only if url points to a locally accessible directory, assume it's the checkout directory. - // Otherwise, it should be something fossil can clone from. - if (Filesystem::isLocalPath($this->url) && is_dir($this->url)) { - $this->checkoutDir = $this->url; - } else { - if (!Cache::isUsable($this->config->get('cache-repo-dir')) || !Cache::isUsable($this->config->get('cache-vcs-dir'))) { - throw new \RuntimeException('FossilDriver requires a usable cache directory, and it looks like you set it to be disabled'); - } - - $localName = preg_replace('{[^a-z0-9]}i', '-', $this->url); - $this->repoFile = $this->config->get('cache-repo-dir') . '/' . $localName . '.fossil'; - $this->checkoutDir = $this->config->get('cache-vcs-dir') . '/' . $localName . '/'; - - $this->updateLocalRepo(); - } - - $this->getTags(); - $this->getBranches(); - } - - /** - * Check that fossil can be invoked via command line. - */ - protected function checkFossil() - { - if (0 !== $this->process->execute('fossil version', $ignoredOutput)) { - throw new \RuntimeException("fossil was not found, check that it is installed and in your PATH env.\n\n" . $this->process->getErrorOutput()); - } - } - - /** - * Clone or update existing local fossil repository. - */ - protected function updateLocalRepo() - { - $fs = new Filesystem(); - $fs->ensureDirectoryExists($this->checkoutDir); - - if (!is_writable(dirname($this->checkoutDir))) { - throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$this->checkoutDir.'" directory is not writable by the current user.'); - } - - // update the repo if it is a valid fossil repository - if (is_file($this->repoFile) && is_dir($this->checkoutDir) && 0 === $this->process->execute('fossil info', $output, $this->checkoutDir)) { - if (0 !== $this->process->execute('fossil pull', $output, $this->checkoutDir)) { - $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); - } - } else { - // clean up directory and do a fresh clone into it - $fs->removeDirectory($this->checkoutDir); - $fs->remove($this->repoFile); - - $fs->ensureDirectoryExists($this->checkoutDir); - - if (0 !== $this->process->execute(sprintf('fossil clone %s %s', ProcessExecutor::escape($this->url), ProcessExecutor::escape($this->repoFile)), $output)) { - $output = $this->process->getErrorOutput(); - - throw new \RuntimeException('Failed to clone '.$this->url.' to repository ' . $this->repoFile . "\n\n" .$output); - } - - if (0 !== $this->process->execute(sprintf('fossil open %s --nested', ProcessExecutor::escape($this->repoFile)), $output, $this->checkoutDir)) { - $output = $this->process->getErrorOutput(); - - throw new \RuntimeException('Failed to open repository '.$this->repoFile.' in ' . $this->checkoutDir . "\n\n" .$output); - } - } - } - - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - if (null === $this->rootIdentifier) { - $this->rootIdentifier = 'trunk'; - } - - return $this->rootIdentifier; - } - - /** - * {@inheritDoc} - */ - public function getUrl() - { - return $this->url; - } - - /** - * {@inheritDoc} - */ - public function getSource($identifier) - { - return array('type' => 'fossil', 'url' => $this->getUrl(), 'reference' => $identifier); - } - - /** - * {@inheritDoc} - */ - public function getDist($identifier) - { - return null; - } - - /** - * {@inheritdoc} - */ - public function getFileContent($file, $identifier) - { - $command = sprintf('fossil cat -r %s %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); - $this->process->execute($command, $content, $this->checkoutDir); - - if (!trim($content)) { - return null; - } - - return $content; - } - - /** - * {@inheritdoc} - */ - public function getChangeDate($identifier) - { - $this->process->execute('fossil finfo -b -n 1 composer.json', $output, $this->checkoutDir); - list($ckout, $date, $message) = explode(' ', trim($output), 3); - - return new \DateTime($date, new \DateTimeZone('UTC')); - } - - /** - * {@inheritDoc} - */ - public function getTags() - { - if (null === $this->tags) { - $tags = array(); - - $this->process->execute('fossil tag list', $output, $this->checkoutDir); - foreach ($this->process->splitLines($output) as $tag) { - $tags[$tag] = $tag; - } - - $this->tags = $tags; - } - - return $this->tags; - } - - /** - * {@inheritDoc} - */ - public function getBranches() - { - if (null === $this->branches) { - $branches = array(); - $bookmarks = array(); - - $this->process->execute('fossil branch list', $output, $this->checkoutDir); - foreach ($this->process->splitLines($output) as $branch) { - $branch = trim(preg_replace('/^\*/', '', trim($branch))); - $branches[$branch] = $branch; - } - - $this->branches = $branches; - } - - return $this->branches; - } - - /** - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?(?:chiselapp\.com|fossil\.))#i', $url)) { - return true; - } - - if (preg_match('!/fossil/|\.fossil!', $url)) { - return true; - } - - // local filesystem - if (Filesystem::isLocalPath($url)) { - $url = Filesystem::getPlatformPath($url); - if (!is_dir($url)) { - return false; - } - - $process = new ProcessExecutor($io); - // check whether there is a fossil repo in that path - if ($process->execute('fossil info', $output, $url) === 0) { - return true; - } - } - - return false; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php deleted file mode 100644 index 82d934b..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Config; -use Composer\IO\IOInterface; - -/** - * @author Per Bernhardt - */ -class GitBitbucketDriver extends BitbucketDriver -{ - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getRootIdentifier(); - } - - if (null === $this->rootIdentifier) { - if (! $this->getRepoData()) { - return $this->fallbackDriver->getRootIdentifier(); - } - - if ($this->vcsType !== 'git') { - throw new \RuntimeException( - $this->url.' does not appear to be a git repository, use '. - $this->cloneHttpsUrl.' if this is a mercurial bitbucket repository' - ); - } - - $mainBranchData = $this->getMainBranchData(); - $this->rootIdentifier = !empty($mainBranchData['name']) ? $mainBranchData['name'] : 'master'; - } - - return $this->rootIdentifier; - } - - /** - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - if (!preg_match('#^https?://bitbucket\.org/([^/]+)/(.+?)\.git$#i', $url)) { - return false; - } - - if (!extension_loaded('openssl')) { - $io->writeError('Skipping Bitbucket git driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); - - return false; - } - - return true; - } - - /** - * {@inheritdoc} - */ - protected function setupFallbackDriver($url) - { - $this->fallbackDriver = new GitDriver( - array('url' => $url), - $this->io, - $this->config, - $this->process, - $this->remoteFilesystem - ); - $this->fallbackDriver->initialize(); - } - - /** - * {@inheritdoc} - */ - protected function generateSshUrl() - { - return 'git@' . $this->originUrl . ':' . $this->owner.'/'.$this->repository.'.git'; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php deleted file mode 100644 index cc6e3ed..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php +++ /dev/null @@ -1,226 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Util\ProcessExecutor; -use Composer\Util\Filesystem; -use Composer\Util\Git as GitUtil; -use Composer\IO\IOInterface; -use Composer\Cache; -use Composer\Config; - -/** - * @author Jordi Boggiano - */ -class GitDriver extends VcsDriver -{ - protected $cache; - protected $tags; - protected $branches; - protected $rootIdentifier; - protected $repoDir; - protected $infoCache = array(); - - /** - * {@inheritDoc} - */ - public function initialize() - { - if (Filesystem::isLocalPath($this->url)) { - $this->url = preg_replace('{[\\/]\.git/?$}', '', $this->url); - $this->repoDir = $this->url; - $cacheUrl = realpath($this->url); - } else { - if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { - throw new \RuntimeException('GitDriver requires a usable cache directory, and it looks like you set it to be disabled'); - } - - $this->repoDir = $this->config->get('cache-vcs-dir') . '/' . preg_replace('{[^a-z0-9.]}i', '-', $this->url) . '/'; - - GitUtil::cleanEnv(); - - $fs = new Filesystem(); - $fs->ensureDirectoryExists(dirname($this->repoDir)); - - if (!is_writable(dirname($this->repoDir))) { - throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.dirname($this->repoDir).'" directory is not writable by the current user.'); - } - - if (preg_match('{^ssh://[^@]+@[^:]+:[^0-9]+}', $this->url)) { - throw new \InvalidArgumentException('The source URL '.$this->url.' is invalid, ssh URLs should have a port number after ":".'."\n".'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); - } - - $gitUtil = new GitUtil($this->io, $this->config, $this->process, $fs); - if (!$gitUtil->syncMirror($this->url, $this->repoDir)) { - $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated'); - } - - $cacheUrl = $this->url; - } - - $this->getTags(); - $this->getBranches(); - - $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $cacheUrl)); - } - - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - if (null === $this->rootIdentifier) { - $this->rootIdentifier = 'master'; - - // select currently checked out branch if master is not available - $this->process->execute('git branch --no-color', $output, $this->repoDir); - $branches = $this->process->splitLines($output); - if (!in_array('* master', $branches)) { - foreach ($branches as $branch) { - if ($branch && preg_match('{^\* +(\S+)}', $branch, $match)) { - $this->rootIdentifier = $match[1]; - break; - } - } - } - } - - return $this->rootIdentifier; - } - - /** - * {@inheritDoc} - */ - public function getUrl() - { - return $this->url; - } - - /** - * {@inheritDoc} - */ - public function getSource($identifier) - { - return array('type' => 'git', 'url' => $this->getUrl(), 'reference' => $identifier); - } - - /** - * {@inheritDoc} - */ - public function getDist($identifier) - { - return null; - } - - /** - * {@inheritdoc} - */ - public function getFileContent($file, $identifier) - { - $resource = sprintf('%s:%s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); - $this->process->execute(sprintf('git show %s', $resource), $content, $this->repoDir); - - if (!trim($content)) { - return null; - } - - return $content; - } - - /** - * {@inheritdoc} - */ - public function getChangeDate($identifier) - { - $this->process->execute(sprintf( - 'git -c log.showSignature=false log -1 --format=%%at %s', - ProcessExecutor::escape($identifier) - ), $output, $this->repoDir); - - return new \DateTime('@'.trim($output), new \DateTimeZone('UTC')); - } - - /** - * {@inheritDoc} - */ - public function getTags() - { - if (null === $this->tags) { - $this->tags = array(); - - $this->process->execute('git show-ref --tags --dereference', $output, $this->repoDir); - foreach ($output = $this->process->splitLines($output) as $tag) { - if ($tag && preg_match('{^([a-f0-9]{40}) refs/tags/(\S+?)(\^\{\})?$}', $tag, $match)) { - $this->tags[$match[2]] = $match[1]; - } - } - } - - return $this->tags; - } - - /** - * {@inheritDoc} - */ - public function getBranches() - { - if (null === $this->branches) { - $branches = array(); - - $this->process->execute('git branch --no-color --no-abbrev -v', $output, $this->repoDir); - foreach ($this->process->splitLines($output) as $branch) { - if ($branch && !preg_match('{^ *[^/]+/HEAD }', $branch)) { - if (preg_match('{^(?:\* )? *(\S+) *([a-f0-9]+)(?: .*)?$}', $branch, $match)) { - $branches[$match[1]] = $match[2]; - } - } - } - - $this->branches = $branches; - } - - return $this->branches; - } - - /** - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - if (preg_match('#(^git://|\.git/?$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) { - return true; - } - - // local filesystem - if (Filesystem::isLocalPath($url)) { - $url = Filesystem::getPlatformPath($url); - if (!is_dir($url)) { - return false; - } - - $process = new ProcessExecutor($io); - // check whether there is a git repo in that path - if ($process->execute('git tag', $output, $url) === 0) { - return true; - } - } - - if (!$deep) { - return false; - } - - $process = new ProcessExecutor($io); - - return $process->execute('git ls-remote --heads ' . ProcessExecutor::escape($url), $output) === 0; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php deleted file mode 100644 index e44dd87..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php +++ /dev/null @@ -1,476 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Config; -use Composer\Downloader\TransportException; -use Composer\Json\JsonFile; -use Composer\Cache; -use Composer\IO\IOInterface; -use Composer\Util\GitHub; - -/** - * @author Jordi Boggiano - */ -class GitHubDriver extends VcsDriver -{ - protected $cache; - protected $owner; - protected $repository; - protected $tags; - protected $branches; - protected $rootIdentifier; - protected $repoData; - protected $hasIssues; - protected $infoCache = array(); - protected $isPrivate = false; - - /** - * Git Driver - * - * @var GitDriver - */ - protected $gitDriver; - - /** - * {@inheritDoc} - */ - public function initialize() - { - preg_match('#^(?:(?:https?|git)://([^/]+)/|git@([^:]+):/?)([^/]+)/(.+?)(?:\.git|/)?$#', $this->url, $match); - $this->owner = $match[3]; - $this->repository = $match[4]; - $this->originUrl = strtolower(!empty($match[1]) ? $match[1] : $match[2]); - if ($this->originUrl === 'www.github.com') { - $this->originUrl = 'github.com'; - } - $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->owner.'/'.$this->repository); - - if ( $this->config->get('use-github-api') === false || (isset($this->repoConfig['no-api']) && $this->repoConfig['no-api'] ) ){ - $this->setupGitDriver($this->url); - - return; - } - - $this->fetchRootIdentifier(); - } - - public function getRepositoryUrl() - { - return 'https://'.$this->originUrl.'/'.$this->owner.'/'.$this->repository; - } - - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - if ($this->gitDriver) { - return $this->gitDriver->getRootIdentifier(); - } - - return $this->rootIdentifier; - } - - /** - * {@inheritDoc} - */ - public function getUrl() - { - if ($this->gitDriver) { - return $this->gitDriver->getUrl(); - } - - return 'https://' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; - } - - /** - * {@inheritDoc} - */ - protected function getApiUrl() - { - if ('github.com' === $this->originUrl) { - $apiUrl = 'api.github.com'; - } else { - $apiUrl = $this->originUrl . '/api/v3'; - } - - return 'https://' . $apiUrl; - } - - /** - * {@inheritDoc} - */ - public function getSource($identifier) - { - if ($this->gitDriver) { - return $this->gitDriver->getSource($identifier); - } - if ($this->isPrivate) { - // Private GitHub repositories should be accessed using the - // SSH version of the URL. - $url = $this->generateSshUrl(); - } else { - $url = $this->getUrl(); - } - - return array('type' => 'git', 'url' => $url, 'reference' => $identifier); - } - - /** - * {@inheritDoc} - */ - public function getDist($identifier) - { - $url = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/zipball/'.$identifier; - - return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); - } - - /** - * {@inheritDoc} - */ - public function getComposerInformation($identifier) - { - if ($this->gitDriver) { - return $this->gitDriver->getComposerInformation($identifier); - } - - if (!isset($this->infoCache[$identifier])) { - if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { - return $this->infoCache[$identifier] = JsonFile::parseJson($res); - } - - $composer = $this->getBaseComposerInformation($identifier); - - if ($composer) { - // specials for github - if (!isset($composer['support']['source'])) { - $label = array_search($identifier, $this->getTags()) ?: array_search($identifier, $this->getBranches()) ?: $identifier; - $composer['support']['source'] = sprintf('https://%s/%s/%s/tree/%s', $this->originUrl, $this->owner, $this->repository, $label); - } - if (!isset($composer['support']['issues']) && $this->hasIssues) { - $composer['support']['issues'] = sprintf('https://%s/%s/%s/issues', $this->originUrl, $this->owner, $this->repository); - } - } - - if ($this->shouldCache($identifier)) { - $this->cache->write($identifier, json_encode($composer)); - } - - $this->infoCache[$identifier] = $composer; - } - - return $this->infoCache[$identifier]; - } - - /** - * {@inheritdoc} - */ - public function getFileContent($file, $identifier) - { - if ($this->gitDriver) { - return $this->gitDriver->getFileContent($file, $identifier); - } - - $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/contents/' . $file . '?ref='.urlencode($identifier); - $resource = JsonFile::parseJson($this->getContents($resource)); - if (empty($resource['content']) || $resource['encoding'] !== 'base64' || !($content = base64_decode($resource['content']))) { - throw new \RuntimeException('Could not retrieve ' . $file . ' for '.$identifier); - } - - return $content; - } - - /** - * {@inheritdoc} - */ - public function getChangeDate($identifier) - { - if ($this->gitDriver) { - return $this->gitDriver->getChangeDate($identifier); - } - - $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/commits/'.urlencode($identifier); - $commit = JsonFile::parseJson($this->getContents($resource), $resource); - - return new \DateTime($commit['commit']['committer']['date']); - } - - /** - * {@inheritDoc} - */ - public function getTags() - { - if ($this->gitDriver) { - return $this->gitDriver->getTags(); - } - if (null === $this->tags) { - $this->tags = array(); - $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/tags?per_page=100'; - - do { - $tagsData = JsonFile::parseJson($this->getContents($resource), $resource); - foreach ($tagsData as $tag) { - $this->tags[$tag['name']] = $tag['commit']['sha']; - } - - $resource = $this->getNextPage(); - } while ($resource); - } - - return $this->tags; - } - - /** - * {@inheritDoc} - */ - public function getBranches() - { - if ($this->gitDriver) { - return $this->gitDriver->getBranches(); - } - if (null === $this->branches) { - $this->branches = array(); - $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/git/refs/heads?per_page=100'; - - $branchBlacklist = array('gh-pages'); - - do { - $branchData = JsonFile::parseJson($this->getContents($resource), $resource); - foreach ($branchData as $branch) { - $name = substr($branch['ref'], 11); - if (!in_array($name, $branchBlacklist)) { - $this->branches[$name] = $branch['object']['sha']; - } - } - - $resource = $this->getNextPage(); - } while ($resource); - } - - return $this->branches; - } - - /** - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - if (!preg_match('#^((?:https?|git)://([^/]+)/|git@([^:]+):/?)([^/]+)/(.+?)(?:\.git|/)?$#', $url, $matches)) { - return false; - } - - $originUrl = !empty($matches[2]) ? $matches[2] : $matches[3]; - if (!in_array(strtolower(preg_replace('{^www\.}i', '', $originUrl)), $config->get('github-domains'))) { - return false; - } - - if (!extension_loaded('openssl')) { - $io->writeError('Skipping GitHub driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); - - return false; - } - - return true; - } - - /** - * Gives back the loaded /repos// result - * - * @return array|null - */ - public function getRepoData() - { - $this->fetchRootIdentifier(); - - return $this->repoData; - } - - /** - * Generate an SSH URL - * - * @return string - */ - protected function generateSshUrl() - { - if (false !== strpos($this->originUrl, ':')) { - return 'ssh://git@' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; - } - - return 'git@' . $this->originUrl . ':'.$this->owner.'/'.$this->repository.'.git'; - } - - /** - * {@inheritDoc} - */ - protected function getContents($url, $fetchingRepoData = false) - { - try { - return parent::getContents($url); - } catch (TransportException $e) { - $gitHubUtil = new GitHub($this->io, $this->config, $this->process, $this->remoteFilesystem); - - switch ($e->getCode()) { - case 401: - case 404: - // try to authorize only if we are fetching the main /repos/foo/bar data, otherwise it must be a real 404 - if (!$fetchingRepoData) { - throw $e; - } - - if ($gitHubUtil->authorizeOAuth($this->originUrl)) { - return parent::getContents($url); - } - - if (!$this->io->isInteractive()) { - return $this->attemptCloneFallback(); - } - - $scopesIssued = array(); - $scopesNeeded = array(); - if ($headers = $e->getHeaders()) { - if ($scopes = $this->remoteFilesystem->findHeaderValue($headers, 'X-OAuth-Scopes')) { - $scopesIssued = explode(' ', $scopes); - } - if ($scopes = $this->remoteFilesystem->findHeaderValue($headers, 'X-Accepted-OAuth-Scopes')) { - $scopesNeeded = explode(' ', $scopes); - } - } - $scopesFailed = array_diff($scopesNeeded, $scopesIssued); - // non-authenticated requests get no scopesNeeded, so ask for credentials - // authenticated requests which failed some scopes should ask for new credentials too - if (!$headers || !count($scopesNeeded) || count($scopesFailed)) { - $gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'Your GitHub credentials are required to fetch private repository metadata ('.$this->url.')'); - } - - return parent::getContents($url); - - case 403: - if (!$this->io->hasAuthentication($this->originUrl) && $gitHubUtil->authorizeOAuth($this->originUrl)) { - return parent::getContents($url); - } - - if (!$this->io->isInteractive() && $fetchingRepoData) { - return $this->attemptCloneFallback(); - } - - $rateLimited = $gitHubUtil->isRateLimited($e->getHeaders()); - - if (!$this->io->hasAuthentication($this->originUrl)) { - if (!$this->io->isInteractive()) { - $this->io->writeError('GitHub API limit exhausted. Failed to get metadata for the '.$this->url.' repository, try running in interactive mode so that you can enter your GitHub credentials to increase the API limit'); - throw $e; - } - - $gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'API limit exhausted. Enter your GitHub credentials to get a larger API limit ('.$this->url.')'); - - return parent::getContents($url); - } - - if ($rateLimited) { - $rateLimit = $gitHubUtil->getRateLimit($e->getHeaders()); - $this->io->writeError(sprintf( - 'GitHub API limit (%d calls/hr) is exhausted. You are already authorized so you have to wait until %s before doing more requests', - $rateLimit['limit'], - $rateLimit['reset'] - )); - } - - throw $e; - - default: - throw $e; - } - } - } - - /** - * Fetch root identifier from GitHub - * - * @throws TransportException - */ - protected function fetchRootIdentifier() - { - if ($this->repoData) { - return; - } - - $repoDataUrl = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository; - - $this->repoData = JsonFile::parseJson($this->getContents($repoDataUrl, true), $repoDataUrl); - if (null === $this->repoData && null !== $this->gitDriver) { - return; - } - - $this->owner = $this->repoData['owner']['login']; - $this->repository = $this->repoData['name']; - - $this->isPrivate = !empty($this->repoData['private']); - if (isset($this->repoData['default_branch'])) { - $this->rootIdentifier = $this->repoData['default_branch']; - } elseif (isset($this->repoData['master_branch'])) { - $this->rootIdentifier = $this->repoData['master_branch']; - } else { - $this->rootIdentifier = 'master'; - } - $this->hasIssues = !empty($this->repoData['has_issues']); - } - - protected function attemptCloneFallback() - { - $this->isPrivate = true; - - try { - // If this repository may be private (hard to say for sure, - // GitHub returns 404 for private repositories) and we - // cannot ask for authentication credentials (because we - // are not interactive) then we fallback to GitDriver. - $this->setupGitDriver($this->generateSshUrl()); - - return; - } catch (\RuntimeException $e) { - $this->gitDriver = null; - - $this->io->writeError('Failed to clone the '.$this->generateSshUrl().' repository, try running in interactive mode so that you can enter your GitHub credentials'); - throw $e; - } - } - - protected function setupGitDriver($url) - { - $this->gitDriver = new GitDriver( - array('url' => $url), - $this->io, - $this->config, - $this->process, - $this->remoteFilesystem - ); - $this->gitDriver->initialize(); - } - - protected function getNextPage() - { - $headers = $this->remoteFilesystem->getLastHeaders(); - foreach ($headers as $header) { - if (preg_match('{^link:\s*(.+?)\s*$}i', $header, $match)) { - $links = explode(',', $match[1]); - foreach ($links as $link) { - if (preg_match('{<(.+?)>; *rel="next"}', $link, $match)) { - return $match[1]; - } - } - } - } - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php deleted file mode 100644 index e346b03..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php +++ /dev/null @@ -1,520 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Config; -use Composer\Cache; -use Composer\IO\IOInterface; -use Composer\Json\JsonFile; -use Composer\Downloader\TransportException; -use Composer\Util\RemoteFilesystem; -use Composer\Util\GitLab; - -/** - * Driver for GitLab API, use the Git driver for local checkouts. - * - * @author Henrik Bjørnskov - * @author Jérôme Tamarelle - */ -class GitLabDriver extends VcsDriver -{ - private $scheme; - private $namespace; - private $repository; - - /** - * @var array Project data returned by GitLab API - */ - private $project; - - /** - * @var array Keeps commits returned by GitLab API - */ - private $commits = array(); - - /** - * @var array List of tag => reference - */ - private $tags; - - /** - * @var array List of branch => reference - */ - private $branches; - - /** - * Git Driver - * - * @var GitDriver - */ - protected $gitDriver; - - /** - * Defaults to true unless we can make sure it is public - * - * @var bool defines whether the repo is private or not - */ - private $isPrivate = true; - - /** - * @var bool true if the origin has a port number or a path component in it - */ - private $hasNonstandardOrigin = false; - - const URL_REGEX = '#^(?:(?Phttps?)://(?P.+?)(?::(?P[0-9]+))?/|git@(?P[^:]+):)(?P.+)/(?P[^/]+?)(?:\.git|/)?$#'; - - /** - * Extracts information from the repository url. - * - * SSH urls use https by default. Set "secure-http": false on the repository config to use http instead. - * - * {@inheritDoc} - */ - public function initialize() - { - if (!preg_match(self::URL_REGEX, $this->url, $match)) { - throw new \InvalidArgumentException('The URL provided is invalid. It must be the HTTP URL of a GitLab project.'); - } - - $guessedDomain = !empty($match['domain']) ? $match['domain'] : $match['domain2']; - $configuredDomains = $this->config->get('gitlab-domains'); - $urlParts = explode('/', $match['parts']); - - $this->scheme = !empty($match['scheme']) - ? $match['scheme'] - : (isset($this->repoConfig['secure-http']) && $this->repoConfig['secure-http'] === false ? 'http' : 'https') - ; - $this->originUrl = $this->determineOrigin($configuredDomains, $guessedDomain, $urlParts, $match['port']); - - if (false !== strpos($this->originUrl, ':') || false !== strpos($this->originUrl, '/')) { - $this->hasNonstandardOrigin = true; - } - - $this->namespace = implode('/', $urlParts); - $this->repository = preg_replace('#(\.git)$#', '', $match['repo']); - - $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository); - - $this->fetchProject(); - } - - /** - * Updates the RemoteFilesystem instance. - * Mainly useful for tests. - * - * @internal - */ - public function setRemoteFilesystem(RemoteFilesystem $remoteFilesystem) - { - $this->remoteFilesystem = $remoteFilesystem; - } - - /** - * {@inheritdoc} - */ - public function getFileContent($file, $identifier) - { - if ($this->gitDriver) { - return $this->gitDriver->getFileContent($file, $identifier); - } - - // Convert the root identifier to a cacheable commit id - if (!preg_match('{[a-f0-9]{40}}i', $identifier)) { - $branches = $this->getBranches(); - if (isset($branches[$identifier])) { - $identifier = $branches[$identifier]; - } - } - - $resource = $this->getApiUrl().'/repository/files/'.$this->urlEncodeAll($file).'/raw?ref='.$identifier; - - try { - $content = $this->getContents($resource); - } catch (TransportException $e) { - if ($e->getCode() !== 404) { - throw $e; - } - - return null; - } - - return $content; - } - - /** - * {@inheritdoc} - */ - public function getChangeDate($identifier) - { - if ($this->gitDriver) { - return $this->gitDriver->getChangeDate($identifier); - } - - if (isset($this->commits[$identifier])) { - return new \DateTime($this->commits[$identifier]['committed_date']); - } - - return new \DateTime(); - } - - /** - * {@inheritDoc} - */ - public function getRepositoryUrl() - { - return $this->isPrivate ? $this->project['ssh_url_to_repo'] : $this->project['http_url_to_repo']; - } - - /** - * {@inheritDoc} - */ - public function getUrl() - { - if ($this->gitDriver) { - return $this->gitDriver->getUrl(); - } - - return $this->project['web_url']; - } - - /** - * {@inheritDoc} - */ - public function getDist($identifier) - { - $url = $this->getApiUrl().'/repository/archive.zip?sha='.$identifier; - - return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); - } - - /** - * {@inheritDoc} - */ - public function getSource($identifier) - { - if ($this->gitDriver) { - return $this->gitDriver->getSource($identifier); - } - - return array('type' => 'git', 'url' => $this->getRepositoryUrl(), 'reference' => $identifier); - } - - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - if ($this->gitDriver) { - return $this->gitDriver->getRootIdentifier(); - } - - return $this->project['default_branch']; - } - - /** - * {@inheritDoc} - */ - public function getBranches() - { - if ($this->gitDriver) { - return $this->gitDriver->getBranches(); - } - - if (!$this->branches) { - $this->branches = $this->getReferences('branches'); - } - - return $this->branches; - } - - /** - * {@inheritDoc} - */ - public function getTags() - { - if ($this->gitDriver) { - return $this->gitDriver->getTags(); - } - - if (!$this->tags) { - $this->tags = $this->getReferences('tags'); - } - - return $this->tags; - } - - /** - * @return string Base URL for GitLab API v3 - */ - public function getApiUrl() - { - return $this->scheme.'://'.$this->originUrl.'/api/v4/projects/'.$this->urlEncodeAll($this->namespace).'%2F'.$this->urlEncodeAll($this->repository); - } - - /** - * Urlencode all non alphanumeric characters. rawurlencode() can not be used as it does not encode `.` - * - * @param string $string - * @return string - */ - private function urlEncodeAll($string) - { - $encoded = ''; - for ($i = 0; isset($string[$i]); $i++) { - $character = $string[$i]; - if (!ctype_alnum($character) && !in_array($character, array('-', '_'), true)) { - $character = '%' . sprintf('%02X', ord($character)); - } - $encoded .= $character; - } - - return $encoded; - } - - /** - * @param string $type - * - * @return string[] where keys are named references like tags or branches and the value a sha - */ - protected function getReferences($type) - { - $perPage = 100; - $resource = $this->getApiUrl().'/repository/'.$type.'?per_page='.$perPage; - - $references = array(); - do { - $data = JsonFile::parseJson($this->getContents($resource), $resource); - - foreach ($data as $datum) { - $references[$datum['name']] = $datum['commit']['id']; - - // Keep the last commit date of a reference to avoid - // unnecessary API call when retrieving the composer file. - $this->commits[$datum['commit']['id']] = $datum['commit']; - } - - if (count($data) >= $perPage) { - $resource = $this->getNextPage(); - } else { - $resource = false; - } - } while ($resource); - - return $references; - } - - protected function fetchProject() - { - // we need to fetch the default branch from the api - $resource = $this->getApiUrl(); - $this->project = JsonFile::parseJson($this->getContents($resource, true), $resource); - if (isset($this->project['visibility'])) { - $this->isPrivate = $this->project['visibility'] !== 'public'; - } else { - // client is not authendicated, therefore repository has to be public - $this->isPrivate = false; - } - } - - protected function attemptCloneFallback() - { - try { - if ($this->isPrivate === false) { - $url = $this->generatePublicUrl(); - } else { - $url = $this->generateSshUrl(); - } - - // If this repository may be private and we - // cannot ask for authentication credentials (because we - // are not interactive) then we fallback to GitDriver. - $this->setupGitDriver($url); - - return; - } catch (\RuntimeException $e) { - $this->gitDriver = null; - - $this->io->writeError('Failed to clone the '.$url.' repository, try running in interactive mode so that you can enter your credentials'); - throw $e; - } - } - - /** - * Generate an SSH URL - * - * @return string - */ - protected function generateSshUrl() - { - if ($this->hasNonstandardOrigin) { - return 'ssh://git@'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository.'.git'; - } - - return 'git@' . $this->originUrl . ':'.$this->namespace.'/'.$this->repository.'.git'; - } - - protected function generatePublicUrl() - { - return $this->scheme . '://' . $this->originUrl . '/'.$this->namespace.'/'.$this->repository.'.git'; - } - - protected function setupGitDriver($url) - { - $this->gitDriver = new GitDriver( - array('url' => $url), - $this->io, - $this->config, - $this->process, - $this->remoteFilesystem - ); - $this->gitDriver->initialize(); - } - - /** - * {@inheritDoc} - */ - protected function getContents($url, $fetchingRepoData = false) - { - try { - $res = parent::getContents($url); - - if ($fetchingRepoData) { - $json = JsonFile::parseJson($res, $url); - - // force auth as the unauthenticated version of the API is broken - if (!isset($json['default_branch'])) { - if (!empty($json['id'])) { - $this->isPrivate = false; - } - - throw new TransportException('GitLab API seems to not be authenticated as it did not return a default_branch', 401); - } - } - - return $res; - } catch (TransportException $e) { - $gitLabUtil = new GitLab($this->io, $this->config, $this->process, $this->remoteFilesystem); - - switch ($e->getCode()) { - case 401: - case 404: - // try to authorize only if we are fetching the main /repos/foo/bar data, otherwise it must be a real 404 - if (!$fetchingRepoData) { - throw $e; - } - - if ($gitLabUtil->authorizeOAuth($this->originUrl)) { - return parent::getContents($url); - } - - if (!$this->io->isInteractive()) { - return $this->attemptCloneFallback(); - } - $this->io->writeError('Failed to download ' . $this->namespace . '/' . $this->repository . ':' . $e->getMessage() . ''); - $gitLabUtil->authorizeOAuthInteractively($this->scheme, $this->originUrl, 'Your credentials are required to fetch private repository metadata ('.$this->url.')'); - - return parent::getContents($url); - - case 403: - if (!$this->io->hasAuthentication($this->originUrl) && $gitLabUtil->authorizeOAuth($this->originUrl)) { - return parent::getContents($url); - } - - if (!$this->io->isInteractive() && $fetchingRepoData) { - return $this->attemptCloneFallback(); - } - - throw $e; - - default: - throw $e; - } - } - } - - /** - * Uses the config `gitlab-domains` to see if the driver supports the url for the - * repository given. - * - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - if (!preg_match(self::URL_REGEX, $url, $match)) { - return false; - } - - $scheme = !empty($match['scheme']) ? $match['scheme'] : null; - $guessedDomain = !empty($match['domain']) ? $match['domain'] : $match['domain2']; - $urlParts = explode('/', $match['parts']); - - if (false === self::determineOrigin((array) $config->get('gitlab-domains'), $guessedDomain, $urlParts, $match['port'])) { - return false; - } - - if ('https' === $scheme && !extension_loaded('openssl')) { - $io->writeError('Skipping GitLab driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); - - return false; - } - - return true; - } - - private function getNextPage() - { - $headers = $this->remoteFilesystem->getLastHeaders(); - foreach ($headers as $header) { - if (preg_match('{^link:\s*(.+?)\s*$}i', $header, $match)) { - $links = explode(',', $match[1]); - foreach ($links as $link) { - if (preg_match('{<(.+?)>; *rel="next"}', $link, $match)) { - return $match[1]; - } - } - } - } - } - - /** - * @param array $configuredDomains - * @param string $guessedDomain - * @param array $urlParts - * @return bool|string - */ - private static function determineOrigin(array $configuredDomains, $guessedDomain, array &$urlParts, $portNumber) - { - $guessedDomain = strtolower($guessedDomain); - - if (in_array($guessedDomain, $configuredDomains) || ($portNumber && in_array($guessedDomain.':'.$portNumber, $configuredDomains))) { - if ($portNumber) { - return $guessedDomain.':'.$portNumber; - } - return $guessedDomain; - } - - if ($portNumber) { - $guessedDomain .= ':'.$portNumber; - } - - while (null !== ($part = array_shift($urlParts))) { - $guessedDomain .= '/' . $part; - - if (in_array($guessedDomain, $configuredDomains) || ($portNumber && in_array(preg_replace('{:\d+}', '', $guessedDomain), $configuredDomains))) { - return $guessedDomain; - } - } - - return false; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php deleted file mode 100644 index 1cf630d..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Config; -use Composer\IO\IOInterface; - -/** - * @author Per Bernhardt - */ -class HgBitbucketDriver extends BitbucketDriver -{ - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - if ($this->fallbackDriver) { - return $this->fallbackDriver->getRootIdentifier(); - } - - if (null === $this->rootIdentifier) { - if (! $this->getRepoData()) { - return $this->fallbackDriver->getRootIdentifier(); - } - - if ($this->vcsType !== 'hg') { - throw new \RuntimeException( - $this->url.' does not appear to be a mercurial repository, use '. - $this->cloneHttpsUrl.' if this is a git bitbucket repository' - ); - } - - $mainBranchData = $this->getMainBranchData(); - $this->rootIdentifier = !empty($mainBranchData['name']) ? $mainBranchData['name'] : 'default'; - } - - return $this->rootIdentifier; - } - - /** - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - if (!preg_match('#^https?://bitbucket\.org/([^/]+)/([^/]+)/?$#i', $url)) { - return false; - } - - if (!extension_loaded('openssl')) { - $io->writeError('Skipping Bitbucket hg driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); - - return false; - } - - return true; - } - - /** - * {@inheritdoc} - */ - protected function setupFallbackDriver($url) - { - $this->fallbackDriver = new HgDriver( - array('url' => $url), - $this->io, - $this->config, - $this->process, - $this->remoteFilesystem - ); - $this->fallbackDriver->initialize(); - } - - /** - * {@inheritdoc} - */ - protected function generateSshUrl() - { - return 'ssh://hg@' . $this->originUrl . '/' . $this->owner.'/'.$this->repository; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php deleted file mode 100644 index 04a3634..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php +++ /dev/null @@ -1,236 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Config; -use Composer\Cache; -use Composer\Util\Hg as HgUtils; -use Composer\Util\ProcessExecutor; -use Composer\Util\Filesystem; -use Composer\IO\IOInterface; - -/** - * @author Per Bernhardt - */ -class HgDriver extends VcsDriver -{ - protected $tags; - protected $branches; - protected $rootIdentifier; - protected $repoDir; - protected $infoCache = array(); - - /** - * {@inheritDoc} - */ - public function initialize() - { - if (Filesystem::isLocalPath($this->url)) { - $this->repoDir = $this->url; - } else { - if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { - throw new \RuntimeException('HgDriver requires a usable cache directory, and it looks like you set it to be disabled'); - } - - $cacheDir = $this->config->get('cache-vcs-dir'); - $this->repoDir = $cacheDir . '/' . preg_replace('{[^a-z0-9]}i', '-', $this->url) . '/'; - - $fs = new Filesystem(); - $fs->ensureDirectoryExists($cacheDir); - - if (!is_writable(dirname($this->repoDir))) { - throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$cacheDir.'" directory is not writable by the current user.'); - } - - // Ensure we are allowed to use this URL by config - $this->config->prohibitUrlByConfig($this->url, $this->io); - - $hgUtils = new HgUtils($this->io, $this->config, $this->process); - - // update the repo if it is a valid hg repository - if (is_dir($this->repoDir) && 0 === $this->process->execute('hg summary', $output, $this->repoDir)) { - if (0 !== $this->process->execute('hg pull', $output, $this->repoDir)) { - $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); - } - } else { - // clean up directory and do a fresh clone into it - $fs->removeDirectory($this->repoDir); - - $repoDir = $this->repoDir; - $command = function ($url) use ($repoDir) { - return sprintf('hg clone --noupdate %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($repoDir)); - }; - - $hgUtils->runCommand($command, $this->url, null); - } - } - - $this->getTags(); - $this->getBranches(); - } - - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - if (null === $this->rootIdentifier) { - $this->process->execute(sprintf('hg tip --template "{node}"'), $output, $this->repoDir); - $output = $this->process->splitLines($output); - $this->rootIdentifier = $output[0]; - } - - return $this->rootIdentifier; - } - - /** - * {@inheritDoc} - */ - public function getUrl() - { - return $this->url; - } - - /** - * {@inheritDoc} - */ - public function getSource($identifier) - { - return array('type' => 'hg', 'url' => $this->getUrl(), 'reference' => $identifier); - } - - /** - * {@inheritDoc} - */ - public function getDist($identifier) - { - return null; - } - - /** - * {@inheritdoc} - */ - public function getFileContent($file, $identifier) - { - $resource = sprintf('hg cat -r %s %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); - $this->process->execute($resource, $content, $this->repoDir); - - if (!trim($content)) { - return; - } - - return $content; - } - - /** - * {@inheritdoc} - */ - public function getChangeDate($identifier) - { - $this->process->execute( - sprintf( - 'hg log --template "{date|rfc3339date}" -r %s', - ProcessExecutor::escape($identifier) - ), - $output, - $this->repoDir - ); - - return new \DateTime(trim($output), new \DateTimeZone('UTC')); - } - - /** - * {@inheritDoc} - */ - public function getTags() - { - if (null === $this->tags) { - $tags = array(); - - $this->process->execute('hg tags', $output, $this->repoDir); - foreach ($this->process->splitLines($output) as $tag) { - if ($tag && preg_match('(^([^\s]+)\s+\d+:(.*)$)', $tag, $match)) { - $tags[$match[1]] = $match[2]; - } - } - unset($tags['tip']); - - $this->tags = $tags; - } - - return $this->tags; - } - - /** - * {@inheritDoc} - */ - public function getBranches() - { - if (null === $this->branches) { - $branches = array(); - $bookmarks = array(); - - $this->process->execute('hg branches', $output, $this->repoDir); - foreach ($this->process->splitLines($output) as $branch) { - if ($branch && preg_match('(^([^\s]+)\s+\d+:([a-f0-9]+))', $branch, $match)) { - $branches[$match[1]] = $match[2]; - } - } - - $this->process->execute('hg bookmarks', $output, $this->repoDir); - foreach ($this->process->splitLines($output) as $branch) { - if ($branch && preg_match('(^(?:[\s*]*)([^\s]+)\s+\d+:(.*)$)', $branch, $match)) { - $bookmarks[$match[1]] = $match[2]; - } - } - - // Branches will have preference over bookmarks - $this->branches = array_merge($bookmarks, $branches); - } - - return $this->branches; - } - - /** - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - if (preg_match('#(^(?:https?|ssh)://(?:[^@]+@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { - return true; - } - - // local filesystem - if (Filesystem::isLocalPath($url)) { - $url = Filesystem::getPlatformPath($url); - if (!is_dir($url)) { - return false; - } - - $process = new ProcessExecutor($io); - // check whether there is a hg repo in that path - if ($process->execute('hg summary', $output, $url) === 0) { - return true; - } - } - - if (!$deep) { - return false; - } - - $processExecutor = new ProcessExecutor($io); - $exit = $processExecutor->execute(sprintf('hg identify %s', ProcessExecutor::escape($url)), $ignored); - - return $exit === 0; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php deleted file mode 100644 index 09b5d4b..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php +++ /dev/null @@ -1,186 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Config; -use Composer\Cache; -use Composer\IO\IOInterface; -use Composer\Util\ProcessExecutor; -use Composer\Util\Perforce; - -/** - * @author Matt Whittom - */ -class PerforceDriver extends VcsDriver -{ - protected $depot; - protected $branch; - /** @var Perforce */ - protected $perforce; - - /** - * {@inheritDoc} - */ - public function initialize() - { - $this->depot = $this->repoConfig['depot']; - $this->branch = ''; - if (!empty($this->repoConfig['branch'])) { - $this->branch = $this->repoConfig['branch']; - } - - $this->initPerforce($this->repoConfig); - $this->perforce->p4Login(); - $this->perforce->checkStream(); - - $this->perforce->writeP4ClientSpec(); - $this->perforce->connectClient(); - - return true; - } - - private function initPerforce($repoConfig) - { - if (!empty($this->perforce)) { - return; - } - - if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { - throw new \RuntimeException('PerforceDriver requires a usable cache directory, and it looks like you set it to be disabled'); - } - - $repoDir = $this->config->get('cache-vcs-dir') . '/' . $this->depot; - $this->perforce = Perforce::create($repoConfig, $this->getUrl(), $repoDir, $this->process, $this->io); - } - - /** - * {@inheritdoc} - */ - public function getFileContent($file, $identifier) - { - return $this->perforce->getFileContent($file, $identifier); - } - - /** - * {@inheritdoc} - */ - public function getChangeDate($identifier) - { - return null; - } - - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - return $this->branch; - } - - /** - * {@inheritDoc} - */ - public function getBranches() - { - return $this->perforce->getBranches(); - } - - /** - * {@inheritDoc} - */ - public function getTags() - { - return $this->perforce->getTags(); - } - - /** - * {@inheritDoc} - */ - public function getDist($identifier) - { - return null; - } - - /** - * {@inheritDoc} - */ - public function getSource($identifier) - { - $source = array( - 'type' => 'perforce', - 'url' => $this->repoConfig['url'], - 'reference' => $identifier, - 'p4user' => $this->perforce->getUser(), - ); - - return $source; - } - - /** - * {@inheritDoc} - */ - public function getUrl() - { - return $this->url; - } - - /** - * {@inheritDoc} - */ - public function hasComposerFile($identifier) - { - $composerInfo = $this->perforce->getComposerInformation('//' . $this->depot . '/' . $identifier); - $composerInfoIdentifier = $identifier; - - return !empty($composerInfo); - } - - /** - * {@inheritDoc} - */ - public function getContents($url) - { - return false; - } - - /** - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - if ($deep || preg_match('#\b(perforce|p4)\b#i', $url)) { - return Perforce::checkServerExists($url, new ProcessExecutor($io)); - } - - return false; - } - - /** - * {@inheritDoc} - */ - public function cleanup() - { - $this->perforce->cleanupClientSpec(); - $this->perforce = null; - } - - public function getDepot() - { - return $this->depot; - } - - public function getBranch() - { - return $this->branch; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php deleted file mode 100644 index a8f0c4a..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php +++ /dev/null @@ -1,397 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Cache; -use Composer\Config; -use Composer\Json\JsonFile; -use Composer\Util\ProcessExecutor; -use Composer\Util\Filesystem; -use Composer\Util\Svn as SvnUtil; -use Composer\IO\IOInterface; -use Composer\Downloader\TransportException; - -/** - * @author Jordi Boggiano - * @author Till Klampaeckel - */ -class SvnDriver extends VcsDriver -{ - /** - * @var Cache - */ - protected $cache; - protected $baseUrl; - protected $tags; - protected $branches; - protected $rootIdentifier; - protected $infoCache = array(); - - protected $trunkPath = 'trunk'; - protected $branchesPath = 'branches'; - protected $tagsPath = 'tags'; - protected $packagePath = ''; - protected $cacheCredentials = true; - - /** - * @var \Composer\Util\Svn - */ - private $util; - - /** - * {@inheritDoc} - */ - public function initialize() - { - $this->url = $this->baseUrl = rtrim(self::normalizeUrl($this->url), '/'); - - SvnUtil::cleanEnv(); - - if (isset($this->repoConfig['trunk-path'])) { - $this->trunkPath = $this->repoConfig['trunk-path']; - } - if (isset($this->repoConfig['branches-path'])) { - $this->branchesPath = $this->repoConfig['branches-path']; - } - if (isset($this->repoConfig['tags-path'])) { - $this->tagsPath = $this->repoConfig['tags-path']; - } - if (array_key_exists('svn-cache-credentials', $this->repoConfig)) { - $this->cacheCredentials = (bool) $this->repoConfig['svn-cache-credentials']; - } - if (isset($this->repoConfig['package-path'])) { - $this->packagePath = '/' . trim($this->repoConfig['package-path'], '/'); - } - - if (false !== ($pos = strrpos($this->url, '/' . $this->trunkPath))) { - $this->baseUrl = substr($this->url, 0, $pos); - } - - $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $this->baseUrl)); - - $this->getBranches(); - $this->getTags(); - } - - /** - * {@inheritDoc} - */ - public function getRootIdentifier() - { - return $this->rootIdentifier ?: $this->trunkPath; - } - - /** - * {@inheritDoc} - */ - public function getUrl() - { - return $this->url; - } - - /** - * {@inheritDoc} - */ - public function getSource($identifier) - { - return array('type' => 'svn', 'url' => $this->baseUrl, 'reference' => $identifier); - } - - /** - * {@inheritDoc} - */ - public function getDist($identifier) - { - return null; - } - - /** - * {@inheritdoc} - */ - protected function shouldCache($identifier) - { - return $this->cache && preg_match('{@\d+$}', $identifier); - } - - /** - * {@inheritdoc} - */ - public function getComposerInformation($identifier) - { - if (!isset($this->infoCache[$identifier])) { - if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier.'.json')) { - return $this->infoCache[$identifier] = JsonFile::parseJson($res); - } - - try { - $composer = $this->getBaseComposerInformation($identifier); - } catch (TransportException $e) { - $message = $e->getMessage(); - if (stripos($message, 'path not found') === false && stripos($message, 'svn: warning: W160013') === false) { - throw $e; - } - // remember a not-existent composer.json - $composer = ''; - } - - if ($this->shouldCache($identifier)) { - $this->cache->write($identifier.'.json', json_encode($composer)); - } - - $this->infoCache[$identifier] = $composer; - } - - return $this->infoCache[$identifier]; - } - - /** - * @param string $file - * @param string $identifier - */ - public function getFileContent($file, $identifier) - { - $identifier = '/' . trim($identifier, '/') . '/'; - - preg_match('{^(.+?)(@\d+)?/$}', $identifier, $match); - if (!empty($match[2])) { - $path = $match[1]; - $rev = $match[2]; - } else { - $path = $identifier; - $rev = ''; - } - - try { - $resource = $path.$file; - $output = $this->execute('svn cat', $this->baseUrl . $resource . $rev); - if (!trim($output)) { - return null; - } - } catch (\RuntimeException $e) { - throw new TransportException($e->getMessage()); - } - - return $output; - } - - /** - * {@inheritdoc} - */ - public function getChangeDate($identifier) - { - $identifier = '/' . trim($identifier, '/') . '/'; - - preg_match('{^(.+?)(@\d+)?/$}', $identifier, $match); - if (!empty($match[2])) { - $path = $match[1]; - $rev = $match[2]; - } else { - $path = $identifier; - $rev = ''; - } - - $output = $this->execute('svn info', $this->baseUrl . $path . $rev); - foreach ($this->process->splitLines($output) as $line) { - if ($line && preg_match('{^Last Changed Date: ([^(]+)}', $line, $match)) { - return new \DateTime($match[1], new \DateTimeZone('UTC')); - } - } - - return null; - } - - /** - * {@inheritDoc} - */ - public function getTags() - { - if (null === $this->tags) { - $this->tags = array(); - - if ($this->tagsPath !== false) { - $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsPath); - if ($output) { - foreach ($this->process->splitLines($output) as $line) { - $line = trim($line); - if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { - if (isset($match[1]) && isset($match[2]) && $match[2] !== './') { - $this->tags[rtrim($match[2], '/')] = $this->buildIdentifier( - '/' . $this->tagsPath . '/' . $match[2], - $match[1] - ); - } - } - } - } - } - } - - return $this->tags; - } - - /** - * {@inheritDoc} - */ - public function getBranches() - { - if (null === $this->branches) { - $this->branches = array(); - - if (false === $this->trunkPath) { - $trunkParent = $this->baseUrl . '/'; - } else { - $trunkParent = $this->baseUrl . '/' . $this->trunkPath; - } - - $output = $this->execute('svn ls --verbose', $trunkParent); - if ($output) { - foreach ($this->process->splitLines($output) as $line) { - $line = trim($line); - if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { - if (isset($match[1]) && isset($match[2]) && $match[2] === './') { - $this->branches['trunk'] = $this->buildIdentifier( - '/' . $this->trunkPath, - $match[1] - ); - $this->rootIdentifier = $this->branches['trunk']; - break; - } - } - } - } - unset($output); - - if ($this->branchesPath !== false) { - $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesPath); - if ($output) { - foreach ($this->process->splitLines(trim($output)) as $line) { - $line = trim($line); - if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { - if (isset($match[1]) && isset($match[2]) && $match[2] !== './') { - $this->branches[rtrim($match[2], '/')] = $this->buildIdentifier( - '/' . $this->branchesPath . '/' . $match[2], - $match[1] - ); - } - } - } - } - } - } - - return $this->branches; - } - - /** - * {@inheritDoc} - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false) - { - $url = self::normalizeUrl($url); - if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) { - return true; - } - - // proceed with deep check for local urls since they are fast to process - if (!$deep && !Filesystem::isLocalPath($url)) { - return false; - } - - $processExecutor = new ProcessExecutor($io); - - $exit = $processExecutor->execute( - "svn info --non-interactive ".ProcessExecutor::escape($url), - $ignoredOutput - ); - - if ($exit === 0) { - // This is definitely a Subversion repository. - return true; - } - - // Subversion client 1.7 and older - if (false !== stripos($processExecutor->getErrorOutput(), 'authorization failed:')) { - // This is likely a remote Subversion repository that requires - // authentication. We will handle actual authentication later. - return true; - } - - // Subversion client 1.8 and newer - if (false !== stripos($processExecutor->getErrorOutput(), 'Authentication failed')) { - // This is likely a remote Subversion or newer repository that requires - // authentication. We will handle actual authentication later. - return true; - } - - return false; - } - - /** - * An absolute path (leading '/') is converted to a file:// url. - * - * @param string $url - * - * @return string - */ - protected static function normalizeUrl($url) - { - $fs = new Filesystem(); - if ($fs->isAbsolutePath($url)) { - return 'file://' . strtr($url, '\\', '/'); - } - - return $url; - } - - /** - * Execute an SVN command and try to fix up the process with credentials - * if necessary. - * - * @param string $command The svn command to run. - * @param string $url The SVN URL. - * @throws \RuntimeException - * @return string - */ - protected function execute($command, $url) - { - if (null === $this->util) { - $this->util = new SvnUtil($this->baseUrl, $this->io, $this->config, $this->process); - $this->util->setCacheCredentials($this->cacheCredentials); - } - - try { - return $this->util->execute($command, $url); - } catch (\RuntimeException $e) { - if (null === $this->util->binaryVersion()) { - throw new \RuntimeException('Failed to load '.$this->url.', svn was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput()); - } - - throw new \RuntimeException( - 'Repository '.$this->url.' could not be processed, '.$e->getMessage() - ); - } - } - - /** - * Build the identifier respecting "package-path" config option - * - * @param string $baseDir The path to trunk/branch/tag - * @param int $revision The revision mark to add to identifier - * - * @return string - */ - protected function buildIdentifier($baseDir, $revision) - { - return rtrim($baseDir, '/') . $this->packagePath . '/@' . $revision; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php deleted file mode 100644 index 5227630..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php +++ /dev/null @@ -1,175 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Cache; -use Composer\Downloader\TransportException; -use Composer\Config; -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\Json\JsonFile; -use Composer\Util\ProcessExecutor; -use Composer\Util\RemoteFilesystem; -use Composer\Util\Filesystem; - -/** - * A driver implementation for driver with authentication interaction. - * - * @author François Pluchino - */ -abstract class VcsDriver implements VcsDriverInterface -{ - /** @var string */ - protected $url; - /** @var string */ - protected $originUrl; - /** @var array */ - protected $repoConfig; - /** @var IOInterface */ - protected $io; - /** @var Config */ - protected $config; - /** @var ProcessExecutor */ - protected $process; - /** @var RemoteFilesystem */ - protected $remoteFilesystem; - /** @var array */ - protected $infoCache = array(); - /** @var Cache */ - protected $cache; - - /** - * Constructor. - * - * @param array $repoConfig The repository configuration - * @param IOInterface $io The IO instance - * @param Config $config The composer configuration - * @param ProcessExecutor $process Process instance, injectable for mocking - * @param RemoteFilesystem $remoteFilesystem Remote Filesystem, injectable for mocking - */ - final public function __construct(array $repoConfig, IOInterface $io, Config $config, ProcessExecutor $process = null, RemoteFilesystem $remoteFilesystem = null) - { - if (Filesystem::isLocalPath($repoConfig['url'])) { - $repoConfig['url'] = Filesystem::getPlatformPath($repoConfig['url']); - } - - $this->url = $repoConfig['url']; - $this->originUrl = $repoConfig['url']; - $this->repoConfig = $repoConfig; - $this->io = $io; - $this->config = $config; - $this->process = $process ?: new ProcessExecutor($io); - $this->remoteFilesystem = $remoteFilesystem ?: Factory::createRemoteFilesystem($this->io, $config); - } - - /** - * Returns whether or not the given $identifier should be cached or not. - * - * @param string $identifier - * @return bool - */ - protected function shouldCache($identifier) - { - return $this->cache && preg_match('{[a-f0-9]{40}}i', $identifier); - } - - /** - * {@inheritdoc} - */ - public function getComposerInformation($identifier) - { - if (!isset($this->infoCache[$identifier])) { - if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { - return $this->infoCache[$identifier] = JsonFile::parseJson($res); - } - - $composer = $this->getBaseComposerInformation($identifier); - - if ($this->shouldCache($identifier)) { - $this->cache->write($identifier, json_encode($composer)); - } - - $this->infoCache[$identifier] = $composer; - } - - return $this->infoCache[$identifier]; - } - - protected function getBaseComposerInformation($identifier) - { - $composerFileContent = $this->getFileContent('composer.json', $identifier); - - if (!$composerFileContent) { - return null; - } - - $composer = JsonFile::parseJson($composerFileContent, $identifier . ':composer.json'); - - if (empty($composer['time']) && $changeDate = $this->getChangeDate($identifier)) { - $composer['time'] = $changeDate->format(DATE_RFC3339); - } - - return $composer; - } - - /** - * {@inheritDoc} - */ - public function hasComposerFile($identifier) - { - try { - return (bool) $this->getComposerInformation($identifier); - } catch (TransportException $e) { - } - - return false; - } - - /** - * Get the https or http protocol depending on SSL support. - * - * Call this only if you know that the server supports both. - * - * @return string The correct type of protocol - */ - protected function getScheme() - { - if (extension_loaded('openssl')) { - return 'https'; - } - - return 'http'; - } - - /** - * Get the remote content. - * - * @param string $url The URL of content - * - * @return mixed The result - */ - protected function getContents($url) - { - $options = isset($this->repoConfig['options']) ? $this->repoConfig['options'] : array(); - - return $this->remoteFilesystem->getContents($this->originUrl, $url, false, $options); - } - - /** - * {@inheritDoc} - */ - public function cleanup() - { - return; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php b/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php deleted file mode 100644 index 5e3bcec..0000000 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php +++ /dev/null @@ -1,117 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository\Vcs; - -use Composer\Config; -use Composer\IO\IOInterface; - -/** - * @author Jordi Boggiano - */ -interface VcsDriverInterface -{ - /** - * Initializes the driver (git clone, svn checkout, fetch info etc) - */ - public function initialize(); - - /** - * Return the composer.json file information - * - * @param string $identifier Any identifier to a specific branch/tag/commit - * @return array containing all infos from the composer.json file - */ - public function getComposerInformation($identifier); - - /** - * Return the content of $file or null if the file does not exist. - * - * @param string $file - * @param string $identifier - * @return string - */ - public function getFileContent($file, $identifier); - - /** - * Get the changedate for $identifier. - * - * @param string $identifier - * @return \DateTime - */ - public function getChangeDate($identifier); - - /** - * Return the root identifier (trunk, master, default/tip ..) - * - * @return string Identifier - */ - public function getRootIdentifier(); - - /** - * Return list of branches in the repository - * - * @return array Branch names as keys, identifiers as values - */ - public function getBranches(); - - /** - * Return list of tags in the repository - * - * @return array Tag names as keys, identifiers as values - */ - public function getTags(); - - /** - * @param string $identifier Any identifier to a specific branch/tag/commit - * @return array With type, url reference and shasum keys. - */ - public function getDist($identifier); - - /** - * @param string $identifier Any identifier to a specific branch/tag/commit - * @return array With type, url and reference keys. - */ - public function getSource($identifier); - - /** - * Return the URL of the repository - * - * @return string - */ - public function getUrl(); - - /** - * Return true if the repository has a composer file for a given identifier, - * false otherwise. - * - * @param string $identifier Any identifier to a specific branch/tag/commit - * @return bool Whether the repository has a composer file for a given identifier. - */ - public function hasComposerFile($identifier); - - /** - * Performs any cleanup necessary as the driver is not longer needed - */ - public function cleanup(); - - /** - * Checks if this driver can handle a given url - * - * @param IOInterface $io IO instance - * @param Config $config current $config - * @param string $url URL to validate/check - * @param bool $deep unless true, only shallow checks (url matching typically) should be done - * @return bool - */ - public static function supports(IOInterface $io, Config $config, $url, $deep = false); -} diff --git a/vendor/composer/composer/src/Composer/Repository/VcsRepository.php b/vendor/composer/composer/src/Composer/Repository/VcsRepository.php deleted file mode 100644 index 8d8bcbd..0000000 --- a/vendor/composer/composer/src/Composer/Repository/VcsRepository.php +++ /dev/null @@ -1,410 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Downloader\TransportException; -use Composer\Repository\Vcs\VcsDriverInterface; -use Composer\Package\Version\VersionParser; -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\Loader\ValidatingArrayLoader; -use Composer\Package\Loader\InvalidPackageException; -use Composer\Package\Loader\LoaderInterface; -use Composer\EventDispatcher\EventDispatcher; -use Composer\IO\IOInterface; -use Composer\Config; - -/** - * @author Jordi Boggiano - */ -class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInterface -{ - protected $url; - protected $packageName; - protected $isVerbose; - protected $isVeryVerbose; - protected $io; - protected $config; - protected $versionParser; - protected $type; - protected $loader; - protected $repoConfig; - protected $branchErrorOccurred = false; - private $drivers; - /** @var VcsDriverInterface */ - private $driver; - /** @var VersionCacheInterface */ - private $versionCache; - private $emptyReferences = array(); - - public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $dispatcher = null, array $drivers = null, VersionCacheInterface $versionCache = null) - { - parent::__construct(); - $this->drivers = $drivers ?: array( - 'github' => 'Composer\Repository\Vcs\GitHubDriver', - 'gitlab' => 'Composer\Repository\Vcs\GitLabDriver', - 'git-bitbucket' => 'Composer\Repository\Vcs\GitBitbucketDriver', - 'git' => 'Composer\Repository\Vcs\GitDriver', - 'hg-bitbucket' => 'Composer\Repository\Vcs\HgBitbucketDriver', - 'hg' => 'Composer\Repository\Vcs\HgDriver', - 'perforce' => 'Composer\Repository\Vcs\PerforceDriver', - 'fossil' => 'Composer\Repository\Vcs\FossilDriver', - // svn must be last because identifying a subversion server for sure is practically impossible - 'svn' => 'Composer\Repository\Vcs\SvnDriver', - ); - - $this->url = $repoConfig['url']; - $this->io = $io; - $this->type = isset($repoConfig['type']) ? $repoConfig['type'] : 'vcs'; - $this->isVerbose = $io->isVerbose(); - $this->isVeryVerbose = $io->isVeryVerbose(); - $this->config = $config; - $this->repoConfig = $repoConfig; - $this->versionCache = $versionCache; - } - - public function getRepoConfig() - { - return $this->repoConfig; - } - - public function setLoader(LoaderInterface $loader) - { - $this->loader = $loader; - } - - public function getDriver() - { - if ($this->driver) { - return $this->driver; - } - - if (isset($this->drivers[$this->type])) { - $class = $this->drivers[$this->type]; - $this->driver = new $class($this->repoConfig, $this->io, $this->config); - $this->driver->initialize(); - - return $this->driver; - } - - foreach ($this->drivers as $driver) { - if ($driver::supports($this->io, $this->config, $this->url)) { - $this->driver = new $driver($this->repoConfig, $this->io, $this->config); - $this->driver->initialize(); - - return $this->driver; - } - } - - foreach ($this->drivers as $driver) { - if ($driver::supports($this->io, $this->config, $this->url, true)) { - $this->driver = new $driver($this->repoConfig, $this->io, $this->config); - $this->driver->initialize(); - - return $this->driver; - } - } - } - - public function hadInvalidBranches() - { - return $this->branchErrorOccurred; - } - - public function getEmptyReferences() - { - return $this->emptyReferences; - } - - protected function initialize() - { - parent::initialize(); - - $isVerbose = $this->isVerbose; - $isVeryVerbose = $this->isVeryVerbose; - - $driver = $this->getDriver(); - if (!$driver) { - throw new \InvalidArgumentException('No driver found to handle VCS repository '.$this->url); - } - - $this->versionParser = new VersionParser; - if (!$this->loader) { - $this->loader = new ArrayLoader($this->versionParser); - } - - try { - if ($driver->hasComposerFile($driver->getRootIdentifier())) { - $data = $driver->getComposerInformation($driver->getRootIdentifier()); - $this->packageName = !empty($data['name']) ? $data['name'] : null; - } - } catch (\Exception $e) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped parsing '.$driver->getRootIdentifier().', '.$e->getMessage().''); - } - } - - foreach ($driver->getTags() as $tag => $identifier) { - $msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $tag . ')'; - if ($isVeryVerbose) { - $this->io->writeError($msg); - } elseif ($isVerbose) { - $this->io->overwriteError($msg, false); - } - - // strip the release- prefix from tags if present - $tag = str_replace('release-', '', $tag); - - $cachedPackage = $this->getCachedPackageVersion($tag, $identifier, $isVerbose, $isVeryVerbose); - if ($cachedPackage) { - $this->addPackage($cachedPackage); - - continue; - } elseif ($cachedPackage === false) { - $this->emptyReferences[] = $identifier; - - continue; - } - - if (!$parsedTag = $this->validateTag($tag)) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped tag '.$tag.', invalid tag name'); - } - continue; - } - - try { - if (!$data = $driver->getComposerInformation($identifier)) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped tag '.$tag.', no composer file'); - } - $this->emptyReferences[] = $identifier; - continue; - } - - // manually versioned package - if (isset($data['version'])) { - $data['version_normalized'] = $this->versionParser->normalize($data['version']); - } else { - // auto-versioned package, read value from tag - $data['version'] = $tag; - $data['version_normalized'] = $parsedTag; - } - - // make sure tag packages have no -dev flag - $data['version'] = preg_replace('{[.-]?dev$}i', '', $data['version']); - $data['version_normalized'] = preg_replace('{(^dev-|[.-]?dev$)}i', '', $data['version_normalized']); - - // broken package, version doesn't match tag - if ($data['version_normalized'] !== $parsedTag) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped tag '.$tag.', tag ('.$parsedTag.') does not match version ('.$data['version_normalized'].') in composer.json'); - } - continue; - } - - $tagPackageName = isset($data['name']) ? $data['name'] : $this->packageName; - if ($existingPackage = $this->findPackage($tagPackageName, $data['version_normalized'])) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped tag '.$tag.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$data['version_normalized'].' internally'); - } - continue; - } - - if ($isVeryVerbose) { - $this->io->writeError('Importing tag '.$tag.' ('.$data['version_normalized'].')'); - } - - $this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier))); - } catch (\Exception $e) { - if ($e instanceof TransportException && $e->getCode() === 404) { - $this->emptyReferences[] = $identifier; - } - if ($isVeryVerbose) { - $this->io->writeError('Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found' : $e->getMessage()).''); - } - continue; - } - } - - if (!$isVeryVerbose) { - $this->io->overwriteError('', false); - } - - $branches = $driver->getBranches(); - foreach ($branches as $branch => $identifier) { - $msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $branch . ')'; - if ($isVeryVerbose) { - $this->io->writeError($msg); - } elseif ($isVerbose) { - $this->io->overwriteError($msg, false); - } - - if ($branch === 'trunk' && isset($branches['master'])) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped branch '.$branch.', can not parse both master and trunk branches as they both resolve to 9999999-dev internally'); - } - continue; - } - - if (!$parsedBranch = $this->validateBranch($branch)) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped branch '.$branch.', invalid name'); - } - continue; - } - - // make sure branch packages have a dev flag - if ('dev-' === substr($parsedBranch, 0, 4) || '9999999-dev' === $parsedBranch) { - $version = 'dev-' . $branch; - } else { - $prefix = substr($branch, 0, 1) === 'v' ? 'v' : ''; - $version = $prefix . preg_replace('{(\.9{7})+}', '.x', $parsedBranch); - } - - $cachedPackage = $this->getCachedPackageVersion($version, $identifier, $isVerbose, $isVeryVerbose); - if ($cachedPackage) { - $this->addPackage($cachedPackage); - - continue; - } elseif ($cachedPackage === false) { - $this->emptyReferences[] = $identifier; - - continue; - } - - try { - if (!$data = $driver->getComposerInformation($identifier)) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped branch '.$branch.', no composer file'); - } - $this->emptyReferences[] = $identifier; - continue; - } - - // branches are always auto-versioned, read value from branch name - $data['version'] = $version; - $data['version_normalized'] = $parsedBranch; - - if ($isVeryVerbose) { - $this->io->writeError('Importing branch '.$branch.' ('.$data['version'].')'); - } - - $packageData = $this->preProcess($driver, $data, $identifier); - $package = $this->loader->load($packageData); - if ($this->loader instanceof ValidatingArrayLoader && $this->loader->getWarnings()) { - throw new InvalidPackageException($this->loader->getErrors(), $this->loader->getWarnings(), $packageData); - } - $this->addPackage($package); - } catch (TransportException $e) { - if ($e->getCode() === 404) { - $this->emptyReferences[] = $identifier; - } - if ($isVeryVerbose) { - $this->io->writeError('Skipped branch '.$branch.', no composer file was found'); - } - continue; - } catch (\Exception $e) { - if (!$isVeryVerbose) { - $this->io->writeError(''); - } - $this->branchErrorOccurred = true; - $this->io->writeError('Skipped branch '.$branch.', '.$e->getMessage().''); - $this->io->writeError(''); - continue; - } - } - $driver->cleanup(); - - if (!$isVeryVerbose) { - $this->io->overwriteError('', false); - } - - if (!$this->getPackages()) { - throw new InvalidRepositoryException('No valid composer.json was found in any branch or tag of '.$this->url.', could not load a package from it.'); - } - } - - protected function preProcess(VcsDriverInterface $driver, array $data, $identifier) - { - // keep the name of the main identifier for all packages - $dataPackageName = isset($data['name']) ? $data['name'] : null; - $data['name'] = $this->packageName ?: $dataPackageName; - - if (!isset($data['dist'])) { - $data['dist'] = $driver->getDist($identifier); - } - if (!isset($data['source'])) { - $data['source'] = $driver->getSource($identifier); - } - - return $data; - } - - private function validateBranch($branch) - { - try { - return $this->versionParser->normalizeBranch($branch); - } catch (\Exception $e) { - } - - return false; - } - - private function validateTag($version) - { - try { - return $this->versionParser->normalize($version); - } catch (\Exception $e) { - } - - return false; - } - - private function getCachedPackageVersion($version, $identifier, $isVerbose, $isVeryVerbose) - { - if (!$this->versionCache) { - return; - } - - $cachedPackage = $this->versionCache->getVersionPackage($version, $identifier); - if ($cachedPackage === false) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped '.$version.', no composer file (cached from ref '.$identifier.')'); - } - - return false; - } - - if ($cachedPackage) { - $msg = 'Found cached composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $version . ')'; - if ($isVeryVerbose) { - $this->io->writeError($msg); - } elseif ($isVerbose) { - $this->io->overwriteError($msg, false); - } - - if ($existingPackage = $this->findPackage($cachedPackage['name'], $cachedPackage['version_normalized'])) { - if ($isVeryVerbose) { - $this->io->writeError('Skipped cached version '.$version.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$cachedPackage['version_normalized'].' internally'); - } - $cachedPackage = null; - } - } - - if ($cachedPackage) { - return $this->loader->load($cachedPackage); - } - - return null; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php b/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php deleted file mode 100644 index 41d485c..0000000 --- a/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -interface VersionCacheInterface -{ - /** - * @param string $version - * @param string $identifier - * @return array|null|false Package version data if found, false to indicate the identifier is known but has no package, null for an unknown identifier - */ - public function getVersionPackage($version, $identifier); -} diff --git a/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php b/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php deleted file mode 100644 index 041e405..0000000 --- a/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\AliasPackage; - -/** - * Writable array repository. - * - * @author Jordi Boggiano - */ -class WritableArrayRepository extends ArrayRepository implements WritableRepositoryInterface -{ - /** - * {@inheritDoc} - */ - public function write() - { - } - - /** - * {@inheritDoc} - */ - public function reload() - { - } - - /** - * {@inheritDoc} - */ - public function getCanonicalPackages() - { - $packages = $this->getPackages(); - - // get at most one package of each name, preferring non-aliased ones - $packagesByName = array(); - foreach ($packages as $package) { - if (!isset($packagesByName[$package->getName()]) || $packagesByName[$package->getName()] instanceof AliasPackage) { - $packagesByName[$package->getName()] = $package; - } - } - - $canonicalPackages = array(); - - // unfold aliased packages - foreach ($packagesByName as $package) { - while ($package instanceof AliasPackage) { - $package = $package->getAliasOf(); - } - - $canonicalPackages[] = $package; - } - - return $canonicalPackages; - } -} diff --git a/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php b/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php deleted file mode 100644 index 4500005..0000000 --- a/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php +++ /dev/null @@ -1,54 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Repository; - -use Composer\Package\PackageInterface; - -/** - * Writable repository interface. - * - * @author Konstantin Kudryashov - */ -interface WritableRepositoryInterface extends RepositoryInterface -{ - /** - * Writes repository (f.e. to the disc). - */ - public function write(); - - /** - * Adds package to the repository. - * - * @param PackageInterface $package package instance - */ - public function addPackage(PackageInterface $package); - - /** - * Removes package from the repository. - * - * @param PackageInterface $package package instance - */ - public function removePackage(PackageInterface $package); - - /** - * Get unique packages (at most one package of each name), with aliases resolved and removed. - * - * @return PackageInterface[] - */ - public function getCanonicalPackages(); - - /** - * Forces a reload of all packages. - */ - public function reload(); -} diff --git a/vendor/composer/composer/src/Composer/Script/CommandEvent.php b/vendor/composer/composer/src/Composer/Script/CommandEvent.php deleted file mode 100644 index 84c5200..0000000 --- a/vendor/composer/composer/src/Composer/Script/CommandEvent.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Script; - -/** - * The Command Event. - * - * @deprecated use Composer\Script\Event instead - */ -class CommandEvent extends Event -{ -} diff --git a/vendor/composer/composer/src/Composer/Script/Event.php b/vendor/composer/composer/src/Composer/Script/Event.php deleted file mode 100644 index 5fab172..0000000 --- a/vendor/composer/composer/src/Composer/Script/Event.php +++ /dev/null @@ -1,133 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Script; - -use Composer\Composer; -use Composer\IO\IOInterface; -use Composer\EventDispatcher\Event as BaseEvent; - -/** - * The script event class - * - * @author François Pluchino - * @author Nils Adermann - */ -class Event extends BaseEvent -{ - /** - * @var Composer The composer instance - */ - private $composer; - - /** - * @var IOInterface The IO instance - */ - private $io; - - /** - * @var bool Dev mode flag - */ - private $devMode; - - /** - * @var BaseEvent - */ - private $originatingEvent; - - /** - * Constructor. - * - * @param string $name The event name - * @param Composer $composer The composer object - * @param IOInterface $io The IOInterface object - * @param bool $devMode Whether or not we are in dev mode - * @param array $args Arguments passed by the user - * @param array $flags Optional flags to pass data not as argument - */ - public function __construct($name, Composer $composer, IOInterface $io, $devMode = false, array $args = array(), array $flags = array()) - { - parent::__construct($name, $args, $flags); - $this->composer = $composer; - $this->io = $io; - $this->devMode = $devMode; - $this->originatingEvent = null; - } - - /** - * Returns the composer instance. - * - * @return Composer - */ - public function getComposer() - { - return $this->composer; - } - - /** - * Returns the IO instance. - * - * @return IOInterface - */ - public function getIO() - { - return $this->io; - } - - /** - * Return the dev mode flag - * - * @return bool - */ - public function isDevMode() - { - return $this->devMode; - } - - /** - * Set the originating event. - * - * @return \Composer\EventDispatcher\Event|null - */ - public function getOriginatingEvent() - { - return $this->originatingEvent; - } - - /** - * Set the originating event. - * - * @param \Composer\EventDispatcher\Event $event - * @return $this - */ - public function setOriginatingEvent(BaseEvent $event) - { - $this->originatingEvent = $this->calculateOriginatingEvent($event); - - return $this; - } - - /** - * Returns the upper-most event in chain. - * - * @param \Composer\EventDispatcher\Event $event - * @return \Composer\EventDispatcher\Event - */ - private function calculateOriginatingEvent(BaseEvent $event) - { - if ($event instanceof Event && $event->getOriginatingEvent()) { - return $this->calculateOriginatingEvent($event->getOriginatingEvent()); - } - - return $event; - } -} diff --git a/vendor/composer/composer/src/Composer/Script/PackageEvent.php b/vendor/composer/composer/src/Composer/Script/PackageEvent.php deleted file mode 100644 index 531b86a..0000000 --- a/vendor/composer/composer/src/Composer/Script/PackageEvent.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Script; - -use Composer\Installer\PackageEvent as BasePackageEvent; - -/** - * The Package Event. - * - * @deprecated Use Composer\Installer\PackageEvent instead - */ -class PackageEvent extends BasePackageEvent -{ -} diff --git a/vendor/composer/composer/src/Composer/Script/ScriptEvents.php b/vendor/composer/composer/src/Composer/Script/ScriptEvents.php deleted file mode 100644 index 491c6bc..0000000 --- a/vendor/composer/composer/src/Composer/Script/ScriptEvents.php +++ /dev/null @@ -1,193 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Script; - -/** - * The Script Events. - * - * @author François Pluchino - * @author Jordi Boggiano - */ -class ScriptEvents -{ - /** - * The PRE_INSTALL_CMD event occurs before the install command is executed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const PRE_INSTALL_CMD = 'pre-install-cmd'; - - /** - * The POST_INSTALL_CMD event occurs after the install command is executed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const POST_INSTALL_CMD = 'post-install-cmd'; - - /** - * The PRE_UPDATE_CMD event occurs before the update command is executed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const PRE_UPDATE_CMD = 'pre-update-cmd'; - - /** - * The POST_UPDATE_CMD event occurs after the update command is executed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const POST_UPDATE_CMD = 'post-update-cmd'; - - /** - * The PRE_STATUS_CMD event occurs before the status command is executed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const PRE_STATUS_CMD = 'pre-status-cmd'; - - /** - * The POST_STATUS_CMD event occurs after the status command is executed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const POST_STATUS_CMD = 'post-status-cmd'; - - /** - * The PRE_AUTOLOAD_DUMP event occurs before the autoload file is generated. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const PRE_AUTOLOAD_DUMP = 'pre-autoload-dump'; - - /** - * The POST_AUTOLOAD_DUMP event occurs after the autoload file has been generated. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const POST_AUTOLOAD_DUMP = 'post-autoload-dump'; - - /** - * The POST_ROOT_PACKAGE_INSTALL event occurs after the root package has been installed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const POST_ROOT_PACKAGE_INSTALL = 'post-root-package-install'; - - /** - * The POST_CREATE_PROJECT event occurs after the create-project command has been executed. - * Note: Event occurs after POST_INSTALL_CMD - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const POST_CREATE_PROJECT_CMD = 'post-create-project-cmd'; - - /** - * The PRE_ARCHIVE_CMD event occurs before the update command is executed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const PRE_ARCHIVE_CMD = 'pre-archive-cmd'; - - /** - * The POST_ARCHIVE_CMD event occurs after the status command is executed. - * - * The event listener method receives a Composer\Script\Event instance. - * - * @var string - */ - const POST_ARCHIVE_CMD = 'post-archive-cmd'; - - /** Deprecated constants below */ - - /** - * The PRE_PACKAGE_INSTALL event occurs before a package is installed. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @deprecated Use Composer\Installer\PackageEvents::PRE_PACKAGE_INSTALL instead. - * @var string - */ - const PRE_PACKAGE_INSTALL = 'pre-package-install'; - - /** - * The POST_PACKAGE_INSTALL event occurs after a package is installed. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @deprecated Use Composer\Installer\PackageEvents::POST_PACKAGE_INSTALL instead. - * @var string - */ - const POST_PACKAGE_INSTALL = 'post-package-install'; - - /** - * The PRE_PACKAGE_UPDATE event occurs before a package is updated. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @deprecated Use Composer\Installer\PackageEvents::PRE_PACKAGE_UPDATE instead. - * @var string - */ - const PRE_PACKAGE_UPDATE = 'pre-package-update'; - - /** - * The POST_PACKAGE_UPDATE event occurs after a package is updated. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @deprecated Use Composer\Installer\PackageEvents::POST_PACKAGE_UPDATE instead. - * @var string - */ - const POST_PACKAGE_UPDATE = 'post-package-update'; - - /** - * The PRE_PACKAGE_UNINSTALL event occurs before a package has been uninstalled. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @deprecated Use Composer\Installer\PackageEvents::PRE_PACKAGE_UNINSTALL instead. - * @var string - */ - const PRE_PACKAGE_UNINSTALL = 'pre-package-uninstall'; - - /** - * The POST_PACKAGE_UNINSTALL event occurs after a package has been uninstalled. - * - * The event listener method receives a Composer\Installer\PackageEvent instance. - * - * @deprecated Use Composer\Installer\PackageEvents::POST_PACKAGE_UNINSTALL instead. - * @var string - */ - const POST_PACKAGE_UNINSTALL = 'post-package-uninstall'; -} diff --git a/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php b/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php deleted file mode 100644 index a8f02e3..0000000 --- a/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\SelfUpdate; - -/** - * @author Jordi Boggiano - */ -class Keys -{ - public static function fingerprint($path) - { - $hash = strtoupper(hash('sha256', preg_replace('{\s}', '', file_get_contents($path)))); - - return implode(' ', array( - substr($hash, 0, 8), - substr($hash, 8, 8), - substr($hash, 16, 8), - substr($hash, 24, 8), - '', // Extra space - substr($hash, 32, 8), - substr($hash, 40, 8), - substr($hash, 48, 8), - substr($hash, 56, 8), - )); - } -} diff --git a/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php b/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php deleted file mode 100644 index b619bda..0000000 --- a/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php +++ /dev/null @@ -1,75 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\SelfUpdate; - -use Composer\Util\RemoteFilesystem; -use Composer\Config; -use Composer\Json\JsonFile; - -/** - * @author Jordi Boggiano - */ -class Versions -{ - private $rfs; - private $config; - private $channel; - - public function __construct(Config $config, RemoteFilesystem $rfs) - { - $this->rfs = $rfs; - $this->config = $config; - } - - public function getChannel() - { - if ($this->channel) { - return $this->channel; - } - - $channelFile = $this->config->get('home').'/update-channel'; - if (file_exists($channelFile)) { - $channel = trim(file_get_contents($channelFile)); - if (in_array($channel, array('stable', 'preview', 'snapshot'), true)) { - return $this->channel = $channel; - } - } - - return $this->channel = 'stable'; - } - - public function setChannel($channel) - { - if (!in_array($channel, array('stable', 'preview', 'snapshot'), true)) { - throw new \InvalidArgumentException('Invalid channel '.$channel.', must be one of: stable, preview, snapshot'); - } - - $channelFile = $this->config->get('home').'/update-channel'; - $this->channel = $channel; - file_put_contents($channelFile, $channel.PHP_EOL); - } - - public function getLatest() - { - $protocol = extension_loaded('openssl') ? 'https' : 'http'; - $versions = JsonFile::parseJson($this->rfs->getContents('getcomposer.org', $protocol . '://getcomposer.org/versions', false)); - - foreach ($versions[$this->getChannel()] as $version) { - if ($version['min-php'] <= PHP_VERSION_ID) { - return $version; - } - } - - throw new \LogicException('There is no version of Composer available for your PHP version ('.PHP_VERSION.')'); - } -} diff --git a/vendor/composer/composer/src/Composer/Util/AuthHelper.php b/vendor/composer/composer/src/Composer/Util/AuthHelper.php deleted file mode 100644 index 72b23ba..0000000 --- a/vendor/composer/composer/src/Composer/Util/AuthHelper.php +++ /dev/null @@ -1,63 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Config; -use Composer\IO\IOInterface; - -/** - * @author Jordi Boggiano - */ -class AuthHelper -{ - protected $io; - protected $config; - - public function __construct(IOInterface $io, Config $config) - { - $this->io = $io; - $this->config = $config; - } - - public function storeAuth($originUrl, $storeAuth) - { - $store = false; - $configSource = $this->config->getAuthConfigSource(); - if ($storeAuth === true) { - $store = $configSource; - } elseif ($storeAuth === 'prompt') { - $answer = $this->io->askAndValidate( - 'Do you want to store credentials for '.$originUrl.' in '.$configSource->getName().' ? [Yn] ', - function ($value) { - $input = strtolower(substr(trim($value), 0, 1)); - if (in_array($input, array('y','n'))) { - return $input; - } - throw new \RuntimeException('Please answer (y)es or (n)o'); - }, - null, - 'y' - ); - - if ($answer === 'y') { - $store = $configSource; - } - } - if ($store) { - $store->addConfigSetting( - 'http-basic.'.$originUrl, - $this->io->getAuthentication($originUrl) - ); - } - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Bitbucket.php b/vendor/composer/composer/src/Composer/Util/Bitbucket.php deleted file mode 100644 index 1fc286a..0000000 --- a/vendor/composer/composer/src/Composer/Util/Bitbucket.php +++ /dev/null @@ -1,245 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\Config; -use Composer\Downloader\TransportException; - -/** - * @author Paul Wenke - */ -class Bitbucket -{ - private $io; - private $config; - private $process; - private $remoteFilesystem; - private $token = array(); - private $time; - - const OAUTH2_ACCESS_TOKEN_URL = 'https://bitbucket.org/site/oauth2/access_token'; - - /** - * Constructor. - * - * @param IOInterface $io The IO instance - * @param Config $config The composer configuration - * @param ProcessExecutor $process Process instance, injectable for mocking - * @param RemoteFilesystem $remoteFilesystem Remote Filesystem, injectable for mocking - * @param int $time Timestamp, injectable for mocking - */ - public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, RemoteFilesystem $remoteFilesystem = null, $time = null) - { - $this->io = $io; - $this->config = $config; - $this->process = $process ?: new ProcessExecutor($io); - $this->remoteFilesystem = $remoteFilesystem ?: Factory::createRemoteFilesystem($this->io, $config); - $this->time = $time; - } - - /** - * @return string - */ - public function getToken() - { - if (!isset($this->token['access_token'])) { - return ''; - } - - return $this->token['access_token']; - } - - /** - * Attempts to authorize a Bitbucket domain via OAuth - * - * @param string $originUrl The host this Bitbucket instance is located at - * @return bool true on success - */ - public function authorizeOAuth($originUrl) - { - if ($originUrl !== 'bitbucket.org') { - return false; - } - - // if available use token from git config - if (0 === $this->process->execute('git config bitbucket.accesstoken', $output)) { - $this->io->setAuthentication($originUrl, 'x-token-auth', trim($output)); - - return true; - } - - return false; - } - - /** - * @param string $originUrl - * @return bool - */ - private function requestAccessToken($originUrl) - { - try { - $json = $this->remoteFilesystem->getContents($originUrl, self::OAUTH2_ACCESS_TOKEN_URL, false, array( - 'retry-auth-failure' => false, - 'http' => array( - 'method' => 'POST', - 'content' => 'grant_type=client_credentials', - ), - )); - - $this->token = json_decode($json, true); - } catch (TransportException $e) { - if ($e->getCode() === 400) { - $this->io->writeError('Invalid OAuth consumer provided.'); - $this->io->writeError('This can have two reasons:'); - $this->io->writeError('1. You are authenticating with a bitbucket username/password combination'); - $this->io->writeError('2. You are using an OAuth consumer, but didn\'t configure a (dummy) callback url'); - - return false; - } elseif (in_array($e->getCode(), array(403, 401))) { - $this->io->writeError('Invalid OAuth consumer provided.'); - $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); - - return false; - } - - throw $e; - } - - return true; - } - - /** - * Authorizes a Bitbucket domain interactively via OAuth - * - * @param string $originUrl The host this Bitbucket instance is located at - * @param string $message The reason this authorization is required - * @throws \RuntimeException - * @throws TransportException|\Exception - * @return bool true on success - */ - public function authorizeOAuthInteractively($originUrl, $message = null) - { - if ($message) { - $this->io->writeError($message); - } - - $url = 'https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html'; - $this->io->writeError(sprintf('Follow the instructions on %s', $url)); - $this->io->writeError(sprintf('to create a consumer. It will be stored in "%s" for future use by Composer.', $this->config->getAuthConfigSource()->getName())); - $this->io->writeError('Ensure you enter a "Callback URL" (http://example.com is fine) or it will not be possible to create an Access Token (this callback url will not be used by composer)'); - - $consumerKey = trim($this->io->askAndHideAnswer('Consumer Key (hidden): ')); - - if (!$consumerKey) { - $this->io->writeError('No consumer key given, aborting.'); - $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); - - return false; - } - - $consumerSecret = trim($this->io->askAndHideAnswer('Consumer Secret (hidden): ')); - - if (!$consumerSecret) { - $this->io->writeError('No consumer secret given, aborting.'); - $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); - - return false; - } - - $this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); - - if (!$this->requestAccessToken($originUrl)) { - return false; - } - - // store value in user config - $this->storeInAuthConfig($originUrl, $consumerKey, $consumerSecret); - - // Remove conflicting basic auth credentials (if available) - $this->config->getAuthConfigSource()->removeConfigSetting('http-basic.' . $originUrl); - - $this->io->writeError('Consumer stored successfully.'); - - return true; - } - - /** - * Retrieves an access token from Bitbucket. - * - * @param string $originUrl - * @param string $consumerKey - * @param string $consumerSecret - * @return string - */ - public function requestToken($originUrl, $consumerKey, $consumerSecret) - { - if (!empty($this->token) || $this->getTokenFromConfig($originUrl)) { - return $this->token['access_token']; - } - - $this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); - if (!$this->requestAccessToken($originUrl)) { - return ''; - } - - $this->storeInAuthConfig($originUrl, $consumerKey, $consumerSecret); - - return $this->token['access_token']; - } - - /** - * Store the new/updated credentials to the configuration - * @param string $originUrl - * @param string $consumerKey - * @param string $consumerSecret - */ - private function storeInAuthConfig($originUrl, $consumerKey, $consumerSecret) - { - $this->config->getConfigSource()->removeConfigSetting('bitbucket-oauth.'.$originUrl); - - $time = null === $this->time ? time() : $this->time; - $consumer = array( - "consumer-key" => $consumerKey, - "consumer-secret" => $consumerSecret, - "access-token" => $this->token['access_token'], - "access-token-expiration" => $time + $this->token['expires_in'], - ); - - $this->config->getAuthConfigSource()->addConfigSetting('bitbucket-oauth.'.$originUrl, $consumer); - } - - /** - * @param string $originUrl - * @return bool - */ - private function getTokenFromConfig($originUrl) - { - $authConfig = $this->config->get('bitbucket-oauth'); - - if ( - !isset($authConfig[$originUrl]['access-token']) - || !isset($authConfig[$originUrl]['access-token-expiration']) - || time() > $authConfig[$originUrl]['access-token-expiration'] - ) { - return false; - } - - $this->token = array( - 'access_token' => $authConfig[$originUrl]['access-token'], - ); - - return true; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/ComposerMirror.php b/vendor/composer/composer/src/Composer/Util/ComposerMirror.php deleted file mode 100644 index 036444d..0000000 --- a/vendor/composer/composer/src/Composer/Util/ComposerMirror.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -/** - * Composer mirror utilities - * - * @author Jordi Boggiano - */ -class ComposerMirror -{ - public static function processUrl($mirrorUrl, $packageName, $version, $reference, $type) - { - if ($reference) { - $reference = preg_match('{^([a-f0-9]*|%reference%)$}', $reference) ? $reference : md5($reference); - } - $version = strpos($version, '/') === false ? $version : md5($version); - - return str_replace( - array('%package%', '%version%', '%reference%', '%type%'), - array($packageName, $version, $reference, $type), - $mirrorUrl - ); - } - - public static function processGitUrl($mirrorUrl, $packageName, $url, $type) - { - if (preg_match('#^(?:(?:https?|git)://github\.com/|git@github\.com:)([^/]+)/(.+?)(?:\.git)?$#', $url, $match)) { - $url = 'gh-'.$match[1].'/'.$match[2]; - } elseif (preg_match('#^https://bitbucket\.org/([^/]+)/(.+?)(?:\.git)?/?$#', $url, $match)) { - $url = 'bb-'.$match[1].'/'.$match[2]; - } else { - $url = preg_replace('{[^a-z0-9_.-]}i', '-', trim($url, '/')); - } - - return str_replace( - array('%package%', '%normalizedUrl%', '%type%'), - array($packageName, $url, $type), - $mirrorUrl - ); - } - - public static function processHgUrl($mirrorUrl, $packageName, $url, $type) - { - return self::processGitUrl($mirrorUrl, $packageName, $url, $type); - } -} diff --git a/vendor/composer/composer/src/Composer/Util/ConfigValidator.php b/vendor/composer/composer/src/Composer/Util/ConfigValidator.php deleted file mode 100644 index e1200fe..0000000 --- a/vendor/composer/composer/src/Composer/Util/ConfigValidator.php +++ /dev/null @@ -1,191 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Package\Loader\ArrayLoader; -use Composer\Package\Loader\ValidatingArrayLoader; -use Composer\Package\Loader\InvalidPackageException; -use Composer\Json\JsonValidationException; -use Composer\IO\IOInterface; -use Composer\Json\JsonFile; -use Composer\Spdx\SpdxLicenses; - -/** - * Validates a composer configuration. - * - * @author Robert Schönthal - * @author Jordi Boggiano - */ -class ConfigValidator -{ - private $io; - - public function __construct(IOInterface $io) - { - $this->io = $io; - } - - /** - * Validates the config, and returns the result. - * - * @param string $file The path to the file - * @param int $arrayLoaderValidationFlags Flags for ArrayLoader validation - * - * @return array a triple containing the errors, publishable errors, and warnings - */ - public function validate($file, $arrayLoaderValidationFlags = ValidatingArrayLoader::CHECK_ALL) - { - $errors = array(); - $publishErrors = array(); - $warnings = array(); - - // validate json schema - $laxValid = false; - try { - $json = new JsonFile($file, null, $this->io); - $manifest = $json->read(); - - $json->validateSchema(JsonFile::LAX_SCHEMA); - $laxValid = true; - $json->validateSchema(); - } catch (JsonValidationException $e) { - foreach ($e->getErrors() as $message) { - if ($laxValid) { - $publishErrors[] = $message; - } else { - $errors[] = $message; - } - } - } catch (\Exception $e) { - $errors[] = $e->getMessage(); - - return array($errors, $publishErrors, $warnings); - } - - // validate actual data - if (empty($manifest['license'])) { - $warnings[] = 'No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.'; - } else { - $licenses = (array) $manifest['license']; - - // strip proprietary since it's not a valid SPDX identifier, but is accepted by composer - foreach ($licenses as $key => $license) { - if ('proprietary' === $license) { - unset($licenses[$key]); - } - } - - $licenseValidator = new SpdxLicenses(); - foreach ($licenses as $license) { - $spdxLicense = $licenseValidator->getLicenseByIdentifier($license); - if ($spdxLicense && $spdxLicense[3]) { - if (preg_match('{^[AL]?GPL-[123](\.[01])?\+$}i', $license)) { - $warnings[] = sprintf( - 'License "%s" is a deprecated SPDX license identifier, use "'.str_replace('+', '', $license).'-or-later" instead', - $license - ); - } elseif (preg_match('{^[AL]?GPL-[123](\.[01])?$}i', $license)) { - $warnings[] = sprintf( - 'License "%s" is a deprecated SPDX license identifier, use "'.$license.'-only" or "'.$license.'-or-later" instead', - $license - ); - } else { - $warnings[] = sprintf( - 'License "%s" is a deprecated SPDX license identifier, see https://spdx.org/licenses/', - $license - ); - } - } - } - } - - if (isset($manifest['version'])) { - $warnings[] = 'The version field is present, it is recommended to leave it out if the package is published on Packagist.'; - } - - if (!empty($manifest['name']) && preg_match('{[A-Z]}', $manifest['name'])) { - $suggestName = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $manifest['name']); - $suggestName = strtolower($suggestName); - - $publishErrors[] = sprintf( - 'Name "%s" does not match the best practice (e.g. lower-cased/with-dashes). We suggest using "%s" instead. As such you will not be able to submit it to Packagist.', - $manifest['name'], - $suggestName - ); - } - - if (!empty($manifest['type']) && $manifest['type'] == 'composer-installer') { - $warnings[] = "The package type 'composer-installer' is deprecated. Please distribute your custom installers as plugins from now on. See https://getcomposer.org/doc/articles/plugins.md for plugin documentation."; - } - - // check for require-dev overrides - if (isset($manifest['require']) && isset($manifest['require-dev'])) { - $requireOverrides = array_intersect_key($manifest['require'], $manifest['require-dev']); - - if (!empty($requireOverrides)) { - $plural = (count($requireOverrides) > 1) ? 'are' : 'is'; - $warnings[] = implode(', ', array_keys($requireOverrides)). " {$plural} required both in require and require-dev, this can lead to unexpected behavior"; - } - } - - // check for commit references - $require = isset($manifest['require']) ? $manifest['require'] : array(); - $requireDev = isset($manifest['require-dev']) ? $manifest['require-dev'] : array(); - $packages = array_merge($require, $requireDev); - foreach ($packages as $package => $version) { - if (preg_match('/#/', $version) === 1) { - $warnings[] = sprintf( - 'The package "%s" is pointing to a commit-ref, this is bad practice and can cause unforeseen issues.', - $package - ); - } - } - - // report scripts-descriptions for non-existent scripts - $scriptsDescriptions = isset($manifest['scripts-descriptions']) ? $manifest['scripts-descriptions'] : array(); - $scripts = isset($manifest['scripts']) ? $manifest['scripts'] : array(); - foreach ($scriptsDescriptions as $scriptName => $scriptDescription) { - if (!array_key_exists($scriptName, $scripts)) { - $warnings[] = sprintf( - 'Description for non-existent script "%s" found in "scripts-descriptions"', - $scriptName - ); - } - } - - // check for empty psr-0/psr-4 namespace prefixes - if (isset($manifest['autoload']['psr-0'][''])) { - $warnings[] = "Defining autoload.psr-0 with an empty namespace prefix is a bad idea for performance"; - } - if (isset($manifest['autoload']['psr-4'][''])) { - $warnings[] = "Defining autoload.psr-4 with an empty namespace prefix is a bad idea for performance"; - } - - try { - $loader = new ValidatingArrayLoader(new ArrayLoader(), true, null, $arrayLoaderValidationFlags); - if (!isset($manifest['version'])) { - $manifest['version'] = '1.0.0'; - } - if (!isset($manifest['name'])) { - $manifest['name'] = 'dummy/dummy'; - } - $loader->load($manifest); - } catch (InvalidPackageException $e) { - $errors = array_merge($errors, $e->getErrors()); - } - - $warnings = array_merge($warnings, $loader->getWarnings()); - - return array($errors, $publishErrors, $warnings); - } -} diff --git a/vendor/composer/composer/src/Composer/Util/ErrorHandler.php b/vendor/composer/composer/src/Composer/Util/ErrorHandler.php deleted file mode 100644 index c4dabd1..0000000 --- a/vendor/composer/composer/src/Composer/Util/ErrorHandler.php +++ /dev/null @@ -1,82 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\IO\IOInterface; - -/** - * Convert PHP errors into exceptions - * - * @author Artem Lopata - */ -class ErrorHandler -{ - private static $io; - - /** - * Error handler - * - * @param int $level Level of the error raised - * @param string $message Error message - * @param string $file Filename that the error was raised in - * @param int $line Line number the error was raised at - * - * @static - * @throws \ErrorException - * @return bool - */ - public static function handle($level, $message, $file, $line) - { - // error code is not included in error_reporting - if (!(error_reporting() & $level)) { - return; - } - - if (filter_var(ini_get('xdebug.scream'), FILTER_VALIDATE_BOOLEAN)) { - $message .= "\n\nWarning: You have xdebug.scream enabled, the warning above may be". - "\na legitimately suppressed error that you were not supposed to see."; - } - - if ($level !== E_DEPRECATED && $level !== E_USER_DEPRECATED) { - throw new \ErrorException($message, 0, $level, $file, $line); - } - - if (self::$io) { - self::$io->writeError('Deprecation Notice: '.$message.' in '.$file.':'.$line.''); - if (self::$io->isVerbose()) { - self::$io->writeError('Stack trace:'); - self::$io->writeError(array_filter(array_map(function ($a) { - if (isset($a['line'], $a['file'])) { - return ' '.$a['file'].':'.$a['line'].''; - } - - return null; - }, array_slice(debug_backtrace(), 2)))); - } - } - - return true; - } - - /** - * Register error handler. - * - * @param IOInterface|null $io - */ - public static function register(IOInterface $io = null) - { - set_error_handler(array(__CLASS__, 'handle')); - error_reporting(E_ALL | E_STRICT); - self::$io = $io; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Filesystem.php b/vendor/composer/composer/src/Composer/Util/Filesystem.php deleted file mode 100644 index 7cdad1d..0000000 --- a/vendor/composer/composer/src/Composer/Util/Filesystem.php +++ /dev/null @@ -1,717 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; -use Symfony\Component\Filesystem\Exception\IOException; -use Symfony\Component\Finder\Finder; - -/** - * @author Jordi Boggiano - * @author Johannes M. Schmitt - */ -class Filesystem -{ - private $processExecutor; - - public function __construct(ProcessExecutor $executor = null) - { - $this->processExecutor = $executor ?: new ProcessExecutor(); - } - - public function remove($file) - { - if (is_dir($file)) { - return $this->removeDirectory($file); - } - - if (file_exists($file)) { - return $this->unlink($file); - } - - return false; - } - - /** - * Checks if a directory is empty - * - * @param string $dir - * @return bool - */ - public function isDirEmpty($dir) - { - $finder = Finder::create() - ->ignoreVCS(false) - ->ignoreDotFiles(false) - ->depth(0) - ->in($dir); - - return count($finder) === 0; - } - - public function emptyDirectory($dir, $ensureDirectoryExists = true) - { - if (file_exists($dir) && is_link($dir)) { - $this->unlink($dir); - } - - if ($ensureDirectoryExists) { - $this->ensureDirectoryExists($dir); - } - - if (is_dir($dir)) { - $finder = Finder::create() - ->ignoreVCS(false) - ->ignoreDotFiles(false) - ->depth(0) - ->in($dir); - - foreach ($finder as $path) { - $this->remove((string) $path); - } - } - } - - /** - * Recursively remove a directory - * - * Uses the process component if proc_open is enabled on the PHP - * installation. - * - * @param string $directory - * @throws \RuntimeException - * @return bool - */ - public function removeDirectory($directory) - { - if ($this->isSymlinkedDirectory($directory)) { - return $this->unlinkSymlinkedDirectory($directory); - } - - if ($this->isJunction($directory)) { - return $this->removeJunction($directory); - } - - if (is_link($directory)) { - return unlink($directory); - } - - if (!file_exists($directory) || !is_dir($directory)) { - return true; - } - - if (preg_match('{^(?:[a-z]:)?[/\\\\]+$}i', $directory)) { - throw new \RuntimeException('Aborting an attempted deletion of '.$directory.', this was probably not intended, if it is a real use case please report it.'); - } - - if (!function_exists('proc_open')) { - return $this->removeDirectoryPhp($directory); - } - - if (Platform::isWindows()) { - $cmd = sprintf('rmdir /S /Q %s', ProcessExecutor::escape(realpath($directory))); - } else { - $cmd = sprintf('rm -rf %s', ProcessExecutor::escape($directory)); - } - - $result = $this->getProcess()->execute($cmd, $output) === 0; - - // clear stat cache because external processes aren't tracked by the php stat cache - clearstatcache(); - - if ($result && !file_exists($directory)) { - return true; - } - - return $this->removeDirectoryPhp($directory); - } - - /** - * Recursively delete directory using PHP iterators. - * - * Uses a CHILD_FIRST RecursiveIteratorIterator to sort files - * before directories, creating a single non-recursive loop - * to delete files/directories in the correct order. - * - * @param string $directory - * @return bool - */ - public function removeDirectoryPhp($directory) - { - try { - $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); - } catch (\UnexpectedValueException $e) { - // re-try once after clearing the stat cache if it failed as it - // sometimes fails without apparent reason, see https://github.com/composer/composer/issues/4009 - clearstatcache(); - usleep(100000); - if (!is_dir($directory)) { - return true; - } - $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); - } - $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); - - foreach ($ri as $file) { - if ($file->isDir()) { - $this->rmdir($file->getPathname()); - } else { - $this->unlink($file->getPathname()); - } - } - - return $this->rmdir($directory); - } - - public function ensureDirectoryExists($directory) - { - if (!is_dir($directory)) { - if (file_exists($directory)) { - throw new \RuntimeException( - $directory.' exists and is not a directory.' - ); - } - if (!@mkdir($directory, 0777, true)) { - throw new \RuntimeException( - $directory.' does not exist and could not be created.' - ); - } - } - } - - /** - * Attempts to unlink a file and in case of failure retries after 350ms on windows - * - * @param string $path - * @throws \RuntimeException - * @return bool - */ - public function unlink($path) - { - $unlinked = @$this->unlinkImplementation($path); - if (!$unlinked) { - // retry after a bit on windows since it tends to be touchy with mass removals - if (Platform::isWindows()) { - usleep(350000); - $unlinked = @$this->unlinkImplementation($path); - } - - if (!$unlinked) { - $error = error_get_last(); - $message = 'Could not delete '.$path.': ' . @$error['message']; - if (Platform::isWindows()) { - $message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; - } - - throw new \RuntimeException($message); - } - } - - return true; - } - - /** - * Attempts to rmdir a file and in case of failure retries after 350ms on windows - * - * @param string $path - * @throws \RuntimeException - * @return bool - */ - public function rmdir($path) - { - $deleted = @rmdir($path); - if (!$deleted) { - // retry after a bit on windows since it tends to be touchy with mass removals - if (Platform::isWindows()) { - usleep(350000); - $deleted = @rmdir($path); - } - - if (!$deleted) { - $error = error_get_last(); - $message = 'Could not delete '.$path.': ' . @$error['message']; - if (Platform::isWindows()) { - $message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; - } - - throw new \RuntimeException($message); - } - } - - return true; - } - - /** - * Copy then delete is a non-atomic version of {@link rename}. - * - * Some systems can't rename and also don't have proc_open, - * which requires this solution. - * - * @param string $source - * @param string $target - */ - public function copyThenRemove($source, $target) - { - $this->copy($source, $target); - if (!is_dir($source)) { - $this->unlink($source); - - return; - } - - $this->removeDirectoryPhp($source); - } - - /** - * Copies a file or directory from $source to $target. - * - * @param string $source - * @param string $target - * @return bool - */ - public function copy($source, $target) - { - if (!is_dir($source)) { - return copy($source, $target); - } - - $it = new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS); - $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST); - $this->ensureDirectoryExists($target); - - $result = true; - foreach ($ri as $file) { - $targetPath = $target . DIRECTORY_SEPARATOR . $ri->getSubPathName(); - if ($file->isDir()) { - $this->ensureDirectoryExists($targetPath); - } else { - $result = $result && copy($file->getPathname(), $targetPath); - } - } - - return $result; - } - - public function rename($source, $target) - { - if (true === @rename($source, $target)) { - return; - } - - if (!function_exists('proc_open')) { - return $this->copyThenRemove($source, $target); - } - - if (Platform::isWindows()) { - // Try to copy & delete - this is a workaround for random "Access denied" errors. - $command = sprintf('xcopy %s %s /E /I /Q /Y', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); - $result = $this->processExecutor->execute($command, $output); - - // clear stat cache because external processes aren't tracked by the php stat cache - clearstatcache(); - - if (0 === $result) { - $this->remove($source); - - return; - } - } else { - // We do not use PHP's "rename" function here since it does not support - // the case where $source, and $target are located on different partitions. - $command = sprintf('mv %s %s', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); - $result = $this->processExecutor->execute($command, $output); - - // clear stat cache because external processes aren't tracked by the php stat cache - clearstatcache(); - - if (0 === $result) { - return; - } - } - - return $this->copyThenRemove($source, $target); - } - - /** - * Returns the shortest path from $from to $to - * - * @param string $from - * @param string $to - * @param bool $directories if true, the source/target are considered to be directories - * @throws \InvalidArgumentException - * @return string - */ - public function findShortestPath($from, $to, $directories = false) - { - if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { - throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); - } - - $from = lcfirst($this->normalizePath($from)); - $to = lcfirst($this->normalizePath($to)); - - if ($directories) { - $from = rtrim($from, '/') . '/dummy_file'; - } - - if (dirname($from) === dirname($to)) { - return './'.basename($to); - } - - $commonPath = $to; - while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !preg_match('{^[a-z]:/?$}i', $commonPath)) { - $commonPath = strtr(dirname($commonPath), '\\', '/'); - } - - if (0 !== strpos($from, $commonPath) || '/' === $commonPath) { - return $to; - } - - $commonPath = rtrim($commonPath, '/') . '/'; - $sourcePathDepth = substr_count(substr($from, strlen($commonPath)), '/'); - $commonPathCode = str_repeat('../', $sourcePathDepth); - - return ($commonPathCode . substr($to, strlen($commonPath))) ?: './'; - } - - /** - * Returns PHP code that, when executed in $from, will return the path to $to - * - * @param string $from - * @param string $to - * @param bool $directories if true, the source/target are considered to be directories - * @param bool $staticCode - * @throws \InvalidArgumentException - * @return string - */ - public function findShortestPathCode($from, $to, $directories = false, $staticCode = false) - { - if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { - throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); - } - - $from = lcfirst($this->normalizePath($from)); - $to = lcfirst($this->normalizePath($to)); - - if ($from === $to) { - return $directories ? '__DIR__' : '__FILE__'; - } - - $commonPath = $to; - while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !preg_match('{^[a-z]:/?$}i', $commonPath) && '.' !== $commonPath) { - $commonPath = strtr(dirname($commonPath), '\\', '/'); - } - - if (0 !== strpos($from, $commonPath) || '/' === $commonPath || '.' === $commonPath) { - return var_export($to, true); - } - - $commonPath = rtrim($commonPath, '/') . '/'; - if (strpos($to, $from.'/') === 0) { - return '__DIR__ . '.var_export(substr($to, strlen($from)), true); - } - $sourcePathDepth = substr_count(substr($from, strlen($commonPath)), '/') + $directories; - if ($staticCode) { - $commonPathCode = "__DIR__ . '".str_repeat('/..', $sourcePathDepth)."'"; - } else { - $commonPathCode = str_repeat('dirname(', $sourcePathDepth).'__DIR__'.str_repeat(')', $sourcePathDepth); - } - $relTarget = substr($to, strlen($commonPath)); - - return $commonPathCode . (strlen($relTarget) ? '.' . var_export('/' . $relTarget, true) : ''); - } - - /** - * Checks if the given path is absolute - * - * @param string $path - * @return bool - */ - public function isAbsolutePath($path) - { - return substr($path, 0, 1) === '/' || substr($path, 1, 1) === ':' || substr($path, 0, 2) === '\\\\'; - } - - /** - * Returns size of a file or directory specified by path. If a directory is - * given, it's size will be computed recursively. - * - * @param string $path Path to the file or directory - * @throws \RuntimeException - * @return int - */ - public function size($path) - { - if (!file_exists($path)) { - throw new \RuntimeException("$path does not exist."); - } - if (is_dir($path)) { - return $this->directorySize($path); - } - - return filesize($path); - } - - /** - * Normalize a path. This replaces backslashes with slashes, removes ending - * slash and collapses redundant separators and up-level references. - * - * @param string $path Path to the file or directory - * @return string - */ - public function normalizePath($path) - { - $parts = array(); - $path = strtr($path, '\\', '/'); - $prefix = ''; - $absolute = false; - - // extract a prefix being a protocol://, protocol:, protocol://drive: or simply drive: - if (preg_match('{^( [0-9a-z]{2,}+: (?: // (?: [a-z]: )? )? | [a-z]: )}ix', $path, $match)) { - $prefix = $match[1]; - $path = substr($path, strlen($prefix)); - } - - if (substr($path, 0, 1) === '/') { - $absolute = true; - $path = substr($path, 1); - } - - $up = false; - foreach (explode('/', $path) as $chunk) { - if ('..' === $chunk && ($absolute || $up)) { - array_pop($parts); - $up = !(empty($parts) || '..' === end($parts)); - } elseif ('.' !== $chunk && '' !== $chunk) { - $parts[] = $chunk; - $up = '..' !== $chunk; - } - } - - return $prefix.($absolute ? '/' : '').implode('/', $parts); - } - - /** - * Return if the given path is local - * - * @param string $path - * @return bool - */ - public static function isLocalPath($path) - { - return (bool) preg_match('{^(file://(?!//)|/(?!/)|/?[a-z]:[\\\\/]|\.\.[\\\\/]|[a-z0-9_.-]+[\\\\/])}i', $path); - } - - public static function getPlatformPath($path) - { - if (Platform::isWindows()) { - $path = preg_replace('{^(?:file:///([a-z]):?/)}i', 'file://$1:/', $path); - } - - return preg_replace('{^file://}i', '', $path); - } - - protected function directorySize($directory) - { - $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); - $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); - - $size = 0; - foreach ($ri as $file) { - if ($file->isFile()) { - $size += $file->getSize(); - } - } - - return $size; - } - - protected function getProcess() - { - return $this->processExecutor; - } - - /** - * delete symbolic link implementation (commonly known as "unlink()") - * - * symbolic links on windows which link to directories need rmdir instead of unlink - * - * @param string $path - * - * @return bool - */ - private function unlinkImplementation($path) - { - if (Platform::isWindows() && is_dir($path) && is_link($path)) { - return rmdir($path); - } - - return unlink($path); - } - - /** - * Creates a relative symlink from $link to $target - * - * @param string $target The path of the binary file to be symlinked - * @param string $link The path where the symlink should be created - * @return bool - */ - public function relativeSymlink($target, $link) - { - $cwd = getcwd(); - - $relativePath = $this->findShortestPath($link, $target); - chdir(dirname($link)); - $result = @symlink($relativePath, $link); - - chdir($cwd); - - return $result; - } - - /** - * return true if that directory is a symlink. - * - * @param string $directory - * - * @return bool - */ - public function isSymlinkedDirectory($directory) - { - if (!is_dir($directory)) { - return false; - } - - $resolved = $this->resolveSymlinkedDirectorySymlink($directory); - - return is_link($resolved); - } - - /** - * @param string $directory - * - * @return bool - */ - private function unlinkSymlinkedDirectory($directory) - { - $resolved = $this->resolveSymlinkedDirectorySymlink($directory); - - return $this->unlink($resolved); - } - - /** - * resolve pathname to symbolic link of a directory - * - * @param string $pathname directory path to resolve - * - * @return string resolved path to symbolic link or original pathname (unresolved) - */ - private function resolveSymlinkedDirectorySymlink($pathname) - { - if (!is_dir($pathname)) { - return $pathname; - } - - $resolved = rtrim($pathname, '/'); - - if (!strlen($resolved)) { - return $pathname; - } - - return $resolved; - } - - /** - * Creates an NTFS junction. - * - * @param string $target - * @param string $junction - */ - public function junction($target, $junction) - { - if (!Platform::isWindows()) { - throw new \LogicException(sprintf('Function %s is not available on non-Windows platform', __CLASS__)); - } - if (!is_dir($target)) { - throw new IOException(sprintf('Cannot junction to "%s" as it is not a directory.', $target), 0, null, $target); - } - $cmd = sprintf( - 'mklink /J %s %s', - ProcessExecutor::escape(str_replace('/', DIRECTORY_SEPARATOR, $junction)), - ProcessExecutor::escape(realpath($target)) - ); - if ($this->getProcess()->execute($cmd, $output) !== 0) { - throw new IOException(sprintf('Failed to create junction to "%s" at "%s".', $target, $junction), 0, null, $target); - } - clearstatcache(true, $junction); - } - - /** - * Returns whether the target directory is a Windows NTFS Junction. - * - * We test if the path is a directory and not an ordinary link, then check - * that the mode value returned from lstat (which gives the status of the - * link itself) is not a directory, by replicating the POSIX S_ISDIR test. - * - * This logic works because PHP does not set the mode value for a junction, - * since there is no universal file type flag for it. Unfortunately an - * uninitialized variable in PHP prior to 7.2.16 and 7.3.3 may cause a - * random value to be returned. See https://bugs.php.net/bug.php?id=77552 - * - * If this random value passes the S_ISDIR test, then a junction will not be - * detected and a recursive delete operation could lead to loss of data in - * the target directory. Note that Windows rmdir can handle this situation - * and will only delete the junction (from Windows 7 onwards). - * - * @param string $junction Path to check. - * @return bool - */ - public function isJunction($junction) - { - if (!Platform::isWindows()) { - return false; - } - - // Important to clear all caches first - clearstatcache(true, $junction); - - if (!is_dir($junction) || is_link($junction)) { - return false; - } - - $stat = lstat($junction); - - // S_ISDIR test (S_IFDIR is 0x4000, S_IFMT is 0xF000 bitmask) - return $stat ? 0x4000 !== ($stat['mode'] & 0xF000) : false; - } - - /** - * Removes a Windows NTFS junction. - * - * @param string $junction - * @return bool - */ - public function removeJunction($junction) - { - if (!Platform::isWindows()) { - return false; - } - $junction = rtrim(str_replace('/', DIRECTORY_SEPARATOR, $junction), DIRECTORY_SEPARATOR); - if (!$this->isJunction($junction)) { - throw new IOException(sprintf('%s is not a junction and thus cannot be removed as one', $junction)); - } - - return $this->rmdir($junction); - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Git.php b/vendor/composer/composer/src/Composer/Util/Git.php deleted file mode 100644 index 81c6850..0000000 --- a/vendor/composer/composer/src/Composer/Util/Git.php +++ /dev/null @@ -1,401 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Config; -use Composer\IO\IOInterface; - -/** - * @author Jordi Boggiano - */ -class Git -{ - private static $version; - - /** @var IOInterface */ - protected $io; - /** @var Config */ - protected $config; - /** @var ProcessExecutor */ - protected $process; - /** @var Filesystem */ - protected $filesystem; - - public function __construct(IOInterface $io, Config $config, ProcessExecutor $process, Filesystem $fs) - { - $this->io = $io; - $this->config = $config; - $this->process = $process; - $this->filesystem = $fs; - } - - public function runCommand($commandCallable, $url, $cwd, $initialClone = false) - { - // Ensure we are allowed to use this URL by config - $this->config->prohibitUrlByConfig($url, $this->io); - - if ($initialClone) { - $origCwd = $cwd; - $cwd = null; - } - - if (preg_match('{^ssh://[^@]+@[^:]+:[^0-9]+}', $url)) { - throw new \InvalidArgumentException('The source URL ' . $url . ' is invalid, ssh URLs should have a port number after ":".' . "\n" . 'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); - } - - if (!$initialClone) { - // capture username/password from URL if there is one and we have no auth configured yet - $this->process->execute('git remote -v', $output, $cwd); - if (preg_match('{^(?:composer|origin)\s+https?://(.+):(.+)@([^/]+)}im', $output, $match) && !$this->io->hasAuthentication($match[3])) { - $this->io->setAuthentication($match[3], rawurldecode($match[1]), rawurldecode($match[2])); - } - } - - $protocols = $this->config->get('github-protocols'); - if (!is_array($protocols)) { - throw new \RuntimeException('Config value "github-protocols" must be an array, got ' . gettype($protocols)); - } - // public github, autoswitch protocols - if (preg_match('{^(?:https?|git)://' . self::getGitHubDomainsRegex($this->config) . '/(.*)}', $url, $match)) { - $messages = array(); - foreach ($protocols as $protocol) { - if ('ssh' === $protocol) { - $protoUrl = "git@" . $match[1] . ":" . $match[2]; - } else { - $protoUrl = $protocol . "://" . $match[1] . "/" . $match[2]; - } - - if (0 === $this->process->execute(call_user_func($commandCallable, $protoUrl), $ignoredOutput, $cwd)) { - return; - } - $messages[] = '- ' . $protoUrl . "\n" . preg_replace('#^#m', ' ', $this->process->getErrorOutput()); - if ($initialClone) { - $this->filesystem->removeDirectory($origCwd); - } - } - - // failed to checkout, first check git accessibility - if (!$this->io->hasAuthentication($match[1]) && !$this->io->isInteractive()) { - $this->throwException('Failed to clone ' . $url . ' via ' . implode(', ', $protocols) . ' protocols, aborting.' . "\n\n" . implode("\n", $messages), $url); - } - } - - // if we have a private github url and the ssh protocol is disabled then we skip it and directly fallback to https - $bypassSshForGitHub = preg_match('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url) && !in_array('ssh', $protocols, true); - - $command = call_user_func($commandCallable, $url); - - $auth = null; - if ($bypassSshForGitHub || 0 !== $this->process->execute($command, $ignoredOutput, $cwd)) { - // private github repository without ssh key access, try https with auth - if (preg_match('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url, $match) - || preg_match('{^https?://' . self::getGitHubDomainsRegex($this->config) . '/(.*)}', $url, $match) - ) { - if (!$this->io->hasAuthentication($match[1])) { - $gitHubUtil = new GitHub($this->io, $this->config, $this->process); - $message = 'Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos'; - - if (!$gitHubUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { - $gitHubUtil->authorizeOAuthInteractively($match[1], $message); - } - } - - if ($this->io->hasAuthentication($match[1])) { - $auth = $this->io->getAuthentication($match[1]); - $authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; - $command = call_user_func($commandCallable, $authUrl); - if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { - return; - } - } - } elseif (preg_match('{^https://(bitbucket\.org)/(.*)(\.git)?$}U', $url, $match)) { //bitbucket oauth - $bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process); - - if (!$this->io->hasAuthentication($match[1])) { - $message = 'Enter your Bitbucket credentials to access private repos'; - - if (!$bitbucketUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { - $bitbucketUtil->authorizeOAuthInteractively($match[1], $message); - $accessToken = $bitbucketUtil->getToken(); - $this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); - } - } else { //We're authenticating with a locally stored consumer. - $auth = $this->io->getAuthentication($match[1]); - - //We already have an access_token from a previous request. - if ($auth['username'] !== 'x-token-auth') { - $accessToken = $bitbucketUtil->requestToken($match[1], $auth['username'], $auth['password']); - if (! empty($accessToken)) { - $this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); - } - } - } - - if ($this->io->hasAuthentication($match[1])) { - $auth = $this->io->getAuthentication($match[1]); - $authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; - - $command = call_user_func($commandCallable, $authUrl); - if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { - return; - } - } else { // Falling back to ssh - $sshUrl = 'git@bitbucket.org:' . $match[2] . '.git'; - $this->io->writeError(' No bitbucket authentication configured. Falling back to ssh.'); - $command = call_user_func($commandCallable, $sshUrl); - if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { - return; - } - } - } elseif ( - preg_match('{^(git)@' . self::getGitLabDomainsRegex($this->config) . ':(.+?)\.git$}i', $url, $match) - || preg_match('{^(https?)://' . self::getGitLabDomainsRegex($this->config) . '/(.*)}', $url, $match) - ) { - if ($match[1] === 'git') { - $match[1] = 'https'; - } - - if (!$this->io->hasAuthentication($match[2])) { - $gitLabUtil = new GitLab($this->io, $this->config, $this->process); - $message = 'Cloning failed, enter your GitLab credentials to access private repos'; - - if (!$gitLabUtil->authorizeOAuth($match[2]) && $this->io->isInteractive()) { - $gitLabUtil->authorizeOAuthInteractively($match[1], $match[2], $message); - } - } - - if ($this->io->hasAuthentication($match[2])) { - $auth = $this->io->getAuthentication($match[2]); - if ($auth['password'] === 'private-token' || $auth['password'] === 'oauth2' || $auth['password'] === 'gitlab-ci-token') { - $authUrl = $match[1] . '://' . rawurlencode($auth['password']) . ':' . rawurlencode($auth['username']) . '@' . $match[2] . '/' . $match[3]; // swap username and password - } else { - $authUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . '/' . $match[3]; - } - - $command = call_user_func($commandCallable, $authUrl); - if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { - return; - } - } - } elseif ($this->isAuthenticationFailure($url, $match)) { // private non-github/gitlab/bitbucket repo that failed to authenticate - if (strpos($match[2], '@')) { - list($authParts, $match[2]) = explode('@', $match[2], 2); - } - - $storeAuth = false; - if ($this->io->hasAuthentication($match[2])) { - $auth = $this->io->getAuthentication($match[2]); - } elseif ($this->io->isInteractive()) { - $defaultUsername = null; - if (isset($authParts) && $authParts) { - if (false !== strpos($authParts, ':')) { - list($defaultUsername, ) = explode(':', $authParts, 2); - } else { - $defaultUsername = $authParts; - } - } - - $this->io->writeError(' Authentication required (' . $match[2] . '):'); - $auth = array( - 'username' => $this->io->ask(' Username: ', $defaultUsername), - 'password' => $this->io->askAndHideAnswer(' Password: '), - ); - $storeAuth = $this->config->get('store-auths'); - } - - if ($auth) { - $authUrl = $match[1] . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . $match[3]; - - $command = call_user_func($commandCallable, $authUrl); - if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { - $this->io->setAuthentication($match[2], $auth['username'], $auth['password']); - $authHelper = new AuthHelper($this->io, $this->config); - $authHelper->storeAuth($match[2], $storeAuth); - - return; - } - } - } - - $errorMsg = $this->process->getErrorOutput(); - if ($initialClone) { - $this->filesystem->removeDirectory($origCwd); - } - - $this->throwException('Failed to execute ' . $command . "\n\n" . $errorMsg, $url); - } - } - - public function syncMirror($url, $dir) - { - // update the repo if it is a valid git repository - if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { - try { - $commandCallable = function ($url) { - $sanitizedUrl = preg_replace('{://([^@]+?):(.+?)@}', '://', $url); - - return sprintf('git remote set-url origin %s && git remote update --prune origin && git remote set-url origin %s', ProcessExecutor::escape($url), ProcessExecutor::escape($sanitizedUrl)); - }; - $this->runCommand($commandCallable, $url, $dir); - } catch (\Exception $e) { - return false; - } - - return true; - } - - // clean up directory and do a fresh clone into it - $this->filesystem->removeDirectory($dir); - - $commandCallable = function ($url) use ($dir) { - return sprintf('git clone --mirror %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($dir)); - }; - - $this->runCommand($commandCallable, $url, $dir, true); - - return true; - } - - public function fetchRefOrSyncMirror($url, $dir, $ref) - { - if ($this->checkRefIsInMirror($url, $dir, $ref)) { - return true; - } - - if ($this->syncMirror($url, $dir)) { - return $this->checkRefIsInMirror($url, $dir, $ref); - } - - return false; - } - - private function checkRefIsInMirror($url, $dir, $ref) - { - if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { - $escapedRef = ProcessExecutor::escape($ref.'^{commit}'); - $exitCode = $this->process->execute(sprintf('git rev-parse --quiet --verify %s', $escapedRef), $ignoredOutput, $dir); - if ($exitCode === 0) { - return true; - } - } - - return false; - } - - private function isAuthenticationFailure($url, &$match) - { - if (!preg_match('{^(https?://)([^/]+)(.*)$}i', $url, $match)) { - return false; - } - - $authFailures = array( - 'fatal: Authentication failed', - 'remote error: Invalid username or password.', - 'error: 401 Unauthorized', - 'fatal: unable to access', - 'fatal: could not read Username', - ); - - $errorOutput = $this->process->getErrorOutput(); - foreach ($authFailures as $authFailure) { - if (strpos($errorOutput, $authFailure) !== false) { - return true; - } - } - - return false; - } - - public static function cleanEnv() - { - if (PHP_VERSION_ID < 50400 && ini_get('safe_mode') && false === strpos(ini_get('safe_mode_allowed_env_vars'), 'GIT_ASKPASS')) { - throw new \RuntimeException('safe_mode is enabled and safe_mode_allowed_env_vars does not contain GIT_ASKPASS, can not set env var. You can disable safe_mode with "-dsafe_mode=0" when running composer'); - } - - // added in git 1.7.1, prevents prompting the user for username/password - if (getenv('GIT_ASKPASS') !== 'echo') { - putenv('GIT_ASKPASS=echo'); - unset($_SERVER['GIT_ASKPASS']); - } - - // clean up rogue git env vars in case this is running in a git hook - if (getenv('GIT_DIR')) { - putenv('GIT_DIR'); - unset($_SERVER['GIT_DIR']); - } - if (getenv('GIT_WORK_TREE')) { - putenv('GIT_WORK_TREE'); - unset($_SERVER['GIT_WORK_TREE']); - } - - // Run processes with predictable LANGUAGE - if (getenv('LANGUAGE') !== 'C') { - putenv('LANGUAGE=C'); - } - - // clean up env for OSX, see https://github.com/composer/composer/issues/2146#issuecomment-35478940 - putenv("DYLD_LIBRARY_PATH"); - unset($_SERVER['DYLD_LIBRARY_PATH']); - } - - public static function getGitHubDomainsRegex(Config $config) - { - return '(' . implode('|', array_map('preg_quote', $config->get('github-domains'))) . ')'; - } - - public static function getGitLabDomainsRegex(Config $config) - { - return '(' . implode('|', array_map('preg_quote', $config->get('gitlab-domains'))) . ')'; - } - - public static function sanitizeUrl($message) - { - return preg_replace_callback('{://(?P[^@]+?):(?P.+?)@}', function ($m) { - if (preg_match('{^[a-f0-9]{12,}$}', $m[1])) { - return '://***:***@'; - } - - return '://' . $m[1] . ':***@'; - }, $message); - } - - private function throwException($message, $url) - { - // git might delete a directory when it fails and php will not know - clearstatcache(); - - if (0 !== $this->process->execute('git --version', $ignoredOutput)) { - throw new \RuntimeException(self::sanitizeUrl('Failed to clone ' . $url . ', git was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); - } - - throw new \RuntimeException(self::sanitizeUrl($message)); - } - - /** - * Retrieves the current git version. - * - * @return string|null The git version number. - */ - public function getVersion() - { - if (isset(self::$version)) { - return self::$version; - } - if (0 !== $this->process->execute('git --version', $output)) { - return; - } - if (preg_match('/^git version (\d+(?:\.\d+)+)/m', $output, $matches)) { - return self::$version = $matches[1]; - } - } -} diff --git a/vendor/composer/composer/src/Composer/Util/GitHub.php b/vendor/composer/composer/src/Composer/Util/GitHub.php deleted file mode 100644 index 1eca1a9..0000000 --- a/vendor/composer/composer/src/Composer/Util/GitHub.php +++ /dev/null @@ -1,180 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Factory; -use Composer\IO\IOInterface; -use Composer\Config; -use Composer\Downloader\TransportException; - -/** - * @author Jordi Boggiano - */ -class GitHub -{ - protected $io; - protected $config; - protected $process; - protected $remoteFilesystem; - - /** - * Constructor. - * - * @param IOInterface $io The IO instance - * @param Config $config The composer configuration - * @param ProcessExecutor $process Process instance, injectable for mocking - * @param RemoteFilesystem $remoteFilesystem Remote Filesystem, injectable for mocking - */ - public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, RemoteFilesystem $remoteFilesystem = null) - { - $this->io = $io; - $this->config = $config; - $this->process = $process ?: new ProcessExecutor($io); - $this->remoteFilesystem = $remoteFilesystem ?: Factory::createRemoteFilesystem($this->io, $config); - } - - /** - * Attempts to authorize a GitHub domain via OAuth - * - * @param string $originUrl The host this GitHub instance is located at - * @return bool true on success - */ - public function authorizeOAuth($originUrl) - { - if (!in_array($originUrl, $this->config->get('github-domains'))) { - return false; - } - - // if available use token from git config - if (0 === $this->process->execute('git config github.accesstoken', $output)) { - $this->io->setAuthentication($originUrl, trim($output), 'x-oauth-basic'); - - return true; - } - - return false; - } - - /** - * Authorizes a GitHub domain interactively via OAuth - * - * @param string $originUrl The host this GitHub instance is located at - * @param string $message The reason this authorization is required - * @throws \RuntimeException - * @throws TransportException|\Exception - * @return bool true on success - */ - public function authorizeOAuthInteractively($originUrl, $message = null) - { - if ($message) { - $this->io->writeError($message); - } - - $note = 'Composer'; - if ($this->config->get('github-expose-hostname') === true && 0 === $this->process->execute('hostname', $output)) { - $note .= ' on ' . trim($output); - } - $note .= ' ' . date('Y-m-d Hi'); - - $url = 'https://'.$originUrl.'/settings/tokens/new?scopes=repo&description=' . str_replace('%20', '+', rawurlencode($note)); - $this->io->writeError(sprintf('Head to %s', $url)); - $this->io->writeError(sprintf('to retrieve a token. It will be stored in "%s" for future use by Composer.', $this->config->getAuthConfigSource()->getName())); - - $token = trim($this->io->askAndHideAnswer('Token (hidden): ')); - - if (!$token) { - $this->io->writeError('No token given, aborting.'); - $this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); - - return false; - } - - $this->io->setAuthentication($originUrl, $token, 'x-oauth-basic'); - - try { - $apiUrl = ('github.com' === $originUrl) ? 'api.github.com/' : $originUrl . '/api/v3/'; - - $this->remoteFilesystem->getContents($originUrl, 'https://'. $apiUrl, false, array( - 'retry-auth-failure' => false, - )); - } catch (TransportException $e) { - if (in_array($e->getCode(), array(403, 401))) { - $this->io->writeError('Invalid token provided.'); - $this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); - - return false; - } - - throw $e; - } - - // store value in user config - $this->config->getConfigSource()->removeConfigSetting('github-oauth.'.$originUrl); - $this->config->getAuthConfigSource()->addConfigSetting('github-oauth.'.$originUrl, $token); - - $this->io->writeError('Token stored successfully.'); - - return true; - } - - /** - * Extract ratelimit from response. - * - * @param array $headers Headers from Composer\Downloader\TransportException. - * - * @return array Associative array with the keys limit and reset. - */ - public function getRateLimit(array $headers) - { - $rateLimit = array( - 'limit' => '?', - 'reset' => '?', - ); - - foreach ($headers as $header) { - $header = trim($header); - if (false === strpos($header, 'X-RateLimit-')) { - continue; - } - list($type, $value) = explode(':', $header, 2); - switch ($type) { - case 'X-RateLimit-Limit': - $rateLimit['limit'] = (int) trim($value); - break; - case 'X-RateLimit-Reset': - $rateLimit['reset'] = date('Y-m-d H:i:s', (int) trim($value)); - break; - } - } - - return $rateLimit; - } - - /** - * Finds whether a request failed due to rate limiting - * - * @param array $headers Headers from Composer\Downloader\TransportException. - * - * @return bool - */ - public function isRateLimited(array $headers) - { - foreach ($headers as $header) { - if (preg_match('{^X-RateLimit-Remaining: *0$}i', trim($header))) { - return true; - } - } - - return false; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/GitLab.php b/vendor/composer/composer/src/Composer/Util/GitLab.php deleted file mode 100644 index 7a69ad2..0000000 --- a/vendor/composer/composer/src/Composer/Util/GitLab.php +++ /dev/null @@ -1,172 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\IO\IOInterface; -use Composer\Config; -use Composer\Factory; -use Composer\Downloader\TransportException; -use Composer\Json\JsonFile; - -/** - * @author Roshan Gautam - */ -class GitLab -{ - protected $io; - protected $config; - protected $process; - protected $remoteFilesystem; - - /** - * Constructor. - * - * @param IOInterface $io The IO instance - * @param Config $config The composer configuration - * @param ProcessExecutor $process Process instance, injectable for mocking - * @param RemoteFilesystem $remoteFilesystem Remote Filesystem, injectable for mocking - */ - public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, RemoteFilesystem $remoteFilesystem = null) - { - $this->io = $io; - $this->config = $config; - $this->process = $process ?: new ProcessExecutor($io); - $this->remoteFilesystem = $remoteFilesystem ?: Factory::createRemoteFilesystem($this->io, $config); - } - - /** - * Attempts to authorize a GitLab domain via OAuth. - * - * @param string $originUrl The host this GitLab instance is located at - * - * @return bool true on success - */ - public function authorizeOAuth($originUrl) - { - // before composer 1.9, origin URLs had no port number in them - $bcOriginUrl = preg_replace('{:\d+}', '', $originUrl); - - if (!in_array($originUrl, $this->config->get('gitlab-domains'), true) && !in_array($bcOriginUrl, $this->config->get('gitlab-domains'), true)) { - return false; - } - - // if available use token from git config - if (0 === $this->process->execute('git config gitlab.accesstoken', $output)) { - $this->io->setAuthentication($originUrl, trim($output), 'oauth2'); - - return true; - } - - // if available use token from composer config - $authTokens = $this->config->get('gitlab-token'); - - if (isset($authTokens[$originUrl])) { - $this->io->setAuthentication($originUrl, $authTokens[$originUrl], 'private-token'); - - return true; - } - - if (isset($authTokens[$bcOriginUrl])) { - $this->io->setAuthentication($originUrl, $authTokens[$bcOriginUrl], 'private-token'); - - return true; - } - - return false; - } - - /** - * Authorizes a GitLab domain interactively via OAuth. - * - * @param string $scheme Scheme used in the origin URL - * @param string $originUrl The host this GitLab instance is located at - * @param string $message The reason this authorization is required - * - * @throws \RuntimeException - * @throws TransportException|\Exception - * - * @return bool true on success - */ - public function authorizeOAuthInteractively($scheme, $originUrl, $message = null) - { - if ($message) { - $this->io->writeError($message); - } - - $this->io->writeError(sprintf('A token will be created and stored in "%s", your password will never be stored', $this->config->getAuthConfigSource()->getName())); - $this->io->writeError('To revoke access to this token you can visit '.$originUrl.'/profile/applications'); - - $attemptCounter = 0; - - while ($attemptCounter++ < 5) { - try { - $response = $this->createToken($scheme, $originUrl); - } catch (TransportException $e) { - // 401 is bad credentials, - // 403 is max login attempts exceeded - if (in_array($e->getCode(), array(403, 401))) { - if (401 === $e->getCode()) { - $this->io->writeError('Bad credentials.'); - } else { - $this->io->writeError('Maximum number of login attempts exceeded. Please try again later.'); - } - - $this->io->writeError('You can also manually create a personal token at '.$scheme.'://'.$originUrl.'/profile/personal_access_tokens'); - $this->io->writeError('Add it using "composer config --global --auth gitlab-token.'.$originUrl.' "'); - - continue; - } - - throw $e; - } - - $this->io->setAuthentication($originUrl, $response['access_token'], 'oauth2'); - - // store value in user config in auth file - $this->config->getAuthConfigSource()->addConfigSetting('gitlab-oauth.'.$originUrl, $response['access_token']); - - return true; - } - - throw new \RuntimeException('Invalid GitLab credentials 5 times in a row, aborting.'); - } - - private function createToken($scheme, $originUrl) - { - $username = $this->io->ask('Username: '); - $password = $this->io->askAndHideAnswer('Password: '); - - $headers = array('Content-Type: application/x-www-form-urlencoded'); - - $apiUrl = $originUrl; - $data = http_build_query(array( - 'username' => $username, - 'password' => $password, - 'grant_type' => 'password', - ), null, '&'); - $options = array( - 'retry-auth-failure' => false, - 'http' => array( - 'method' => 'POST', - 'header' => $headers, - 'content' => $data, - ), - ); - - $json = $this->remoteFilesystem->getContents($originUrl, $scheme.'://'.$apiUrl.'/oauth/token', false, $options); - - $this->io->writeError('Token successfully created'); - - return JsonFile::parseJson($json); - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Hg.php b/vendor/composer/composer/src/Composer/Util/Hg.php deleted file mode 100644 index 8cf6241..0000000 --- a/vendor/composer/composer/src/Composer/Util/Hg.php +++ /dev/null @@ -1,94 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Config; -use Composer\IO\IOInterface; - -/** - * @author Jonas Renaudot - */ -class Hg -{ - /** - * @var \Composer\IO\IOInterface - */ - private $io; - - /** - * @var \Composer\Config - */ - private $config; - - /** - * @var \Composer\Util\ProcessExecutor - */ - private $process; - - public function __construct(IOInterface $io, Config $config, ProcessExecutor $process) - { - $this->io = $io; - $this->config = $config; - $this->process = $process; - } - - public function runCommand($commandCallable, $url, $cwd) - { - $this->config->prohibitUrlByConfig($url, $this->io); - - // Try as is - $command = call_user_func($commandCallable, $url); - - if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { - return; - } - - // Try with the authentication informations available - if (preg_match('{^(https?)://((.+)(?:\:(.+))?@)?([^/]+)(/.*)?}mi', $url, $match) && $this->io->hasAuthentication($match[5])) { - $auth = $this->io->getAuthentication($match[5]); - $authenticatedUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[5] . (!empty($match[6]) ? $match[6] : null); - - $command = call_user_func($commandCallable, $authenticatedUrl); - - if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { - return; - } - - $error = $this->process->getErrorOutput(); - } else { - $error = 'The given URL (' . $url . ') does not match the required format (http(s)://(username:password@)example.com/path-to-repository)'; - } - - $this->throwException('Failed to clone ' . $url . ', ' . "\n\n" . $error, $url); - } - - public static function sanitizeUrl($message) - { - return preg_replace_callback('{://(?P[^@]+?):(?P.+?)@}', function ($m) { - if (preg_match('{^[a-f0-9]{12,}$}', $m[1])) { - return '://***:***@'; - } - - return '://' . $m[1] . ':***@'; - }, $message); - } - - private function throwException($message, $url) - { - if (0 !== $this->process->execute('hg --version', $ignoredOutput)) { - throw new \RuntimeException(self::sanitizeUrl('Failed to clone ' . $url . ', hg was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); - } - - throw new \RuntimeException(self::sanitizeUrl($message)); - } -} diff --git a/vendor/composer/composer/src/Composer/Util/IniHelper.php b/vendor/composer/composer/src/Composer/Util/IniHelper.php deleted file mode 100644 index d655419..0000000 --- a/vendor/composer/composer/src/Composer/Util/IniHelper.php +++ /dev/null @@ -1,64 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\XdebugHandler\XdebugHandler; - -/** - * Provides ini file location functions that work with and without a restart. - * When the process has restarted it uses a tmp ini and stores the original - * ini locations in an environment variable. - * - * @author John Stevenson - */ -class IniHelper -{ - /** - * Returns an array of php.ini locations with at least one entry - * - * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files. - * The loaded ini location is the first entry and may be empty. - * - * @return array - */ - public static function getAll() - { - return XdebugHandler::getAllIniFiles(); - } - - /** - * Describes the location of the loaded php.ini file(s) - * - * @return string - */ - public static function getMessage() - { - $paths = self::getAll(); - - if (empty($paths[0])) { - array_shift($paths); - } - - $ini = array_shift($paths); - - if (empty($ini)) { - return 'A php.ini file does not exist. You will have to create one.'; - } - - if (!empty($paths)) { - return 'Your command-line PHP is using multiple ini files. Run `php --ini` to show them.'; - } - - return 'The php.ini used by your command-line PHP is: '.$ini; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php b/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php deleted file mode 100644 index a6cb112..0000000 --- a/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php +++ /dev/null @@ -1,147 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -/** - * Tests URLs against no_proxy patterns. - */ -class NoProxyPattern -{ - /** - * @var string[] - */ - protected $rules = array(); - - /** - * @param string $pattern no_proxy pattern - */ - public function __construct($pattern) - { - $this->rules = preg_split("/[\s,]+/", $pattern); - } - - /** - * Test a URL against the stored pattern. - * - * @param string $url - * - * @return bool true if the URL matches one of the rules. - */ - public function test($url) - { - $host = parse_url($url, PHP_URL_HOST); - $port = parse_url($url, PHP_URL_PORT); - - if (empty($port)) { - switch (parse_url($url, PHP_URL_SCHEME)) { - case 'http': - $port = 80; - break; - case 'https': - $port = 443; - break; - } - } - - foreach ($this->rules as $rule) { - if ($rule == '*') { - return true; - } - - $match = false; - - list($ruleHost) = explode(':', $rule); - list($base) = explode('/', $ruleHost); - - if (filter_var($base, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { - // ip or cidr match - - if (!isset($ip)) { - $ip = gethostbyname($host); - } - - if (strpos($ruleHost, '/') === false) { - $match = $ip === $ruleHost; - } else { - // gethostbyname() failed to resolve $host to an ip, so we assume - // it must be proxied to let the proxy's DNS resolve it - if ($ip === $host) { - $match = false; - } else { - // match resolved IP against the rule - $match = self::inCIDRBlock($ruleHost, $ip); - } - } - } else { - // match end of domain - - $haystack = '.' . trim($host, '.') . '.'; - $needle = '.'. trim($ruleHost, '.') .'.'; - $match = stripos(strrev($haystack), strrev($needle)) === 0; - } - - // final port check - if ($match && strpos($rule, ':') !== false) { - list(, $rulePort) = explode(':', $rule); - if (!empty($rulePort) && $port != $rulePort) { - $match = false; - } - } - - if ($match) { - return true; - } - } - - return false; - } - - /** - * Check an IP address against a CIDR - * - * http://framework.zend.com/svn/framework/extras/incubator/library/ZendX/Whois/Adapter/Cidr.php - * - * @param string $cidr IPv4 block in CIDR notation - * @param string $ip IPv4 address - * - * @return bool - */ - private static function inCIDRBlock($cidr, $ip) - { - // Get the base and the bits from the CIDR - list($base, $bits) = explode('/', $cidr); - - // Now split it up into it's classes - list($a, $b, $c, $d) = explode('.', $base); - - // Now do some bit shifting/switching to convert to ints - $i = ($a << 24) + ($b << 16) + ($c << 8) + $d; - $mask = $bits == 0 ? 0 : (~0 << (32 - $bits)); - - // Here's our lowest int - $low = $i & $mask; - - // Here's our highest int - $high = $i | (~$mask & 0xFFFFFFFF); - - // Now split the ip we're checking against up into classes - list($a, $b, $c, $d) = explode('.', $ip); - - // Now convert the ip we're checking against to an int - $check = ($a << 24) + ($b << 16) + ($c << 8) + $d; - - // If the ip is within the range, including highest/lowest values, - // then it's within the CIDR range - return $check >= $low && $check <= $high; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/PackageSorter.php b/vendor/composer/composer/src/Composer/Util/PackageSorter.php deleted file mode 100644 index 8d8c9a0..0000000 --- a/vendor/composer/composer/src/Composer/Util/PackageSorter.php +++ /dev/null @@ -1,92 +0,0 @@ -getRequires(), $package->getDevRequires()) as $link) { /** @var Link $link */ - $target = $link->getTarget(); - $usageList[$target][] = $package->getName(); - } - } - $computing = array(); - $computed = array(); - $computeImportance = function ($name) use (&$computeImportance, &$computing, &$computed, $usageList) { - // reusing computed importance - if (isset($computed[$name])) { - return $computed[$name]; - } - - // canceling circular dependency - if (isset($computing[$name])) { - return 0; - } - - $computing[$name] = true; - $weight = 0; - - if (isset($usageList[$name])) { - foreach ($usageList[$name] as $user) { - $weight -= 1 - $computeImportance($user); - } - } - - unset($computing[$name]); - $computed[$name] = $weight; - - return $weight; - }; - - $weightList = array(); - - foreach ($packages as $name => $package) { - $weight = $computeImportance($name); - $weightList[$name] = $weight; - } - - $stable_sort = function (&$array) { - static $transform, $restore; - - $i = 0; - - if (!$transform) { - $transform = function (&$v, $k) use (&$i) { - $v = array($v, ++$i, $k, $v); - }; - - $restore = function (&$v) { - $v = $v[3]; - }; - } - - array_walk($array, $transform); - asort($array); - array_walk($array, $restore); - }; - - $stable_sort($weightList); - - $sortedPackages = array(); - - foreach (array_keys($weightList) as $name) { - $sortedPackages[] = $packages[$name]; - } - return $sortedPackages; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Perforce.php b/vendor/composer/composer/src/Composer/Util/Perforce.php deleted file mode 100644 index 52080d6..0000000 --- a/vendor/composer/composer/src/Composer/Util/Perforce.php +++ /dev/null @@ -1,579 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\IO\IOInterface; -use Symfony\Component\Process\Process; - -/** - * @author Matt Whittom - */ -class Perforce -{ - protected $path; - protected $p4Depot; - protected $p4Client; - protected $p4User; - protected $p4Password; - protected $p4Port; - protected $p4Stream; - protected $p4ClientSpec; - protected $p4DepotType; - protected $p4Branch; - protected $process; - protected $uniquePerforceClientName; - protected $windowsFlag; - protected $commandResult; - - protected $io; - - protected $filesystem; - - public function __construct($repoConfig, $port, $path, ProcessExecutor $process, $isWindows, IOInterface $io) - { - $this->windowsFlag = $isWindows; - $this->p4Port = $port; - $this->initializePath($path); - $this->process = $process; - $this->initialize($repoConfig); - $this->io = $io; - } - - public static function create($repoConfig, $port, $path, ProcessExecutor $process, IOInterface $io) - { - return new Perforce($repoConfig, $port, $path, $process, Platform::isWindows(), $io); - } - - public static function checkServerExists($url, ProcessExecutor $processExecutor) - { - $output = null; - - return 0 === $processExecutor->execute('p4 -p ' . ProcessExecutor::escape($url) . ' info -s', $output); - } - - public function initialize($repoConfig) - { - $this->uniquePerforceClientName = $this->generateUniquePerforceClientName(); - if (!$repoConfig) { - return; - } - if (isset($repoConfig['unique_perforce_client_name'])) { - $this->uniquePerforceClientName = $repoConfig['unique_perforce_client_name']; - } - - if (isset($repoConfig['depot'])) { - $this->p4Depot = $repoConfig['depot']; - } - if (isset($repoConfig['branch'])) { - $this->p4Branch = $repoConfig['branch']; - } - if (isset($repoConfig['p4user'])) { - $this->p4User = $repoConfig['p4user']; - } else { - $this->p4User = $this->getP4variable('P4USER'); - } - if (isset($repoConfig['p4password'])) { - $this->p4Password = $repoConfig['p4password']; - } - } - - public function initializeDepotAndBranch($depot, $branch) - { - if (isset($depot)) { - $this->p4Depot = $depot; - } - if (isset($branch)) { - $this->p4Branch = $branch; - } - } - - public function generateUniquePerforceClientName() - { - return gethostname() . "_" . time(); - } - - public function cleanupClientSpec() - { - $client = $this->getClient(); - $task = 'client -d ' . ProcessExecutor::escape($client); - $useP4Client = false; - $command = $this->generateP4Command($task, $useP4Client); - $this->executeCommand($command); - $clientSpec = $this->getP4ClientSpec(); - $fileSystem = $this->getFilesystem(); - $fileSystem->remove($clientSpec); - } - - protected function executeCommand($command) - { - $this->commandResult = ''; - - return $this->process->execute($command, $this->commandResult); - } - - public function getClient() - { - if (!isset($this->p4Client)) { - $cleanStreamName = str_replace(array('//', '/', '@'), array('', '_', ''), $this->getStream()); - $this->p4Client = 'composer_perforce_' . $this->uniquePerforceClientName . '_' . $cleanStreamName; - } - - return $this->p4Client; - } - - protected function getPath() - { - return $this->path; - } - - public function initializePath($path) - { - $this->path = $path; - $fs = $this->getFilesystem(); - $fs->ensureDirectoryExists($path); - } - - protected function getPort() - { - return $this->p4Port; - } - - public function setStream($stream) - { - $this->p4Stream = $stream; - $index = strrpos($stream, '/'); - //Stream format is //depot/stream, while non-streaming depot is //depot - if ($index > 2) { - $this->p4DepotType = 'stream'; - } - } - - public function isStream() - { - return (strcmp($this->p4DepotType, 'stream') === 0); - } - - public function getStream() - { - if (!isset($this->p4Stream)) { - if ($this->isStream()) { - $this->p4Stream = '//' . $this->p4Depot . '/' . $this->p4Branch; - } else { - $this->p4Stream = '//' . $this->p4Depot; - } - } - - return $this->p4Stream; - } - - public function getStreamWithoutLabel($stream) - { - $index = strpos($stream, '@'); - if ($index === false) { - return $stream; - } - - return substr($stream, 0, $index); - } - - public function getP4ClientSpec() - { - return $this->path . '/' . $this->getClient() . '.p4.spec'; - } - - public function getUser() - { - return $this->p4User; - } - - public function setUser($user) - { - $this->p4User = $user; - } - - public function queryP4User() - { - $this->getUser(); - if (strlen($this->p4User) > 0) { - return; - } - $this->p4User = $this->getP4variable('P4USER'); - if (strlen($this->p4User) > 0) { - return; - } - $this->p4User = $this->io->ask('Enter P4 User:'); - if ($this->windowsFlag) { - $command = 'p4 set P4USER=' . $this->p4User; - } else { - $command = 'export P4USER=' . $this->p4User; - } - $this->executeCommand($command); - } - - protected function getP4variable($name) - { - if ($this->windowsFlag) { - $command = 'p4 set'; - $this->executeCommand($command); - $result = trim($this->commandResult); - $resArray = explode(PHP_EOL, $result); - foreach ($resArray as $line) { - $fields = explode('=', $line); - if (strcmp($name, $fields[0]) == 0) { - $index = strpos($fields[1], ' '); - if ($index === false) { - $value = $fields[1]; - } else { - $value = substr($fields[1], 0, $index); - } - $value = trim($value); - - return $value; - } - } - - return null; - } - - $command = 'echo $' . $name; - $this->executeCommand($command); - $result = trim($this->commandResult); - - return $result; - } - - public function queryP4Password() - { - if (isset($this->p4Password)) { - return $this->p4Password; - } - $password = $this->getP4variable('P4PASSWD'); - if (strlen($password) <= 0) { - $password = $this->io->askAndHideAnswer('Enter password for Perforce user ' . $this->getUser() . ': '); - } - $this->p4Password = $password; - - return $password; - } - - public function generateP4Command($command, $useClient = true) - { - $p4Command = 'p4 '; - $p4Command .= '-u ' . $this->getUser() . ' '; - if ($useClient) { - $p4Command .= '-c ' . $this->getClient() . ' '; - } - $p4Command = $p4Command . '-p ' . $this->getPort() . ' ' . $command; - - return $p4Command; - } - - public function isLoggedIn() - { - $command = $this->generateP4Command('login -s', false); - $exitCode = $this->executeCommand($command); - if ($exitCode) { - $errorOutput = $this->process->getErrorOutput(); - $index = strpos($errorOutput, $this->getUser()); - if ($index === false) { - $index = strpos($errorOutput, 'p4'); - if ($index === false) { - return false; - } - throw new \Exception('p4 command not found in path: ' . $errorOutput); - } - throw new \Exception('Invalid user name: ' . $this->getUser()); - } - - return true; - } - - public function connectClient() - { - $p4CreateClientCommand = $this->generateP4Command( - 'client -i < ' . str_replace(" ", "\\ ", $this->getP4ClientSpec()) - ); - $this->executeCommand($p4CreateClientCommand); - } - - public function syncCodeBase($sourceReference) - { - $prevDir = getcwd(); - chdir($this->path); - $p4SyncCommand = $this->generateP4Command('sync -f '); - if (null !== $sourceReference) { - $p4SyncCommand .= '@' . $sourceReference; - } - $this->executeCommand($p4SyncCommand); - chdir($prevDir); - } - - public function writeClientSpecToFile($spec) - { - fwrite($spec, 'Client: ' . $this->getClient() . PHP_EOL . PHP_EOL); - fwrite($spec, 'Update: ' . date('Y/m/d H:i:s') . PHP_EOL . PHP_EOL); - fwrite($spec, 'Access: ' . date('Y/m/d H:i:s') . PHP_EOL); - fwrite($spec, 'Owner: ' . $this->getUser() . PHP_EOL . PHP_EOL); - fwrite($spec, 'Description:' . PHP_EOL); - fwrite($spec, ' Created by ' . $this->getUser() . ' from composer.' . PHP_EOL . PHP_EOL); - fwrite($spec, 'Root: ' . $this->getPath() . PHP_EOL . PHP_EOL); - fwrite($spec, 'Options: noallwrite noclobber nocompress unlocked modtime rmdir' . PHP_EOL . PHP_EOL); - fwrite($spec, 'SubmitOptions: revertunchanged' . PHP_EOL . PHP_EOL); - fwrite($spec, 'LineEnd: local' . PHP_EOL . PHP_EOL); - if ($this->isStream()) { - fwrite($spec, 'Stream:' . PHP_EOL); - fwrite($spec, ' ' . $this->getStreamWithoutLabel($this->p4Stream) . PHP_EOL); - } else { - fwrite( - $spec, - 'View: ' . $this->getStream() . '/... //' . $this->getClient() . '/... ' . PHP_EOL - ); - } - } - - public function writeP4ClientSpec() - { - $clientSpec = $this->getP4ClientSpec(); - $spec = fopen($clientSpec, 'w'); - try { - $this->writeClientSpecToFile($spec); - } catch (\Exception $e) { - fclose($spec); - throw $e; - } - fclose($spec); - } - - protected function read($pipe, $name) - { - if (feof($pipe)) { - return; - } - $line = fgets($pipe); - while ($line !== false) { - $line = fgets($pipe); - } - } - - public function windowsLogin($password) - { - $command = $this->generateP4Command(' login -a'); - - // TODO in v3 generate command as an array - if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { - $process = Process::fromShellCommandline($command, null, null, $password); - } else { - $process = new Process($command, null, null, $password); - } - - return $process->run(); - } - - public function p4Login() - { - $this->queryP4User(); - if (!$this->isLoggedIn()) { - $password = $this->queryP4Password(); - if ($this->windowsFlag) { - $this->windowsLogin($password); - } else { - $command = 'echo ' . ProcessExecutor::escape($password) . ' | ' . $this->generateP4Command(' login -a', false); - $exitCode = $this->executeCommand($command); - $result = trim($this->commandResult); - if ($exitCode) { - throw new \Exception("Error logging in:" . $this->process->getErrorOutput()); - } - } - } - } - - public function getComposerInformation($identifier) - { - $composerFileContent = $this->getFileContent('composer.json', $identifier); - - if (!$composerFileContent) { - return; - } - - return json_decode($composerFileContent, true); - } - - public function getFileContent($file, $identifier) - { - $path = $this->getFilePath($file, $identifier); - - $command = $this->generateP4Command(' print ' . ProcessExecutor::escape($path)); - $this->executeCommand($command); - $result = $this->commandResult; - - if (!trim($result)) { - return null; - } - - return $result; - } - - public function getFilePath($file, $identifier) - { - $index = strpos($identifier, '@'); - if ($index === false) { - $path = $identifier. '/' . $file; - - return $path; - } - - $path = substr($identifier, 0, $index) . '/' . $file . substr($identifier, $index); - $command = $this->generateP4Command(' files ' . ProcessExecutor::escape($path), false); - $this->executeCommand($command); - $result = $this->commandResult; - $index2 = strpos($result, 'no such file(s).'); - if ($index2 === false) { - $index3 = strpos($result, 'change'); - if ($index3 !== false) { - $phrase = trim(substr($result, $index3)); - $fields = explode(' ', $phrase); - - return substr($identifier, 0, $index) . '/' . $file . '@' . $fields[1]; - } - } - - return null; - } - - public function getBranches() - { - $possibleBranches = array(); - if (!$this->isStream()) { - $possibleBranches[$this->p4Branch] = $this->getStream(); - } else { - $command = $this->generateP4Command('streams '.ProcessExecutor::escape('//' . $this->p4Depot . '/...')); - $this->executeCommand($command); - $result = $this->commandResult; - $resArray = explode(PHP_EOL, $result); - foreach ($resArray as $line) { - $resBits = explode(' ', $line); - if (count($resBits) > 4) { - $branch = preg_replace('/[^A-Za-z0-9 ]/', '', $resBits[4]); - $possibleBranches[$branch] = $resBits[1]; - } - } - } - $command = $this->generateP4Command('changes '. ProcessExecutor::escape($this->getStream() . '/...'), false); - $this->executeCommand($command); - $result = $this->commandResult; - $resArray = explode(PHP_EOL, $result); - $lastCommit = $resArray[0]; - $lastCommitArr = explode(' ', $lastCommit); - $lastCommitNum = $lastCommitArr[1]; - - $branches = array('master' => $possibleBranches[$this->p4Branch] . '@'. $lastCommitNum); - - return $branches; - } - - public function getTags() - { - $command = $this->generateP4Command('labels'); - $this->executeCommand($command); - $result = $this->commandResult; - $resArray = explode(PHP_EOL, $result); - $tags = array(); - foreach ($resArray as $line) { - if (strpos($line, 'Label') !== false) { - $fields = explode(' ', $line); - $tags[$fields[1]] = $this->getStream() . '@' . $fields[1]; - } - } - - return $tags; - } - - public function checkStream() - { - $command = $this->generateP4Command('depots', false); - $this->executeCommand($command); - $result = $this->commandResult; - $resArray = explode(PHP_EOL, $result); - foreach ($resArray as $line) { - if (strpos($line, 'Depot') !== false) { - $fields = explode(' ', $line); - if (strcmp($this->p4Depot, $fields[1]) === 0) { - $this->p4DepotType = $fields[3]; - - return $this->isStream(); - } - } - } - - return false; - } - - /** - * @param string $reference - * @return mixed|null - */ - protected function getChangeList($reference) - { - $index = strpos($reference, '@'); - if ($index === false) { - return null; - } - $label = substr($reference, $index); - $command = $this->generateP4Command(' changes -m1 ' . ProcessExecutor::escape($label)); - $this->executeCommand($command); - $changes = $this->commandResult; - if (strpos($changes, 'Change') !== 0) { - return null; - } - $fields = explode(' ', $changes); - - return $fields[1]; - } - - /** - * @param string $fromReference - * @param string $toReference - * @return mixed|null - */ - public function getCommitLogs($fromReference, $toReference) - { - $fromChangeList = $this->getChangeList($fromReference); - if ($fromChangeList === null) { - return null; - } - $toChangeList = $this->getChangeList($toReference); - if ($toChangeList === null) { - return null; - } - $index = strpos($fromReference, '@'); - $main = substr($fromReference, 0, $index) . '/...'; - $command = $this->generateP4Command('filelog ' . ProcessExecutor::escape($main . '@' . $fromChangeList. ',' . $toChangeList)); - $this->executeCommand($command); - - return $this->commandResult; - } - - public function getFilesystem() - { - if (empty($this->filesystem)) { - $this->filesystem = new Filesystem($this->process); - } - - return $this->filesystem; - } - - public function setFilesystem(Filesystem $fs) - { - $this->filesystem = $fs; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Platform.php b/vendor/composer/composer/src/Composer/Util/Platform.php deleted file mode 100644 index 60bf9ef..0000000 --- a/vendor/composer/composer/src/Composer/Util/Platform.php +++ /dev/null @@ -1,92 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -/** - * Platform helper for uniform platform-specific tests. - * - * @author Niels Keurentjes - */ -class Platform -{ - /** - * Parses tildes and environment variables in paths. - * - * @param string $path - * @return string - */ - public static function expandPath($path) - { - if (preg_match('#^~[\\/]#', $path)) { - return self::getUserDirectory() . substr($path, 1); - } - - return preg_replace_callback('#^(\$|(?P%))(?P\w++)(?(percent)%)(?P.*)#', function ($matches) { - // Treat HOME as an alias for USERPROFILE on Windows for legacy reasons - if (Platform::isWindows() && $matches['var'] == 'HOME') { - return (getenv('HOME') ?: getenv('USERPROFILE')) . $matches['path']; - } - - return getenv($matches['var']) . $matches['path']; - }, $path); - } - - /** - * @throws \RuntimeException If the user home could not reliably be determined - * @return string The formal user home as detected from environment parameters - */ - public static function getUserDirectory() - { - if (false !== ($home = getenv('HOME'))) { - return $home; - } - - if (self::isWindows() && false !== ($home = getenv('USERPROFILE'))) { - return $home; - } - - if (function_exists('posix_getuid') && function_exists('posix_getpwuid')) { - $info = posix_getpwuid(posix_getuid()); - - return $info['dir']; - } - - throw new \RuntimeException('Could not determine user directory'); - } - - /** - * @return bool Whether the host machine is running a Windows OS - */ - public static function isWindows() - { - return defined('PHP_WINDOWS_VERSION_BUILD'); - } - - /** - * @param string $str - * @return int return a guaranteed binary length of the string, regardless of silly mbstring configs - */ - public static function strlen($str) - { - static $useMbString = null; - if (null === $useMbString) { - $useMbString = function_exists('mb_strlen') && ini_get('mbstring.func_overload'); - } - - if ($useMbString) { - return mb_strlen($str, '8bit'); - } - - return strlen($str); - } -} diff --git a/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php b/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php deleted file mode 100644 index 83f19cf..0000000 --- a/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php +++ /dev/null @@ -1,201 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\IO\IOInterface; -use Symfony\Component\Process\Process; -use Symfony\Component\Process\ProcessUtils; - -/** - * @author Robert Schönthal - */ -class ProcessExecutor -{ - protected static $timeout = 300; - - protected $captureOutput; - protected $errorOutput; - protected $io; - - public function __construct(IOInterface $io = null) - { - $this->io = $io; - } - - /** - * runs a process on the commandline - * - * @param string $command the command to execute - * @param mixed $output the output will be written into this var if passed by ref - * if a callable is passed it will be used as output handler - * @param string $cwd the working directory - * @return int statuscode - */ - public function execute($command, &$output = null, $cwd = null) - { - if ($this->io && $this->io->isDebug()) { - $safeCommand = preg_replace_callback('{://(?P[^:/\s]+):(?P[^@\s/]+)@}i', function ($m) { - if (preg_match('{^[a-f0-9]{12,}$}', $m['user'])) { - return '://***:***@'; - } - - return '://'.$m['user'].':***@'; - }, $command); - $safeCommand = preg_replace("{--password (.*[^\\\\]\') }", '--password \'***\' ', $safeCommand); - $this->io->writeError('Executing command ('.($cwd ?: 'CWD').'): '.$safeCommand); - } - - // make sure that null translate to the proper directory in case the dir is a symlink - // and we call a git command, because msysgit does not handle symlinks properly - if (null === $cwd && Platform::isWindows() && false !== strpos($command, 'git') && getcwd()) { - $cwd = realpath(getcwd()); - } - - $this->captureOutput = func_num_args() > 1; - $this->errorOutput = null; - - // TODO in v3, commands should be passed in as arrays of cmd + args - if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { - $process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); - } else { - $process = new Process($command, $cwd, null, null, static::getTimeout()); - } - - $callback = is_callable($output) ? $output : array($this, 'outputHandler'); - $process->run($callback); - - if ($this->captureOutput && !is_callable($output)) { - $output = $process->getOutput(); - } - - $this->errorOutput = $process->getErrorOutput(); - - return $process->getExitCode(); - } - - public function splitLines($output) - { - $output = trim($output); - - return ((string) $output === '') ? array() : preg_split('{\r?\n}', $output); - } - - /** - * Get any error output from the last command - * - * @return string - */ - public function getErrorOutput() - { - return $this->errorOutput; - } - - public function outputHandler($type, $buffer) - { - if ($this->captureOutput) { - return; - } - - if (null === $this->io) { - echo $buffer; - - return; - } - - if (method_exists($this->io, 'writeRaw')) { - if (Process::ERR === $type) { - $this->io->writeErrorRaw($buffer, false); - } else { - $this->io->writeRaw($buffer, false); - } - } else { - if (Process::ERR === $type) { - $this->io->writeError($buffer, false); - } else { - $this->io->write($buffer, false); - } - } - } - - public static function getTimeout() - { - return static::$timeout; - } - - public static function setTimeout($timeout) - { - static::$timeout = $timeout; - } - - /** - * Escapes a string to be used as a shell argument. - * - * @param string $argument The argument that will be escaped - * - * @return string The escaped argument - */ - public static function escape($argument) - { - return self::escapeArgument($argument); - } - - /** - * Copy of ProcessUtils::escapeArgument() that is deprecated in Symfony 3.3 and removed in Symfony 4. - * - * @param string $argument - * - * @return string - */ - private static function escapeArgument($argument) - { - //Fix for PHP bug #43784 escapeshellarg removes % from given string - //Fix for PHP bug #49446 escapeshellarg doesn't work on Windows - //@see https://bugs.php.net/bug.php?id=43784 - //@see https://bugs.php.net/bug.php?id=49446 - if ('\\' === DIRECTORY_SEPARATOR) { - if ((string) $argument === '') { - return escapeshellarg($argument); - } - - $escapedArgument = ''; - $quote = false; - foreach (preg_split('/(")/', $argument, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) as $part) { - if ('"' === $part) { - $escapedArgument .= '\\"'; - } elseif (self::isSurroundedBy($part, '%')) { - // Avoid environment variable expansion - $escapedArgument .= '^%"'.substr($part, 1, -1).'"^%'; - } else { - // escape trailing backslash - if ('\\' === substr($part, -1)) { - $part .= '\\'; - } - $quote = true; - $escapedArgument .= $part; - } - } - if ($quote) { - $escapedArgument = '"'.$escapedArgument.'"'; - } - - return $escapedArgument; - } - - return "'".str_replace("'", "'\\''", $argument)."'"; - } - - private static function isSurroundedBy($arg, $char) - { - return 2 < strlen($arg) && $char === $arg[0] && $char === $arg[strlen($arg) - 1]; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php b/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php deleted file mode 100644 index 478ef12..0000000 --- a/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php +++ /dev/null @@ -1,1133 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Config; -use Composer\Composer; -use Composer\Semver\Constraint\Constraint; -use Composer\Package\Version\VersionParser; -use Composer\IO\IOInterface; -use Composer\Downloader\TransportException; -use Composer\CaBundle\CaBundle; -use Psr\Log\LoggerInterface; - -/** - * @author François Pluchino - * @author Jordi Boggiano - * @author Nils Adermann - */ -class RemoteFilesystem -{ - private $io; - private $config; - private $scheme; - private $bytesMax; - private $originUrl; - private $fileUrl; - private $fileName; - private $retry; - private $progress; - private $lastProgress; - private $options = array(); - private $peerCertificateMap = array(); - private $disableTls = false; - private $retryAuthFailure; - private $lastHeaders; - private $storeAuth; - private $degradedMode = false; - private $redirects; - private $maxRedirects = 20; - - /** - * Constructor. - * - * @param IOInterface $io The IO instance - * @param Config $config The config - * @param array $options The options - * @param bool $disableTls - */ - public function __construct(IOInterface $io, Config $config = null, array $options = array(), $disableTls = false) - { - $this->io = $io; - - // Setup TLS options - // The cafile option can be set via config.json - if ($disableTls === false) { - $this->options = $this->getTlsDefaults($options); - } else { - $this->disableTls = true; - } - - // handle the other externally set options normally. - $this->options = array_replace_recursive($this->options, $options); - $this->config = $config; - } - - /** - * Copy the remote file in local. - * - * @param string $originUrl The origin URL - * @param string $fileUrl The file URL - * @param string $fileName the local filename - * @param bool $progress Display the progression - * @param array $options Additional context options - * - * @return bool true - */ - public function copy($originUrl, $fileUrl, $fileName, $progress = true, $options = array()) - { - return $this->get($originUrl, $fileUrl, $options, $fileName, $progress); - } - - /** - * Get the content. - * - * @param string $originUrl The origin URL - * @param string $fileUrl The file URL - * @param bool $progress Display the progression - * @param array $options Additional context options - * - * @return bool|string The content - */ - public function getContents($originUrl, $fileUrl, $progress = true, $options = array()) - { - return $this->get($originUrl, $fileUrl, $options, null, $progress); - } - - /** - * Retrieve the options set in the constructor - * - * @return array Options - */ - public function getOptions() - { - return $this->options; - } - - /** - * Merges new options - * - * @param array $options - */ - public function setOptions(array $options) - { - $this->options = array_replace_recursive($this->options, $options); - } - - /** - * Check is disable TLS. - * - * @return bool - */ - public function isTlsDisabled() - { - return $this->disableTls === true; - } - - /** - * Returns the headers of the last request - * - * @return array - */ - public function getLastHeaders() - { - return $this->lastHeaders; - } - - /** - * @param array $headers array of returned headers like from getLastHeaders() - * @param string $name header name (case insensitive) - * @return string|null - */ - public function findHeaderValue(array $headers, $name) - { - $value = null; - foreach ($headers as $header) { - if (preg_match('{^'.$name.':\s*(.+?)\s*$}i', $header, $match)) { - $value = $match[1]; - } elseif (preg_match('{^HTTP/}i', $header)) { - // In case of redirects, http_response_headers contains the headers of all responses - // so we reset the flag when a new response is being parsed as we are only interested in the last response - $value = null; - } - } - - return $value; - } - - /** - * @param array $headers array of returned headers like from getLastHeaders() - * @return int|null - */ - public function findStatusCode(array $headers) - { - $value = null; - foreach ($headers as $header) { - if (preg_match('{^HTTP/\S+ (\d+)}i', $header, $match)) { - // In case of redirects, http_response_headers contains the headers of all responses - // so we can not return directly and need to keep iterating - $value = (int) $match[1]; - } - } - - return $value; - } - - /** - * @param array $headers array of returned headers like from getLastHeaders() - * @return string|null - */ - public function findStatusMessage(array $headers) - { - $value = null; - foreach ($headers as $header) { - if (preg_match('{^HTTP/\S+ \d+}i', $header)) { - // In case of redirects, http_response_headers contains the headers of all responses - // so we can not return directly and need to keep iterating - $value = $header; - } - } - - return $value; - } - - /** - * Get file content or copy action. - * - * @param string $originUrl The origin URL - * @param string $fileUrl The file URL - * @param array $additionalOptions context options - * @param string $fileName the local filename - * @param bool $progress Display the progression - * - * @throws TransportException|\Exception - * @throws TransportException When the file could not be downloaded - * - * @return bool|string - */ - protected function get($originUrl, $fileUrl, $additionalOptions = array(), $fileName = null, $progress = true) - { - if (strpos($originUrl, '.github.com') === (strlen($originUrl) - 11)) { - $originUrl = 'github.com'; - } - - // Gitlab can be installed in a non-root context (i.e. gitlab.com/foo). When downloading archives the originUrl - // is the host without the path, so we look for the registered gitlab-domains matching the host here - if ( - $this->config - && is_array($this->config->get('gitlab-domains')) - && false === strpos($originUrl, '/') - && !in_array($originUrl, $this->config->get('gitlab-domains')) - ) { - foreach ($this->config->get('gitlab-domains') as $gitlabDomain) { - if (0 === strpos($gitlabDomain, $originUrl)) { - $originUrl = $gitlabDomain; - break; - } - } - unset($gitlabDomain); - } - - $this->scheme = parse_url($fileUrl, PHP_URL_SCHEME); - $this->bytesMax = 0; - $this->originUrl = $originUrl; - $this->fileUrl = $fileUrl; - $this->fileName = $fileName; - $this->progress = $progress; - $this->lastProgress = null; - $this->retryAuthFailure = true; - $this->lastHeaders = array(); - $this->redirects = 1; // The first request counts. - - // capture username/password from URL if there is one - if (preg_match('{^https?://([^:/]+):([^@/]+)@([^/]+)}i', $fileUrl, $match)) { - $this->io->setAuthentication($originUrl, rawurldecode($match[1]), rawurldecode($match[2])); - } - - $tempAdditionalOptions = $additionalOptions; - if (isset($tempAdditionalOptions['retry-auth-failure'])) { - $this->retryAuthFailure = (bool) $tempAdditionalOptions['retry-auth-failure']; - - unset($tempAdditionalOptions['retry-auth-failure']); - } - - $isRedirect = false; - if (isset($tempAdditionalOptions['redirects'])) { - $this->redirects = $tempAdditionalOptions['redirects']; - $isRedirect = true; - - unset($tempAdditionalOptions['redirects']); - } - - $options = $this->getOptionsForUrl($originUrl, $tempAdditionalOptions); - unset($tempAdditionalOptions); - - $origFileUrl = $fileUrl; - - if (isset($options['github-token'])) { - // only add the access_token if it is actually a github URL (in case we were redirected to S3) - if (preg_match('{^https?://([a-z0-9-]+\.)*github\.com/}', $fileUrl)) { - $options['http']['header'][] = 'Authorization: token '.$options['github-token']; - } - unset($options['github-token']); - } - - if (isset($options['gitlab-token'])) { - $fileUrl .= (false === strpos($fileUrl, '?') ? '?' : '&') . 'access_token='.$options['gitlab-token']; - unset($options['gitlab-token']); - } - - if (isset($options['http'])) { - $options['http']['ignore_errors'] = true; - } - - if ($this->degradedMode && substr($fileUrl, 0, 26) === 'http://repo.packagist.org/') { - // access packagist using the resolved IPv4 instead of the hostname to force IPv4 protocol - $fileUrl = 'http://' . gethostbyname('repo.packagist.org') . substr($fileUrl, 20); - $degradedPackagist = true; - } - - $ctx = StreamContextFactory::getContext($fileUrl, $options, array('notification' => array($this, 'callbackGet'))); - - $actualContextOptions = stream_context_get_options($ctx); - $usingProxy = !empty($actualContextOptions['http']['proxy']) ? ' using proxy ' . $actualContextOptions['http']['proxy'] : ''; - $this->io->writeError((substr($origFileUrl, 0, 4) === 'http' ? 'Downloading ' : 'Reading ') . $this->stripCredentialsFromUrl($origFileUrl) . $usingProxy, true, IOInterface::DEBUG); - unset($origFileUrl, $actualContextOptions); - - // Check for secure HTTP, but allow insecure Packagist calls to $hashed providers as file integrity is verified with sha256 - if ((!preg_match('{^http://(repo\.)?packagist\.org/p/}', $fileUrl) || (false === strpos($fileUrl, '$') && false === strpos($fileUrl, '%24'))) && empty($degradedPackagist) && $this->config) { - $this->config->prohibitUrlByConfig($fileUrl, $this->io); - } - - if ($this->progress && !$isRedirect) { - $this->io->writeError("Downloading (connecting...)", false); - } - - $errorMessage = ''; - $errorCode = 0; - $result = false; - set_error_handler(function ($code, $msg) use (&$errorMessage) { - if ($errorMessage) { - $errorMessage .= "\n"; - } - $errorMessage .= preg_replace('{^file_get_contents\(.*?\): }', '', $msg); - - return true; - }); - try { - $result = $this->getRemoteContents($originUrl, $fileUrl, $ctx, $http_response_header); - - if (!empty($http_response_header[0])) { - $statusCode = $this->findStatusCode($http_response_header); - if ($statusCode >= 400 && $this->findHeaderValue($http_response_header, 'content-type') === 'application/json') { - self::outputWarnings($this->io, $originUrl, json_decode($result, true)); - } - - if (in_array($statusCode, array(401, 403)) && $this->retryAuthFailure) { - $this->promptAuthAndRetry($statusCode, $this->findStatusMessage($http_response_header), null, $http_response_header); - } - } - - $contentLength = !empty($http_response_header[0]) ? $this->findHeaderValue($http_response_header, 'content-length') : null; - if ($contentLength && Platform::strlen($result) < $contentLength) { - // alas, this is not possible via the stream callback because STREAM_NOTIFY_COMPLETED is documented, but not implemented anywhere in PHP - $e = new TransportException('Content-Length mismatch, received '.Platform::strlen($result).' bytes out of the expected '.$contentLength); - $e->setHeaders($http_response_header); - $e->setStatusCode($this->findStatusCode($http_response_header)); - $e->setResponse($result); - $this->io->writeError('Content-Length mismatch, received '.Platform::strlen($result).' out of '.$contentLength.' bytes: (' . base64_encode($result).')', true, IOInterface::DEBUG); - - throw $e; - } - - if (PHP_VERSION_ID < 50600 && !empty($options['ssl']['peer_fingerprint'])) { - // Emulate fingerprint validation on PHP < 5.6 - $params = stream_context_get_params($ctx); - $expectedPeerFingerprint = $options['ssl']['peer_fingerprint']; - $peerFingerprint = TlsHelper::getCertificateFingerprint($params['options']['ssl']['peer_certificate']); - - // Constant time compare??! - if ($expectedPeerFingerprint !== $peerFingerprint) { - throw new TransportException('Peer fingerprint did not match'); - } - } - } catch (\Exception $e) { - if ($e instanceof TransportException && !empty($http_response_header[0])) { - $e->setHeaders($http_response_header); - $e->setStatusCode($this->findStatusCode($http_response_header)); - } - if ($e instanceof TransportException && $result !== false) { - $e->setResponse($result); - } - $result = false; - } - if ($errorMessage && !filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { - $errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')'; - } - restore_error_handler(); - if (isset($e) && !$this->retry) { - if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { - $this->degradedMode = true; - $this->io->writeError(''); - $this->io->writeError(array( - ''.$e->getMessage().'', - 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', - )); - - return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); - } - - throw $e; - } - - $statusCode = null; - $contentType = null; - $locationHeader = null; - if (!empty($http_response_header[0])) { - $statusCode = $this->findStatusCode($http_response_header); - $contentType = $this->findHeaderValue($http_response_header, 'content-type'); - $locationHeader = $this->findHeaderValue($http_response_header, 'location'); - } - - // check for bitbucket login page asking to authenticate - if ($originUrl === 'bitbucket.org' - && !$this->isPublicBitBucketDownload($fileUrl) - && substr($fileUrl, -4) === '.zip' - && (!$locationHeader || substr($locationHeader, -4) !== '.zip') - && $contentType && preg_match('{^text/html\b}i', $contentType) - ) { - $result = false; - if ($this->retryAuthFailure) { - $this->promptAuthAndRetry(401); - } - } - - // check for gitlab 404 when downloading archives - if ($statusCode === 404 - && $this->config && in_array($originUrl, $this->config->get('gitlab-domains'), true) - && false !== strpos($fileUrl, 'archive.zip') - ) { - $result = false; - if ($this->retryAuthFailure) { - $this->promptAuthAndRetry(401); - } - } - - // handle 3xx redirects, 304 Not Modified is excluded - $hasFollowedRedirect = false; - if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $this->redirects < $this->maxRedirects) { - $hasFollowedRedirect = true; - $result = $this->handleRedirect($http_response_header, $additionalOptions, $result); - } - - // fail 4xx and 5xx responses and capture the response - if ($statusCode && $statusCode >= 400 && $statusCode <= 599) { - if (!$this->retry) { - if ($this->progress && !$this->retry && !$isRedirect) { - $this->io->overwriteError("Downloading (failed)", false); - } - - $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.$http_response_header[0].')', $statusCode); - $e->setHeaders($http_response_header); - $e->setResponse($result); - $e->setStatusCode($statusCode); - throw $e; - } - $result = false; - } - - if ($this->progress && !$this->retry && !$isRedirect) { - $this->io->overwriteError("Downloading (".($result === false ? 'failed' : '100%').")", false); - } - - // decode gzip - if ($result && extension_loaded('zlib') && substr($fileUrl, 0, 4) === 'http' && !$hasFollowedRedirect) { - $contentEncoding = $this->findHeaderValue($http_response_header, 'content-encoding'); - $decode = $contentEncoding && 'gzip' === strtolower($contentEncoding); - - if ($decode) { - try { - if (PHP_VERSION_ID >= 50400) { - $result = zlib_decode($result); - } else { - // work around issue with gzuncompress & co that do not work with all gzip checksums - $result = file_get_contents('compress.zlib://data:application/octet-stream;base64,'.base64_encode($result)); - } - - if (!$result) { - throw new TransportException('Failed to decode zlib stream'); - } - } catch (\Exception $e) { - if ($this->degradedMode) { - throw $e; - } - - $this->degradedMode = true; - $this->io->writeError(array( - '', - 'Failed to decode response: '.$e->getMessage().'', - 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', - )); - - return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); - } - } - } - - // handle copy command if download was successful - if (false !== $result && null !== $fileName && !$isRedirect) { - if ('' === $result) { - throw new TransportException('"'.$this->fileUrl.'" appears broken, and returned an empty 200 response'); - } - - $errorMessage = ''; - set_error_handler(function ($code, $msg) use (&$errorMessage) { - if ($errorMessage) { - $errorMessage .= "\n"; - } - $errorMessage .= preg_replace('{^file_put_contents\(.*?\): }', '', $msg); - - return true; - }); - $result = (bool) file_put_contents($fileName, $result); - restore_error_handler(); - if (false === $result) { - throw new TransportException('The "'.$this->fileUrl.'" file could not be written to '.$fileName.': '.$errorMessage); - } - } - - // Handle SSL cert match issues - if (false === $result && false !== strpos($errorMessage, 'Peer certificate') && PHP_VERSION_ID < 50600) { - // Certificate name error, PHP doesn't support subjectAltName on PHP < 5.6 - // The procedure to handle sAN for older PHP's is: - // - // 1. Open socket to remote server and fetch certificate (disabling peer - // validation because PHP errors without giving up the certificate.) - // - // 2. Verifying the domain in the URL against the names in the sAN field. - // If there is a match record the authority [host/port], certificate - // common name, and certificate fingerprint. - // - // 3. Retry the original request but changing the CN_match parameter to - // the common name extracted from the certificate in step 2. - // - // 4. To prevent any attempt at being hoodwinked by switching the - // certificate between steps 2 and 3 the fingerprint of the certificate - // presented in step 3 is compared against the one recorded in step 2. - if (CaBundle::isOpensslParseSafe()) { - $certDetails = $this->getCertificateCnAndFp($this->fileUrl, $options); - - if ($certDetails) { - $this->peerCertificateMap[$this->getUrlAuthority($this->fileUrl)] = $certDetails; - - $this->retry = true; - } - } else { - $this->io->writeError(''); - $this->io->writeError(sprintf( - 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', - PHP_VERSION - )); - } - } - - if ($this->retry) { - $this->retry = false; - - $result = $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); - - if ($this->storeAuth && $this->config) { - $authHelper = new AuthHelper($this->io, $this->config); - $authHelper->storeAuth($this->originUrl, $this->storeAuth); - $this->storeAuth = false; - } - - return $result; - } - - if (false === $result) { - $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded: '.$errorMessage, $errorCode); - if (!empty($http_response_header[0])) { - $e->setHeaders($http_response_header); - } - - if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { - $this->degradedMode = true; - $this->io->writeError(''); - $this->io->writeError(array( - ''.$e->getMessage().'', - 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', - )); - - return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); - } - - throw $e; - } - - if (!empty($http_response_header[0])) { - $this->lastHeaders = $http_response_header; - } - - return $result; - } - - /** - * Get contents of remote URL. - * - * @param string $originUrl The origin URL - * @param string $fileUrl The file URL - * @param resource $context The stream context - * - * @return string|false The response contents or false on failure - */ - protected function getRemoteContents($originUrl, $fileUrl, $context, array &$responseHeaders = null) - { - try { - $e = null; - $result = file_get_contents($fileUrl, false, $context); - } catch (\Throwable $e) { - } catch (\Exception $e) { - } - - $responseHeaders = isset($http_response_header) ? $http_response_header : array(); - - if (null !== $e) { - throw $e; - } - - return $result; - } - - /** - * Get notification action. - * - * @param int $notificationCode The notification code - * @param int $severity The severity level - * @param string $message The message - * @param int $messageCode The message code - * @param int $bytesTransferred The loaded size - * @param int $bytesMax The total size - * @throws TransportException - */ - protected function callbackGet($notificationCode, $severity, $message, $messageCode, $bytesTransferred, $bytesMax) - { - switch ($notificationCode) { - case STREAM_NOTIFY_FAILURE: - if (400 === $messageCode) { - // This might happen if your host is secured by ssl client certificate authentication - // but you do not send an appropriate certificate - throw new TransportException("The '" . $this->fileUrl . "' URL could not be accessed: " . $message, $messageCode); - } - break; - - case STREAM_NOTIFY_FILE_SIZE_IS: - $this->bytesMax = $bytesMax; - break; - - case STREAM_NOTIFY_PROGRESS: - if ($this->bytesMax > 0 && $this->progress) { - $progression = min(100, round($bytesTransferred / $this->bytesMax * 100)); - - if ((0 === $progression % 5) && 100 !== $progression && $progression !== $this->lastProgress) { - $this->lastProgress = $progression; - $this->io->overwriteError("Downloading ($progression%)", false); - } - } - break; - - default: - break; - } - } - - protected function promptAuthAndRetry($httpStatus, $reason = null, $warning = null, $headers = array()) - { - if ($this->config && in_array($this->originUrl, $this->config->get('github-domains'), true)) { - $gitHubUtil = new GitHub($this->io, $this->config, null); - $message = "\n"; - - $rateLimited = $gitHubUtil->isRateLimited($headers); - if ($rateLimited) { - $rateLimit = $gitHubUtil->getRateLimit($headers); - if ($this->io->hasAuthentication($this->originUrl)) { - $message = 'Review your configured GitHub OAuth token or enter a new one to go over the API rate limit.'; - } else { - $message = 'Create a GitHub OAuth token to go over the API rate limit.'; - } - - $message = sprintf( - 'GitHub API limit (%d calls/hr) is exhausted, could not fetch '.$this->fileUrl.'. '.$message.' You can also wait until %s for the rate limit to reset.', - $rateLimit['limit'], - $rateLimit['reset'] - )."\n"; - } else { - $message .= 'Could not fetch '.$this->fileUrl.', please '; - if ($this->io->hasAuthentication($this->originUrl)) { - $message .= 'review your configured GitHub OAuth token or enter a new one to access private repos'; - } else { - $message .= 'create a GitHub OAuth token to access private repos'; - } - } - - if (!$gitHubUtil->authorizeOAuth($this->originUrl) - && (!$this->io->isInteractive() || !$gitHubUtil->authorizeOAuthInteractively($this->originUrl, $message)) - ) { - throw new TransportException('Could not authenticate against '.$this->originUrl, 401); - } - } elseif ($this->config && in_array($this->originUrl, $this->config->get('gitlab-domains'), true)) { - $message = "\n".'Could not fetch '.$this->fileUrl.', enter your ' . $this->originUrl . ' credentials ' .($httpStatus === 401 ? 'to access private repos' : 'to go over the API rate limit'); - $gitLabUtil = new GitLab($this->io, $this->config, null); - - if ($this->io->hasAuthentication($this->originUrl) && ($auth = $this->io->getAuthentication($this->originUrl)) && in_array($auth['password'], array('gitlab-ci-token', 'private-token'), true)) { - throw new TransportException("Invalid credentials for '" . $this->fileUrl . "', aborting.", $httpStatus); - } - - if (!$gitLabUtil->authorizeOAuth($this->originUrl) - && (!$this->io->isInteractive() || !$gitLabUtil->authorizeOAuthInteractively($this->scheme, $this->originUrl, $message)) - ) { - throw new TransportException('Could not authenticate against '.$this->originUrl, 401); - } - } elseif ($this->config && $this->originUrl === 'bitbucket.org') { - $askForOAuthToken = true; - if ($this->io->hasAuthentication($this->originUrl)) { - $auth = $this->io->getAuthentication($this->originUrl); - if ($auth['username'] !== 'x-token-auth') { - $bitbucketUtil = new Bitbucket($this->io, $this->config); - $accessToken = $bitbucketUtil->requestToken($this->originUrl, $auth['username'], $auth['password']); - if (!empty($accessToken)) { - $this->io->setAuthentication($this->originUrl, 'x-token-auth', $accessToken); - $askForOAuthToken = false; - } - } else { - throw new TransportException('Could not authenticate against ' . $this->originUrl, 401); - } - } - - if ($askForOAuthToken) { - $message = "\n".'Could not fetch ' . $this->fileUrl . ', please create a bitbucket OAuth token to ' . (($httpStatus === 401 || $httpStatus === 403) ? 'access private repos' : 'go over the API rate limit'); - $bitBucketUtil = new Bitbucket($this->io, $this->config); - if (! $bitBucketUtil->authorizeOAuth($this->originUrl) - && (! $this->io->isInteractive() || !$bitBucketUtil->authorizeOAuthInteractively($this->originUrl, $message)) - ) { - throw new TransportException('Could not authenticate against ' . $this->originUrl, 401); - } - } - } else { - // 404s are only handled for github - if ($httpStatus === 404) { - return; - } - - // fail if the console is not interactive - if (!$this->io->isInteractive()) { - if ($httpStatus === 401) { - $message = "The '" . $this->fileUrl . "' URL required authentication.\nYou must be using the interactive console to authenticate"; - } - if ($httpStatus === 403) { - $message = "The '" . $this->fileUrl . "' URL could not be accessed: " . $reason; - } - - throw new TransportException($message, $httpStatus); - } - // fail if we already have auth - if ($this->io->hasAuthentication($this->originUrl)) { - throw new TransportException("Invalid credentials for '" . $this->fileUrl . "', aborting.", $httpStatus); - } - - $this->io->writeError(' Authentication required ('.$this->originUrl.'):'); - $username = $this->io->ask(' Username: '); - $password = $this->io->askAndHideAnswer(' Password: '); - $this->io->setAuthentication($this->originUrl, $username, $password); - $this->storeAuth = $this->config->get('store-auths'); - } - - $this->retry = true; - throw new TransportException('RETRY'); - } - - protected function getOptionsForUrl($originUrl, $additionalOptions) - { - $tlsOptions = array(); - - // Setup remaining TLS options - the matching may need monitoring, esp. www vs none in CN - if ($this->disableTls === false && PHP_VERSION_ID < 50600 && !stream_is_local($this->fileUrl)) { - $host = parse_url($this->fileUrl, PHP_URL_HOST); - - if (PHP_VERSION_ID < 50304) { - // PHP < 5.3.4 does not support follow_location, for those people - // do some really nasty hard coded transformations. These will - // still breakdown if the site redirects to a domain we don't - // expect. - - if ($host === 'github.com' || $host === 'api.github.com') { - $host = '*.github.com'; - } - } - - $tlsOptions['ssl']['CN_match'] = $host; - $tlsOptions['ssl']['SNI_server_name'] = $host; - - $urlAuthority = $this->getUrlAuthority($this->fileUrl); - - if (isset($this->peerCertificateMap[$urlAuthority])) { - // Handle subjectAltName on lesser PHP's. - $certMap = $this->peerCertificateMap[$urlAuthority]; - - $this->io->writeError('', true, IOInterface::DEBUG); - $this->io->writeError(sprintf( - 'Using %s as CN for subjectAltName enabled host %s', - $certMap['cn'], - $urlAuthority - ), true, IOInterface::DEBUG); - - $tlsOptions['ssl']['CN_match'] = $certMap['cn']; - $tlsOptions['ssl']['peer_fingerprint'] = $certMap['fp']; - } elseif (!CaBundle::isOpensslParseSafe() && $host === 'repo.packagist.org') { - // handle subjectAltName for packagist.org's repo domain on very old PHPs - $tlsOptions['ssl']['CN_match'] = 'packagist.org'; - } - } - - $headers = array(); - - if (extension_loaded('zlib')) { - $headers[] = 'Accept-Encoding: gzip'; - } - - $options = array_replace_recursive($this->options, $tlsOptions, $additionalOptions); - if (!$this->degradedMode) { - // degraded mode disables HTTP/1.1 which causes issues with some bad - // proxies/software due to the use of chunked encoding - $options['http']['protocol_version'] = 1.1; - $headers[] = 'Connection: close'; - } - - if ($this->io->hasAuthentication($originUrl)) { - $auth = $this->io->getAuthentication($originUrl); - if ('github.com' === $originUrl && 'x-oauth-basic' === $auth['password']) { - $options['github-token'] = $auth['username']; - } elseif ($this->config && in_array($originUrl, $this->config->get('gitlab-domains'), true)) { - if ($auth['password'] === 'oauth2') { - $headers[] = 'Authorization: Bearer '.$auth['username']; - } elseif ($auth['password'] === 'private-token' || $auth['password'] === 'gitlab-ci-token') { - $headers[] = 'PRIVATE-TOKEN: '.$auth['username']; - } - } elseif ('bitbucket.org' === $originUrl - && $this->fileUrl !== Bitbucket::OAUTH2_ACCESS_TOKEN_URL && 'x-token-auth' === $auth['username'] - ) { - if (!$this->isPublicBitBucketDownload($this->fileUrl)) { - $headers[] = 'Authorization: Bearer ' . $auth['password']; - } - } else { - $authStr = base64_encode($auth['username'] . ':' . $auth['password']); - $headers[] = 'Authorization: Basic '.$authStr; - } - } - - $options['http']['follow_location'] = 0; - - if (isset($options['http']['header']) && !is_array($options['http']['header'])) { - $options['http']['header'] = explode("\r\n", trim($options['http']['header'], "\r\n")); - } - foreach ($headers as $header) { - $options['http']['header'][] = $header; - } - - return $options; - } - - private function handleRedirect(array $http_response_header, array $additionalOptions, $result) - { - if ($locationHeader = $this->findHeaderValue($http_response_header, 'location')) { - if (parse_url($locationHeader, PHP_URL_SCHEME)) { - // Absolute URL; e.g. https://example.com/composer - $targetUrl = $locationHeader; - } elseif (parse_url($locationHeader, PHP_URL_HOST)) { - // Scheme relative; e.g. //example.com/foo - $targetUrl = $this->scheme.':'.$locationHeader; - } elseif ('/' === $locationHeader[0]) { - // Absolute path; e.g. /foo - $urlHost = parse_url($this->fileUrl, PHP_URL_HOST); - - // Replace path using hostname as an anchor. - $targetUrl = preg_replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $this->fileUrl); - } else { - // Relative path; e.g. foo - // This actually differs from PHP which seems to add duplicate slashes. - $targetUrl = preg_replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $this->fileUrl); - } - } - - if (!empty($targetUrl)) { - $this->redirects++; - - $this->io->writeError('', true, IOInterface::DEBUG); - $this->io->writeError(sprintf('Following redirect (%u) %s', $this->redirects, $this->stripCredentialsFromUrl($targetUrl)), true, IOInterface::DEBUG); - - $additionalOptions['redirects'] = $this->redirects; - - return $this->get(parse_url($targetUrl, PHP_URL_HOST), $targetUrl, $additionalOptions, $this->fileName, $this->progress); - } - - if (!$this->retry) { - $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded, got redirect without Location ('.$http_response_header[0].')'); - $e->setHeaders($http_response_header); - $e->setResponse($result); - - throw $e; - } - - return false; - } - - /** - * @param array $options - * - * @return array - */ - private function getTlsDefaults(array $options) - { - $ciphers = implode(':', array( - 'ECDHE-RSA-AES128-GCM-SHA256', - 'ECDHE-ECDSA-AES128-GCM-SHA256', - 'ECDHE-RSA-AES256-GCM-SHA384', - 'ECDHE-ECDSA-AES256-GCM-SHA384', - 'DHE-RSA-AES128-GCM-SHA256', - 'DHE-DSS-AES128-GCM-SHA256', - 'kEDH+AESGCM', - 'ECDHE-RSA-AES128-SHA256', - 'ECDHE-ECDSA-AES128-SHA256', - 'ECDHE-RSA-AES128-SHA', - 'ECDHE-ECDSA-AES128-SHA', - 'ECDHE-RSA-AES256-SHA384', - 'ECDHE-ECDSA-AES256-SHA384', - 'ECDHE-RSA-AES256-SHA', - 'ECDHE-ECDSA-AES256-SHA', - 'DHE-RSA-AES128-SHA256', - 'DHE-RSA-AES128-SHA', - 'DHE-DSS-AES128-SHA256', - 'DHE-RSA-AES256-SHA256', - 'DHE-DSS-AES256-SHA', - 'DHE-RSA-AES256-SHA', - 'AES128-GCM-SHA256', - 'AES256-GCM-SHA384', - 'AES128-SHA256', - 'AES256-SHA256', - 'AES128-SHA', - 'AES256-SHA', - 'AES', - 'CAMELLIA', - 'DES-CBC3-SHA', - '!aNULL', - '!eNULL', - '!EXPORT', - '!DES', - '!RC4', - '!MD5', - '!PSK', - '!aECDH', - '!EDH-DSS-DES-CBC3-SHA', - '!EDH-RSA-DES-CBC3-SHA', - '!KRB5-DES-CBC3-SHA', - )); - - /** - * CN_match and SNI_server_name are only known once a URL is passed. - * They will be set in the getOptionsForUrl() method which receives a URL. - * - * cafile or capath can be overridden by passing in those options to constructor. - */ - $defaults = array( - 'ssl' => array( - 'ciphers' => $ciphers, - 'verify_peer' => true, - 'verify_depth' => 7, - 'SNI_enabled' => true, - 'capture_peer_cert' => true, - ), - ); - - if (isset($options['ssl'])) { - $defaults['ssl'] = array_replace_recursive($defaults['ssl'], $options['ssl']); - } - - $caBundleLogger = $this->io instanceof LoggerInterface ? $this->io : null; - - /** - * Attempt to find a local cafile or throw an exception if none pre-set - * The user may go download one if this occurs. - */ - if (!isset($defaults['ssl']['cafile']) && !isset($defaults['ssl']['capath'])) { - $result = CaBundle::getSystemCaRootBundlePath($caBundleLogger); - - if (is_dir($result)) { - $defaults['ssl']['capath'] = $result; - } else { - $defaults['ssl']['cafile'] = $result; - } - } - - if (isset($defaults['ssl']['cafile']) && (!is_readable($defaults['ssl']['cafile']) || !CaBundle::validateCaFile($defaults['ssl']['cafile'], $caBundleLogger))) { - throw new TransportException('The configured cafile was not valid or could not be read.'); - } - - if (isset($defaults['ssl']['capath']) && (!is_dir($defaults['ssl']['capath']) || !is_readable($defaults['ssl']['capath']))) { - throw new TransportException('The configured capath was not valid or could not be read.'); - } - - /** - * Disable TLS compression to prevent CRIME attacks where supported. - */ - if (PHP_VERSION_ID >= 50413) { - $defaults['ssl']['disable_compression'] = true; - } - - return $defaults; - } - - /** - * Fetch certificate common name and fingerprint for validation of SAN. - * - * @todo Remove when PHP 5.6 is minimum supported version. - */ - private function getCertificateCnAndFp($url, $options) - { - if (PHP_VERSION_ID >= 50600) { - throw new \BadMethodCallException(sprintf( - '%s must not be used on PHP >= 5.6', - __METHOD__ - )); - } - - $context = StreamContextFactory::getContext($url, $options, array('options' => array( - 'ssl' => array( - 'capture_peer_cert' => true, - 'verify_peer' => false, // Yes this is fucking insane! But PHP is lame. - ), ), - )); - - // Ideally this would just use stream_socket_client() to avoid sending a - // HTTP request but that does not capture the certificate. - if (false === $handle = @fopen($url, 'rb', false, $context)) { - return; - } - - // Close non authenticated connection without reading any content. - fclose($handle); - $handle = null; - - $params = stream_context_get_params($context); - - if (!empty($params['options']['ssl']['peer_certificate'])) { - $peerCertificate = $params['options']['ssl']['peer_certificate']; - - if (TlsHelper::checkCertificateHost($peerCertificate, parse_url($url, PHP_URL_HOST), $commonName)) { - return array( - 'cn' => $commonName, - 'fp' => TlsHelper::getCertificateFingerprint($peerCertificate), - ); - } - } - } - - private function getUrlAuthority($url) - { - $defaultPorts = array( - 'ftp' => 21, - 'http' => 80, - 'https' => 443, - 'ssh2.sftp' => 22, - 'ssh2.scp' => 22, - ); - - $scheme = parse_url($url, PHP_URL_SCHEME); - - if (!isset($defaultPorts[$scheme])) { - throw new \InvalidArgumentException(sprintf( - 'Could not get default port for unknown scheme: %s', - $scheme - )); - } - - $defaultPort = $defaultPorts[$scheme]; - $port = parse_url($url, PHP_URL_PORT) ?: $defaultPort; - - return parse_url($url, PHP_URL_HOST).':'.$port; - } - - /** - * @link https://github.com/composer/composer/issues/5584 - * - * @param string $urlToBitBucketFile URL to a file at bitbucket.org. - * - * @return bool Whether the given URL is a public BitBucket download which requires no authentication. - */ - private function isPublicBitBucketDownload($urlToBitBucketFile) - { - $domain = parse_url($urlToBitBucketFile, PHP_URL_HOST); - if (strpos($domain, 'bitbucket.org') === false) { - // Bitbucket downloads are hosted on amazonaws. - // We do not need to authenticate there at all - return true; - } - - $path = parse_url($urlToBitBucketFile, PHP_URL_PATH); - - // Path for a public download follows this pattern /{user}/{repo}/downloads/{whatever} - // {@link https://blog.bitbucket.org/2009/04/12/new-feature-downloads/} - $pathParts = explode('/', $path); - - return count($pathParts) >= 4 && $pathParts[3] == 'downloads'; - } - - public static function outputWarnings(IOInterface $io, $url, $data) - { - foreach (array('warning', 'info') as $type) { - if (empty($data[$type])) { - continue; - } - - if (!empty($data[$type . '-versions'])) { - $versionParser = new VersionParser(); - $constraint = $versionParser->parseConstraints($data[$type . '-versions']); - $composer = new Constraint('==', $versionParser->normalize(Composer::getVersion())); - if (!$constraint->matches($composer)) { - continue; - } - } - - $io->writeError('<'.$type.'>'.ucfirst($type).' from '.$url.': '.$data[$type].''); - } - } - - public static function getOrigin($urlOrPath) - { - $hostPort = parse_url($urlOrPath, PHP_URL_HOST); - if (!$hostPort) { - return $urlOrPath; - } - if (parse_url($urlOrPath, PHP_URL_PORT)) { - $hostPort .= ':'.parse_url($urlOrPath, PHP_URL_PORT); - } - - return $hostPort; - } - - private function stripCredentialsFromUrl($url) - { - // GitHub repository rename result in redirect locations containing the access_token as GET parameter - // e.g. https://api.github.com/repositories/9999999999?access_token=github_token - return preg_replace('{([&?]access_token=)[^&]+}', '$1***', $url); - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Silencer.php b/vendor/composer/composer/src/Composer/Util/Silencer.php deleted file mode 100644 index dcb362b..0000000 --- a/vendor/composer/composer/src/Composer/Util/Silencer.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -/** - * Temporarily suppress PHP error reporting, usually warnings and below. - * - * @author Niels Keurentjes - */ -class Silencer -{ - /** - * @var int[] Unpop stack - */ - private static $stack = array(); - - /** - * Suppresses given mask or errors. - * - * @param int|null $mask Error levels to suppress, default value NULL indicates all warnings and below. - * @return int The old error reporting level. - */ - public static function suppress($mask = null) - { - if (!isset($mask)) { - $mask = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_DEPRECATED | E_USER_DEPRECATED | E_STRICT; - } - $old = error_reporting(); - self::$stack[] = $old; - error_reporting($old & ~$mask); - - return $old; - } - - /** - * Restores a single state. - */ - public static function restore() - { - if (!empty(self::$stack)) { - error_reporting(array_pop(self::$stack)); - } - } - - /** - * Calls a specified function while silencing warnings and below. - * - * Future improvement: when PHP requirements are raised add Callable type hint (5.4) and variadic parameters (5.6) - * - * @param callable $callable Function to execute. - * @throws \Exception Any exceptions from the callback are rethrown. - * @return mixed Return value of the callback. - */ - public static function call($callable /*, ...$parameters */) - { - try { - self::suppress(); - $result = call_user_func_array($callable, array_slice(func_get_args(), 1)); - self::restore(); - - return $result; - } catch (\Exception $e) { - // Use a finally block for this when requirements are raised to PHP 5.5 - self::restore(); - throw $e; - } - } -} diff --git a/vendor/composer/composer/src/Composer/Util/SpdxLicense.php b/vendor/composer/composer/src/Composer/Util/SpdxLicense.php deleted file mode 100644 index be4efdc..0000000 --- a/vendor/composer/composer/src/Composer/Util/SpdxLicense.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Spdx\SpdxLicenses; - -trigger_error('The ' . __NAMESPACE__ . '\SpdxLicense class is deprecated, use Composer\Spdx\SpdxLicenses instead.', E_USER_DEPRECATED); - -/** - * @deprecated use Composer\Spdx\SpdxLicenses instead - */ -class SpdxLicense extends SpdxLicenses -{ -} diff --git a/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php b/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php deleted file mode 100644 index da3e578..0000000 --- a/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php +++ /dev/null @@ -1,177 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Composer; - -/** - * Allows the creation of a basic context supporting http proxy - * - * @author Jordan Alliot - * @author Markus Tacker - */ -final class StreamContextFactory -{ - /** - * Creates a context supporting HTTP proxies - * - * @param string $url URL the context is to be used for - * @param array $defaultOptions Options to merge with the default - * @param array $defaultParams Parameters to specify on the context - * @throws \RuntimeException if https proxy required and OpenSSL uninstalled - * @return resource Default context - */ - public static function getContext($url, array $defaultOptions = array(), array $defaultParams = array()) - { - $options = array('http' => array( - // specify defaults again to try and work better with curlwrappers enabled - 'follow_location' => 1, - 'max_redirects' => 20, - )); - - // Handle HTTP_PROXY/http_proxy on CLI only for security reasons - if ((PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') && (!empty($_SERVER['HTTP_PROXY']) || !empty($_SERVER['http_proxy']))) { - $proxy = parse_url(!empty($_SERVER['http_proxy']) ? $_SERVER['http_proxy'] : $_SERVER['HTTP_PROXY']); - } - - // Prefer CGI_HTTP_PROXY if available - if (!empty($_SERVER['CGI_HTTP_PROXY'])) { - $proxy = parse_url($_SERVER['CGI_HTTP_PROXY']); - } - - // Override with HTTPS proxy if present and URL is https - if (preg_match('{^https://}i', $url) && (!empty($_SERVER['HTTPS_PROXY']) || !empty($_SERVER['https_proxy']))) { - $proxy = parse_url(!empty($_SERVER['https_proxy']) ? $_SERVER['https_proxy'] : $_SERVER['HTTPS_PROXY']); - } - - // Remove proxy if URL matches no_proxy directive - if (!empty($_SERVER['NO_PROXY']) || !empty($_SERVER['no_proxy']) && parse_url($url, PHP_URL_HOST)) { - $pattern = new NoProxyPattern(!empty($_SERVER['no_proxy']) ? $_SERVER['no_proxy'] : $_SERVER['NO_PROXY']); - if ($pattern->test($url)) { - unset($proxy); - } - } - - if (!empty($proxy)) { - $proxyURL = isset($proxy['scheme']) ? $proxy['scheme'] . '://' : ''; - $proxyURL .= isset($proxy['host']) ? $proxy['host'] : ''; - - if (isset($proxy['port'])) { - $proxyURL .= ":" . $proxy['port']; - } elseif ('http://' == substr($proxyURL, 0, 7)) { - $proxyURL .= ":80"; - } elseif ('https://' == substr($proxyURL, 0, 8)) { - $proxyURL .= ":443"; - } - - // http(s):// is not supported in proxy - $proxyURL = str_replace(array('http://', 'https://'), array('tcp://', 'ssl://'), $proxyURL); - - if (0 === strpos($proxyURL, 'ssl:') && !extension_loaded('openssl')) { - throw new \RuntimeException('You must enable the openssl extension to use a proxy over https'); - } - - $options['http']['proxy'] = $proxyURL; - - // enabled request_fulluri unless it is explicitly disabled - switch (parse_url($url, PHP_URL_SCHEME)) { - case 'http': // default request_fulluri to true - $reqFullUriEnv = getenv('HTTP_PROXY_REQUEST_FULLURI'); - if ($reqFullUriEnv === false || $reqFullUriEnv === '' || (strtolower($reqFullUriEnv) !== 'false' && (bool) $reqFullUriEnv)) { - $options['http']['request_fulluri'] = true; - } - break; - case 'https': // default request_fulluri to true - $reqFullUriEnv = getenv('HTTPS_PROXY_REQUEST_FULLURI'); - if ($reqFullUriEnv === false || $reqFullUriEnv === '' || (strtolower($reqFullUriEnv) !== 'false' && (bool) $reqFullUriEnv)) { - $options['http']['request_fulluri'] = true; - } - break; - } - - // add SNI opts for https URLs - if ('https' === parse_url($url, PHP_URL_SCHEME)) { - $options['ssl']['SNI_enabled'] = true; - if (PHP_VERSION_ID < 50600) { - $options['ssl']['SNI_server_name'] = parse_url($url, PHP_URL_HOST); - } - } - - // handle proxy auth if present - if (isset($proxy['user'])) { - $auth = rawurldecode($proxy['user']); - if (isset($proxy['pass'])) { - $auth .= ':' . rawurldecode($proxy['pass']); - } - $auth = base64_encode($auth); - - // Preserve headers if already set in default options - if (isset($defaultOptions['http']['header'])) { - if (is_string($defaultOptions['http']['header'])) { - $defaultOptions['http']['header'] = array($defaultOptions['http']['header']); - } - $defaultOptions['http']['header'][] = "Proxy-Authorization: Basic {$auth}"; - } else { - $options['http']['header'] = array("Proxy-Authorization: Basic {$auth}"); - } - } - } - - $options = array_replace_recursive($options, $defaultOptions); - - if (isset($options['http']['header'])) { - $options['http']['header'] = self::fixHttpHeaderField($options['http']['header']); - } - - if (defined('HHVM_VERSION')) { - $phpVersion = 'HHVM ' . HHVM_VERSION; - } else { - $phpVersion = 'PHP ' . PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION; - } - - if (!isset($options['http']['header']) || false === stripos(implode('', $options['http']['header']), 'user-agent')) { - $options['http']['header'][] = sprintf( - 'User-Agent: Composer/%s (%s; %s; %s%s)', - Composer::getVersion(), - function_exists('php_uname') ? php_uname('s') : 'Unknown', - function_exists('php_uname') ? php_uname('r') : 'Unknown', - $phpVersion, - getenv('CI') ? '; CI' : '' - ); - } - - return stream_context_create($options, $defaultParams); - } - - /** - * A bug in PHP prevents the headers from correctly being sent when a content-type header is present and - * NOT at the end of the array - * - * This method fixes the array by moving the content-type header to the end - * - * @link https://bugs.php.net/bug.php?id=61548 - * @param string|array $header - * @return array - */ - private static function fixHttpHeaderField($header) - { - if (!is_array($header)) { - $header = explode("\r\n", $header); - } - uasort($header, function ($el) { - return stripos($el, 'content-type') === 0 ? 1 : -1; - }); - - return $header; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Svn.php b/vendor/composer/composer/src/Composer/Util/Svn.php deleted file mode 100644 index 58114ac..0000000 --- a/vendor/composer/composer/src/Composer/Util/Svn.php +++ /dev/null @@ -1,381 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Config; -use Composer\IO\IOInterface; - -/** - * @author Till Klampaeckel - * @author Jordi Boggiano - */ -class Svn -{ - const MAX_QTY_AUTH_TRIES = 5; - - /** - * @var array - */ - protected $credentials; - - /** - * @var bool - */ - protected $hasAuth; - - /** - * @var \Composer\IO\IOInterface - */ - protected $io; - - /** - * @var string - */ - protected $url; - - /** - * @var bool - */ - protected $cacheCredentials = true; - - /** - * @var ProcessExecutor - */ - protected $process; - - /** - * @var int - */ - protected $qtyAuthTries = 0; - - /** - * @var \Composer\Config - */ - protected $config; - - /** - * @var string|null - */ - private static $version; - - /** - * @param string $url - * @param \Composer\IO\IOInterface $io - * @param Config $config - * @param ProcessExecutor $process - */ - public function __construct($url, IOInterface $io, Config $config, ProcessExecutor $process = null) - { - $this->url = $url; - $this->io = $io; - $this->config = $config; - $this->process = $process ?: new ProcessExecutor($io); - } - - public static function cleanEnv() - { - // clean up env for OSX, see https://github.com/composer/composer/issues/2146#issuecomment-35478940 - putenv("DYLD_LIBRARY_PATH"); - unset($_SERVER['DYLD_LIBRARY_PATH']); - } - - /** - * Execute an SVN remote command and try to fix up the process with credentials - * if necessary. - * - * @param string $command SVN command to run - * @param string $url SVN url - * @param string $cwd Working directory - * @param string $path Target for a checkout - * @param bool $verbose Output all output to the user - * - * @throws \RuntimeException - * @return string - */ - public function execute($command, $url, $cwd = null, $path = null, $verbose = false) - { - // Ensure we are allowed to use this URL by config - $this->config->prohibitUrlByConfig($url, $this->io); - - return $this->executeWithAuthRetry($command, $cwd, $url, $path, $verbose); - } - - /** - * Execute an SVN local command and try to fix up the process with credentials - * if necessary. - * - * @param string $command SVN command to run - * @param string $path Path argument passed thru to the command - * @param string $cwd Working directory - * @param bool $verbose Output all output to the user - * - * @throws \RuntimeException - * @return string - */ - public function executeLocal($command, $path, $cwd = null, $verbose = false) - { - // A local command has no remote url - return $this->executeWithAuthRetry($command, $cwd, '', $path, $verbose); - } - - private function executeWithAuthRetry($svnCommand, $cwd, $url, $path, $verbose) - { - // Regenerate the command at each try, to use the newly user-provided credentials - $command = $this->getCommand($svnCommand, $url, $path); - - $output = null; - $io = $this->io; - $handler = function ($type, $buffer) use (&$output, $io, $verbose) { - if ($type !== 'out') { - return; - } - if ('Redirecting to URL ' === substr($buffer, 0, 19)) { - return; - } - $output .= $buffer; - if ($verbose) { - $io->writeError($buffer, false); - } - }; - $status = $this->process->execute($command, $handler, $cwd); - if (0 === $status) { - return $output; - } - - $errorOutput = $this->process->getErrorOutput(); - $fullOutput = implode("\n", array($output, $errorOutput)); - - // the error is not auth-related - if (false === stripos($fullOutput, 'Could not authenticate to server:') - && false === stripos($fullOutput, 'authorization failed') - && false === stripos($fullOutput, 'svn: E170001:') - && false === stripos($fullOutput, 'svn: E215004:')) { - throw new \RuntimeException($fullOutput); - } - - if (!$this->hasAuth()) { - $this->doAuthDance(); - } - - // try to authenticate if maximum quantity of tries not reached - if ($this->qtyAuthTries++ < self::MAX_QTY_AUTH_TRIES) { - // restart the process - return $this->executeWithAuthRetry($svnCommand, $cwd, $url, $path, $verbose); - } - - throw new \RuntimeException( - 'wrong credentials provided ('.$fullOutput.')' - ); - } - - /** - * @param bool $cacheCredentials - */ - public function setCacheCredentials($cacheCredentials) - { - $this->cacheCredentials = $cacheCredentials; - } - - /** - * Repositories requests credentials, let's put them in. - * - * @throws \RuntimeException - * @return \Composer\Util\Svn - */ - protected function doAuthDance() - { - // cannot ask for credentials in non interactive mode - if (!$this->io->isInteractive()) { - throw new \RuntimeException( - 'can not ask for authentication in non interactive mode' - ); - } - - $this->io->writeError("The Subversion server ({$this->url}) requested credentials:"); - - $this->hasAuth = true; - $this->credentials['username'] = $this->io->ask("Username: "); - $this->credentials['password'] = $this->io->askAndHideAnswer("Password: "); - - $this->cacheCredentials = $this->io->askConfirmation("Should Subversion cache these credentials? (yes/no) ", true); - - return $this; - } - - /** - * A method to create the svn commands run. - * - * @param string $cmd Usually 'svn ls' or something like that. - * @param string $url Repo URL. - * @param string $path Target for a checkout - * - * @return string - */ - protected function getCommand($cmd, $url, $path = null) - { - $cmd = sprintf( - '%s %s%s %s', - $cmd, - '--non-interactive ', - $this->getCredentialString(), - ProcessExecutor::escape($url) - ); - - if ($path) { - $cmd .= ' ' . ProcessExecutor::escape($path); - } - - return $cmd; - } - - /** - * Return the credential string for the svn command. - * - * Adds --no-auth-cache when credentials are present. - * - * @return string - */ - protected function getCredentialString() - { - if (!$this->hasAuth()) { - return ''; - } - - return sprintf( - ' %s--username %s --password %s ', - $this->getAuthCache(), - ProcessExecutor::escape($this->getUsername()), - ProcessExecutor::escape($this->getPassword()) - ); - } - - /** - * Get the password for the svn command. Can be empty. - * - * @throws \LogicException - * @return string - */ - protected function getPassword() - { - if ($this->credentials === null) { - throw new \LogicException("No svn auth detected."); - } - - return isset($this->credentials['password']) ? $this->credentials['password'] : ''; - } - - /** - * Get the username for the svn command. - * - * @throws \LogicException - * @return string - */ - protected function getUsername() - { - if ($this->credentials === null) { - throw new \LogicException("No svn auth detected."); - } - - return $this->credentials['username']; - } - - /** - * Detect Svn Auth. - * - * @return bool - */ - protected function hasAuth() - { - if (null !== $this->hasAuth) { - return $this->hasAuth; - } - - if (false === $this->createAuthFromConfig()) { - $this->createAuthFromUrl(); - } - - return $this->hasAuth; - } - - /** - * Return the no-auth-cache switch. - * - * @return string - */ - protected function getAuthCache() - { - return $this->cacheCredentials ? '' : '--no-auth-cache '; - } - - /** - * Create the auth params from the configuration file. - * - * @return bool - */ - private function createAuthFromConfig() - { - if (!$this->config->has('http-basic')) { - return $this->hasAuth = false; - } - - $authConfig = $this->config->get('http-basic'); - - $host = parse_url($this->url, PHP_URL_HOST); - if (isset($authConfig[$host])) { - $this->credentials['username'] = $authConfig[$host]['username']; - $this->credentials['password'] = $authConfig[$host]['password']; - - return $this->hasAuth = true; - } - - return $this->hasAuth = false; - } - - /** - * Create the auth params from the url - * - * @return bool - */ - private function createAuthFromUrl() - { - $uri = parse_url($this->url); - if (empty($uri['user'])) { - return $this->hasAuth = false; - } - - $this->credentials['username'] = $uri['user']; - if (!empty($uri['pass'])) { - $this->credentials['password'] = $uri['pass']; - } - - return $this->hasAuth = true; - } - - /** - * Returns the version of the svn binary contained in PATH - * - * @return string|null - */ - public function binaryVersion() - { - if (!self::$version) { - if (0 === $this->process->execute('svn --version', $output)) { - if (preg_match('{(\d+(?:\.\d+)+)}', $output, $match)) { - self::$version = $match[1]; - } - } - } - - return self::$version; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/TlsHelper.php b/vendor/composer/composer/src/Composer/Util/TlsHelper.php deleted file mode 100644 index a53212f..0000000 --- a/vendor/composer/composer/src/Composer/Util/TlsHelper.php +++ /dev/null @@ -1,202 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\CaBundle\CaBundle; - -/** - * @author Chris Smith - */ -final class TlsHelper -{ - /** - * Match hostname against a certificate. - * - * @param mixed $certificate X.509 certificate - * @param string $hostname Hostname in the URL - * @param string $cn Set to the common name of the certificate iff match found - * - * @return bool - */ - public static function checkCertificateHost($certificate, $hostname, &$cn = null) - { - $names = self::getCertificateNames($certificate); - - if (empty($names)) { - return false; - } - - $combinedNames = array_merge($names['san'], array($names['cn'])); - $hostname = strtolower($hostname); - - foreach ($combinedNames as $certName) { - $matcher = self::certNameMatcher($certName); - - if ($matcher && $matcher($hostname)) { - $cn = $names['cn']; - - return true; - } - } - - return false; - } - - /** - * Extract DNS names out of an X.509 certificate. - * - * @param mixed $certificate X.509 certificate - * - * @return array|null - */ - public static function getCertificateNames($certificate) - { - if (is_array($certificate)) { - $info = $certificate; - } elseif (CaBundle::isOpensslParseSafe()) { - $info = openssl_x509_parse($certificate, false); - } - - if (!isset($info['subject']['commonName'])) { - return null; - } - - $commonName = strtolower($info['subject']['commonName']); - $subjectAltNames = array(); - - if (isset($info['extensions']['subjectAltName'])) { - $subjectAltNames = preg_split('{\s*,\s*}', $info['extensions']['subjectAltName']); - $subjectAltNames = array_filter(array_map(function ($name) { - if (0 === strpos($name, 'DNS:')) { - return strtolower(ltrim(substr($name, 4))); - } - - return null; - }, $subjectAltNames)); - $subjectAltNames = array_values($subjectAltNames); - } - - return array( - 'cn' => $commonName, - 'san' => $subjectAltNames, - ); - } - - /** - * Get the certificate pin. - * - * By Kevin McArthur of StormTide Digital Studios Inc. - * @KevinSMcArthur / https://github.com/StormTide - * - * See http://tools.ietf.org/html/draft-ietf-websec-key-pinning-02 - * - * This method was adapted from Sslurp. - * https://github.com/EvanDotPro/Sslurp - * - * (c) Evan Coury - * - * For the full copyright and license information, please see below: - * - * Copyright (c) 2013, Evan Coury - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without 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. - * - * * 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. - * - * 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. - */ - public static function getCertificateFingerprint($certificate) - { - $pubkeydetails = openssl_pkey_get_details(openssl_get_publickey($certificate)); - $pubkeypem = $pubkeydetails['key']; - //Convert PEM to DER before SHA1'ing - $start = '-----BEGIN PUBLIC KEY-----'; - $end = '-----END PUBLIC KEY-----'; - $pemtrim = substr($pubkeypem, strpos($pubkeypem, $start) + strlen($start), (strlen($pubkeypem) - strpos($pubkeypem, $end)) * (-1)); - $der = base64_decode($pemtrim); - - return sha1($der); - } - - /** - * Test if it is safe to use the PHP function openssl_x509_parse(). - * - * This checks if OpenSSL extensions is vulnerable to remote code execution - * via the exploit documented as CVE-2013-6420. - * - * @return bool - */ - public static function isOpensslParseSafe() - { - return CaBundle::isOpensslParseSafe(); - } - - /** - * Convert certificate name into matching function. - * - * @param string $certName CN/SAN - * - * @return callable|void - */ - private static function certNameMatcher($certName) - { - $wildcards = substr_count($certName, '*'); - - if (0 === $wildcards) { - // Literal match. - return function ($hostname) use ($certName) { - return $hostname === $certName; - }; - } - - if (1 === $wildcards) { - $components = explode('.', $certName); - - if (3 > count($components)) { - // Must have 3+ components - return; - } - - $firstComponent = $components[0]; - - // Wildcard must be the last character. - if ('*' !== $firstComponent[strlen($firstComponent) - 1]) { - return; - } - - $wildcardRegex = preg_quote($certName); - $wildcardRegex = str_replace('\\*', '[a-z0-9-]+', $wildcardRegex); - $wildcardRegex = "{^{$wildcardRegex}$}"; - - return function ($hostname) use ($wildcardRegex) { - return 1 === preg_match($wildcardRegex, $hostname); - }; - } - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Url.php b/vendor/composer/composer/src/Composer/Util/Url.php deleted file mode 100644 index 4a5d5f9..0000000 --- a/vendor/composer/composer/src/Composer/Util/Url.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -use Composer\Config; - -/** - * @author Jordi Boggiano - */ -class Url -{ - public static function updateDistReference(Config $config, $url, $ref) - { - $host = parse_url($url, PHP_URL_HOST); - - if ($host === 'api.github.com' || $host === 'github.com' || $host === 'www.github.com') { - if (preg_match('{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/(zip|tar)ball/(.+)$}i', $url, $match)) { - // update legacy github archives to API calls with the proper reference - $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; - } elseif (preg_match('{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/archive/.+\.(zip|tar)(?:\.gz)?$}i', $url, $match)) { - // update current github web archives to API calls with the proper reference - $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; - } elseif (preg_match('{^https?://api\.github\.com/repos/([^/]+)/([^/]+)/(zip|tar)ball(?:/.+)?$}i', $url, $match)) { - // update api archives to the proper reference - $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; - } - } elseif ($host === 'bitbucket.org' || $host === 'www.bitbucket.org') { - if (preg_match('{^https?://(?:www\.)?bitbucket\.org/([^/]+)/([^/]+)/get/(.+)\.(zip|tar\.gz|tar\.bz2)$}i', $url, $match)) { - // update Bitbucket archives to the proper reference - $url = 'https://bitbucket.org/' . $match[1] . '/'. $match[2] . '/get/' . $ref . '.' . $match[4]; - } - } elseif ($host === 'gitlab.com' || $host === 'www.gitlab.com') { - if (preg_match('{^https?://(?:www\.)?gitlab\.com/api/v[34]/projects/([^/]+)/repository/archive\.(zip|tar\.gz|tar\.bz2|tar)\?sha=.+$}i', $url, $match)) { - // update Gitlab archives to the proper reference - $url = 'https://gitlab.com/api/v4/projects/' . $match[1] . '/repository/archive.' . $match[2] . '?sha=' . $ref; - } - } elseif (in_array($host, $config->get('github-domains'), true)) { - $url = preg_replace('{(/repos/[^/]+/[^/]+/(zip|tar)ball)(?:/.+)?$}i', '$1/'.$ref, $url); - } elseif (in_array($host, $config->get('gitlab-domains'), true)) { - $url = preg_replace('{(/api/v[34]/projects/[^/]+/repository/archive\.(?:zip|tar\.gz|tar\.bz2|tar)\?sha=).+$}i', '${1}'.$ref, $url); - } - - return $url; - } -} diff --git a/vendor/composer/composer/src/Composer/Util/Zip.php b/vendor/composer/composer/src/Composer/Util/Zip.php deleted file mode 100644 index 8c79d10..0000000 --- a/vendor/composer/composer/src/Composer/Util/Zip.php +++ /dev/null @@ -1,108 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Util; - -/** - * @author Andreas Schempp - */ -class Zip -{ - /** - * Gets content of the root composer.json inside a ZIP archive. - * - * @param string $pathToZip - * @param string $filename - * - * @return string|null - */ - public static function getComposerJson($pathToZip) - { - if (!extension_loaded('zip')) { - throw new \RuntimeException('The Zip Util requires PHP\'s zip extension'); - } - - $zip = new \ZipArchive(); - if ($zip->open($pathToZip) !== true) { - return null; - } - - if (0 == $zip->numFiles) { - $zip->close(); - - return null; - } - - $foundFileIndex = self::locateFile($zip, 'composer.json'); - if (false === $foundFileIndex) { - $zip->close(); - - return null; - } - - $content = null; - $configurationFileName = $zip->getNameIndex($foundFileIndex); - $stream = $zip->getStream($configurationFileName); - - if (false !== $stream) { - $content = stream_get_contents($stream); - } - - $zip->close(); - - return $content; - } - - /** - * Find a file by name, returning the one that has the shortest path. - * - * @param \ZipArchive $zip - * @param string $filename - * - * @return bool|int - */ - private static function locateFile(\ZipArchive $zip, $filename) - { - $indexOfShortestMatch = false; - $lengthOfShortestMatch = -1; - - for ($i = 0; $i < $zip->numFiles; $i++) { - $stat = $zip->statIndex($i); - if (strcmp(basename($stat['name']), $filename) === 0) { - $directoryName = dirname($stat['name']); - if ($directoryName === '.') { - //if composer.json is in root directory - //it has to be the one to use. - return $i; - } - - if (strpos($directoryName, '\\') !== false || - strpos($directoryName, '/') !== false) { - //composer.json files below first directory are rejected - continue; - } - - $length = strlen($stat['name']); - if ($indexOfShortestMatch === false || $length < $lengthOfShortestMatch) { - //Check it's not a directory. - $contents = $zip->getFromIndex($i); - if ($contents !== false) { - $indexOfShortestMatch = $i; - $lengthOfShortestMatch = $length; - } - } - } - } - - return $indexOfShortestMatch; - } -} diff --git a/vendor/composer/composer/src/Composer/XdebugHandler.php b/vendor/composer/composer/src/Composer/XdebugHandler.php deleted file mode 100644 index eb94e93..0000000 --- a/vendor/composer/composer/src/Composer/XdebugHandler.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Symfony\Component\Console\Output\OutputInterface; - -trigger_error('The ' . __NAMESPACE__ . '\XdebugHandler class is deprecated, use Composer\XdebugHandler\XdebugHandler instead,', E_USER_DEPRECATED); - -/** - * @deprecated use Composer\XdebugHandler\XdebugHandler instead - */ -class XdebugHandler extends XdebugHandler\XdebugHandler -{ - const ENV_ALLOW = 'COMPOSER_ALLOW_XDEBUG'; - const ENV_VERSION = 'COMPOSER_XDEBUG_VERSION'; - - public function __construct(OutputInterface $output) - { - parent::__construct('composer', '--ansi'); - } -} diff --git a/vendor/composer/composer/src/bootstrap.php b/vendor/composer/composer/src/bootstrap.php deleted file mode 100644 index a3832ce..0000000 --- a/vendor/composer/composer/src/bootstrap.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -function includeIfExists($file) -{ - return file_exists($file) ? include $file : false; -} - -if ((!$loader = includeIfExists(__DIR__.'/../vendor/autoload.php')) && (!$loader = includeIfExists(__DIR__.'/../../../autoload.php'))) { - echo 'You must set up the project dependencies using `composer install`'.PHP_EOL. - 'See https://getcomposer.org/download/ for instructions on installing Composer'.PHP_EOL; - exit(1); -} - -return $loader; diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 3b6bc88..a0b0f80 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,6977 +1,50 @@ [ { - "name": "antecedent/patchwork", - "version": "2.1.12", - "version_normalized": "2.1.12.0", - "source": { - "type": "git", - "url": "https://github.com/antecedent/patchwork.git", - "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea", - "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4" - }, - "time": "2019-12-22T17:52:09+00:00", - "type": "library", - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignas Rudaitis", - "email": "ignas.rudaitis@gmail.com" - } - ], - "description": "Method redefinition (monkey-patching) functionality for PHP.", - "homepage": "http://patchwork2.org/", - "keywords": [ - "aop", - "aspect", - "interception", - "monkeypatching", - "redefinition", - "runkit", - "testing" - ] - }, - { - "name": "bacon/bacon-string-utils", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/Bacon/BaconStringUtils.git", - "reference": "3d7818aca25190149a9a2415a0928d4964d6007e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Bacon/BaconStringUtils/zipball/3d7818aca25190149a9a2415a0928d4964d6007e", - "reference": "3d7818aca25190149a9a2415a0928d4964d6007e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~3.7", - "satooshi/php-coveralls": "~0.6", - "squizlabs/php_codesniffer": "~1.5", - "zendframework/zendframework": "~2.0" - }, - "suggest": { - "zendframework/zend-filter": "To use the Slugifier as a Zend\\Filter instance." - }, - "time": "2014-10-11T16:58:02+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "BaconStringUtils": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Ben Scholzen 'DASPRiD'", - "email": "mail@dasprids.de", - "homepage": "http://www.dasprids.de", - "role": "Developer" - } - ], - "description": "BaconStringUtils contain utitilies to work with strings.", - "homepage": "https://github.com/Bacon/BaconStringUtils" - }, - { - "name": "behat/gherkin", - "version": "v4.6.1", - "version_normalized": "4.6.1.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Gherkin.git", - "reference": "25bdcaf37898b4a939fa3031d5d753ced97e4759" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/25bdcaf37898b4a939fa3031d5d753ced97e4759", - "reference": "25bdcaf37898b4a939fa3031d5d753ced97e4759", - "shasum": "" - }, - "require": { - "php": ">=5.3.1" - }, - "require-dev": { - "phpunit/phpunit": "~4.5|~5", - "symfony/phpunit-bridge": "~2.7|~3|~4", - "symfony/yaml": "~2.3|~3|~4" - }, - "suggest": { - "symfony/yaml": "If you want to parse features, represented in YAML files" - }, - "time": "2020-02-27T11:29:57+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Behat\\Gherkin": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Gherkin DSL parser for PHP 5.3", - "homepage": "http://behat.org/", - "keywords": [ - "BDD", - "Behat", - "Cucumber", - "DSL", - "gherkin", - "parser" - ] - }, - { - "name": "codeception/codeception", - "version": "2.5.6", - "version_normalized": "2.5.6.0", - "source": { - "type": "git", - "url": "https://github.com/Codeception/Codeception.git", - "reference": "b83a9338296e706fab2ceb49de8a352fbca3dc98" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/b83a9338296e706fab2ceb49de8a352fbca3dc98", - "reference": "b83a9338296e706fab2ceb49de8a352fbca3dc98", - "shasum": "" - }, - "require": { - "behat/gherkin": "^4.4.0", - "codeception/phpunit-wrapper": "^6.0.9|^7.0.6", - "codeception/stub": "^2.0", - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "facebook/webdriver": ">=1.1.3 <2.0", - "guzzlehttp/guzzle": ">=4.1.4 <7.0", - "guzzlehttp/psr7": "~1.0", - "php": ">=5.6.0 <8.0", - "symfony/browser-kit": ">=2.7 <5.0", - "symfony/console": ">=2.7 <5.0", - "symfony/css-selector": ">=2.7 <5.0", - "symfony/dom-crawler": ">=2.7 <5.0", - "symfony/event-dispatcher": ">=2.7 <5.0", - "symfony/finder": ">=2.7 <5.0", - "symfony/yaml": ">=2.7 <5.0" - }, - "require-dev": { - "codeception/specify": "~0.3", - "facebook/graph-sdk": "~5.3", - "flow/jsonpath": "~0.2", - "monolog/monolog": "~1.8", - "pda/pheanstalk": "~3.0", - "php-amqplib/php-amqplib": "~2.4", - "predis/predis": "^1.0", - "squizlabs/php_codesniffer": "~2.0", - "symfony/process": ">=2.7 <5.0", - "vlucas/phpdotenv": "^3.0" - }, - "suggest": { - "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module", - "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests", - "codeception/specify": "BDD-style code blocks", - "codeception/verify": "BDD-style assertions", - "flow/jsonpath": "For using JSONPath in REST module", - "league/factory-muffin": "For DataFactory module", - "league/factory-muffin-faker": "For Faker support in DataFactory module", - "phpseclib/phpseclib": "for SFTP option in FTP Module", - "stecman/symfony-console-completion": "For BASH autocompletion", - "symfony/phpunit-bridge": "For phpunit-bridge support" - }, - "time": "2019-04-24T11:28:19+00:00", - "bin": [ - "codecept" - ], - "type": "library", - "extra": { - "branch-alias": [] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Codeception\\": "src/Codeception", - "Codeception\\Extension\\": "ext" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Bodnarchuk", - "email": "davert@mail.ua", - "homepage": "http://codegyre.com" - } - ], - "description": "BDD-style testing framework", - "homepage": "http://codeception.com/", - "keywords": [ - "BDD", - "TDD", - "acceptance testing", - "functional testing", - "unit testing" - ] - }, - { - "name": "codeception/phpunit-wrapper", - "version": "7.8.0", - "version_normalized": "7.8.0.0", - "source": { - "type": "git", - "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "bc847bd4f8f6d09012543e2a856f19fe4ecdcf3a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/bc847bd4f8f6d09012543e2a856f19fe4ecdcf3a", - "reference": "bc847bd4f8f6d09012543e2a856f19fe4ecdcf3a", - "shasum": "" - }, - "require": { - "phpunit/php-code-coverage": "^6.0", - "phpunit/phpunit": "7.5.*", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0" - }, - "require-dev": { - "codeception/specify": "*", - "vlucas/phpdotenv": "^3.0" - }, - "time": "2019-12-23T06:55:58+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Codeception\\PHPUnit\\": "src\\" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Davert", - "email": "davert.php@resend.cc" - } - ], - "description": "PHPUnit classes used by Codeception" - }, - { - "name": "codeception/stub", - "version": "2.1.0", - "version_normalized": "2.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/Codeception/Stub.git", - "reference": "853657f988942f7afb69becf3fd0059f192c705a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/853657f988942f7afb69becf3fd0059f192c705a", - "reference": "853657f988942f7afb69becf3fd0059f192c705a", - "shasum": "" - }, - "require": { - "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3" - }, - "time": "2019-03-02T15:35:10+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Codeception\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Flexible Stub wrapper for PHPUnit's Mock Builder" - }, - { - "name": "composer/ca-bundle", - "version": "1.2.6", - "version_normalized": "1.2.6.0", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/47fe531de31fca4a1b997f87308e7d7804348f7e", - "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" - }, - "time": "2020-01-13T10:02:55+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ] - }, - { - "name": "composer/composer", - "version": "1.9.3", - "version_normalized": "1.9.3.0", - "source": { - "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "1291a16ce3f48bfdeca39d64fca4875098af4d7b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/1291a16ce3f48bfdeca39d64fca4875098af4d7b", - "reference": "1291a16ce3f48bfdeca39d64fca4875098af4d7b", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" - }, - "conflict": { - "symfony/console": "2.8.38" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "time": "2020-02-04T11:58:49+00:00", - "bin": [ - "bin/composer" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", - "keywords": [ - "autoload", - "dependency", - "package" - ] - }, - { - "name": "composer/semver", - "version": "1.5.1", - "version_normalized": "1.5.1.0", + "name": "firebase/php-jwt", + "version": "v5.1.0", + "version_normalized": "5.1.0.0", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + "url": "https://github.com/firebase/php-jwt.git", + "reference": "4566062c68f76f43d44f1643f4970fe89757d4c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4566062c68f76f43d44f1643f4970fe89757d4c6", + "reference": "4566062c68f76f43d44f1643f4970fe89757d4c6", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5" + "phpunit/phpunit": "^4.8|^5" }, - "time": "2020-01-13T12:06:48+00:00", + "time": "2020-02-24T23:15:03+00:00", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "installation-source": "dist", "autoload": { "psr-4": { - "Composer\\Semver\\": "src" + "Firebase\\JWT\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" }, { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ] - }, - { - "name": "composer/spdx-licenses", - "version": "1.5.3", - "version_normalized": "1.5.3.0", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "0c3e51e1880ca149682332770e25977c70cf9dae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae", - "reference": "0c3e51e1880ca149682332770e25977c70cf9dae", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" - }, - "time": "2020-02-14T07:44:31+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ] - }, - { - "name": "composer/xdebug-handler", - "version": "1.4.1", - "version_normalized": "1.4.1.0", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" - }, - "time": "2020-03-01T12:26:26+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ] - }, - { - "name": "cweagans/composer-patches", - "version": "1.6.7", - "version_normalized": "1.6.7.0", - "source": { - "type": "git", - "url": "https://github.com/cweagans/composer-patches.git", - "reference": "2e6f72a2ad8d59cd7e2b729f218bf42adb14f590" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/2e6f72a2ad8d59cd7e2b729f218bf42adb14f590", - "reference": "2e6f72a2ad8d59cd7e2b729f218bf42adb14f590", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0", - "php": ">=5.3.0" - }, - "require-dev": { - "composer/composer": "~1.0", - "phpunit/phpunit": "~4.6" - }, - "time": "2019-08-29T20:11:49+00:00", - "type": "composer-plugin", - "extra": { - "class": "cweagans\\Composer\\Patches" - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "cweagans\\Composer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Cameron Eagans", - "email": "me@cweagans.net" - } - ], - "description": "Provides a way to patch Composer packages." - }, - { - "name": "dg/mysql-dump", - "version": "v1.5.1", - "version_normalized": "1.5.1.0", - "source": { - "type": "git", - "url": "https://github.com/dg/MySQL-dump.git", - "reference": "e0e287b715b43293773a8b0edf8514f606e01780" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dg/MySQL-dump/zipball/e0e287b715b43293773a8b0edf8514f606e01780", - "reference": "e0e287b715b43293773a8b0edf8514f606e01780", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "time": "2019-09-10T21:36:25+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "http://davidgrudl.com" - } - ], - "description": "MySQL database dump.", - "homepage": "https://github.com/dg/MySQL-dump", - "keywords": [ - "mysql" - ] - }, - { - "name": "doctrine/inflector", - "version": "1.3.1", - "version_normalized": "1.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "time": "2019-10-30T19:59:35+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ] - }, - { - "name": "doctrine/instantiator", - "version": "1.3.0", - "version_normalized": "1.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "time": "2019-10-21T16:45:58+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ] - }, - { - "name": "facebook/webdriver", - "version": "1.7.1", - "version_normalized": "1.7.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-webdriver/php-webdriver-archive.git", - "reference": "e43de70f3c7166169d0f14a374505392734160e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver-archive/zipball/e43de70f3c7166169d0f14a374505392734160e5", - "reference": "e43de70f3c7166169d0f14a374505392734160e5", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-zip": "*", - "php": "^5.6 || ~7.0", - "symfony/process": "^2.8 || ^3.1 || ^4.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "php-coveralls/php-coveralls": "^2.0", - "php-mock/php-mock-phpunit": "^1.1", - "phpunit/phpunit": "^5.7", - "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", - "squizlabs/php_codesniffer": "^2.6", - "symfony/var-dumper": "^3.3 || ^4.0" - }, - "suggest": { - "ext-SimpleXML": "For Firefox profile creation" - }, - "time": "2019-06-13T08:02:18+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-community": "1.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Facebook\\WebDriver\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "description": "A PHP client for Selenium WebDriver", - "homepage": "https://github.com/facebook/php-webdriver", - "keywords": [ - "facebook", - "php", - "selenium", - "webdriver" - ], - "abandoned": "php-webdriver/webdriver" - }, - { - "name": "firebase/php-jwt", - "version": "v5.1.0", - "version_normalized": "5.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "4566062c68f76f43d44f1643f4970fe89757d4c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4566062c68f76f43d44f1643f4970fe89757d4c6", - "reference": "4566062c68f76f43d44f1643f4970fe89757d4c6", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5" - }, - "time": "2020-02-24T23:15:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Firebase\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" - }, - { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" } ], "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", "homepage": "https://github.com/firebase/php-jwt" - }, - { - "name": "gettext/gettext", - "version": "v4.8.2", - "version_normalized": "4.8.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-gettext/Gettext.git", - "reference": "e474f872f2c8636cf53fd283ec4ce1218f3d236a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/e474f872f2c8636cf53fd283ec4ce1218f3d236a", - "reference": "e474f872f2c8636cf53fd283ec4ce1218f3d236a", - "shasum": "" - }, - "require": { - "gettext/languages": "^2.3", - "php": ">=5.4.0" - }, - "require-dev": { - "illuminate/view": "*", - "phpunit/phpunit": "^4.8|^5.7|^6.5", - "squizlabs/php_codesniffer": "^3.0", - "symfony/yaml": "~2", - "twig/extensions": "*", - "twig/twig": "^1.31|^2.0" - }, - "suggest": { - "illuminate/view": "Is necessary if you want to use the Blade extractor", - "symfony/yaml": "Is necessary if you want to use the Yaml extractor/generator", - "twig/extensions": "Is necessary if you want to use the Twig extractor", - "twig/twig": "Is necessary if you want to use the Twig extractor" - }, - "time": "2019-12-02T10:21:14+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Gettext\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oscar Otero", - "email": "oom@oscarotero.com", - "homepage": "http://oscarotero.com", - "role": "Developer" - } - ], - "description": "PHP gettext manager", - "homepage": "https://github.com/oscarotero/Gettext", - "keywords": [ - "JS", - "gettext", - "i18n", - "mo", - "po", - "translation" - ] - }, - { - "name": "gettext/languages", - "version": "2.6.0", - "version_normalized": "2.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-gettext/Languages.git", - "reference": "38ea0482f649e0802e475f0ed19fa993bcb7a618" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Languages/zipball/38ea0482f649e0802e475f0ed19fa993bcb7a618", - "reference": "38ea0482f649e0802e475f0ed19fa993bcb7a618", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16.0", - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5 || ^8.4" - }, - "time": "2019-11-13T10:30:21+00:00", - "bin": [ - "bin/export-plural-rules" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Gettext\\Languages\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michele Locati", - "email": "mlocati@gmail.com", - "role": "Developer" - } - ], - "description": "gettext languages with plural rules", - "homepage": "https://github.com/php-gettext/Languages", - "keywords": [ - "cldr", - "i18n", - "internationalization", - "l10n", - "language", - "languages", - "localization", - "php", - "plural", - "plural rules", - "plurals", - "translate", - "translations", - "unicode" - ] - }, - { - "name": "gumlet/php-image-resize", - "version": "1.9.2", - "version_normalized": "1.9.2.0", - "source": { - "type": "git", - "url": "https://github.com/gumlet/php-image-resize.git", - "reference": "06339a9c1b167acd58173db226f57957a6617547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/gumlet/php-image-resize/zipball/06339a9c1b167acd58173db226f57957a6617547", - "reference": "06339a9c1b167acd58173db226f57957a6617547", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "ext-gd": "*", - "php": ">=5.5.0" - }, - "require-dev": { - "apigen/apigen": "^4.1", - "ext-exif": "*", - "ext-gd": "*", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^4.8" - }, - "suggest": { - "ext-exif": "Auto-rotate jpeg files" - }, - "time": "2019-01-01T13:53:00+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Gumlet\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aditya Patadia", - "homepage": "http://aditya.patadia.org/" - } - ], - "description": "PHP class to re-size and scale images", - "homepage": "https://github.com/gumlet/php-image-resize", - "keywords": [ - "image", - "php", - "resize", - "scale" - ] - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.5.2", - "version_normalized": "6.5.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "time": "2019-12-23T11:57:10+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ] - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "version_normalized": "1.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "time": "2016-12-20T10:07:11+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ] - }, - { - "name": "guzzlehttp/psr7", - "version": "1.6.1", - "version_normalized": "1.6.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "time": "2019-07-01T23:21:34+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ] - }, - { - "name": "hautelook/phpass", - "version": "0.3.5", - "version_normalized": "0.3.5.0", - "source": { - "type": "git", - "url": "https://github.com/hautelook/phpass.git", - "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hautelook/phpass/zipball/b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", - "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2012-08-31T00:00:00+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Hautelook": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Public Domain" - ], - "authors": [ - { - "name": "Solar Designer", - "email": "solar@openwall.com", - "homepage": "http://openwall.com/phpass/" - } - ], - "description": "Portable PHP password hashing framework", - "homepage": "http://github.com/hautelook/phpass/", - "keywords": [ - "blowfish", - "crypt", - "password", - "security" - ] - }, - { - "name": "illuminate/contracts", - "version": "v7.0.7", - "version_normalized": "7.0.7.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/contracts.git", - "reference": "d806109dfee7b44b3633d0562aa4575c1365e0b1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/d806109dfee7b44b3633d0562aa4575c1365e0b1", - "reference": "d806109dfee7b44b3633d0562aa4575c1365e0b1", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/container": "^1.0", - "psr/simple-cache": "^1.0" - }, - "time": "2020-03-06T01:34:22+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Illuminate\\Contracts\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Contracts package.", - "homepage": "https://laravel.com" - }, - { - "name": "illuminate/support", - "version": "v7.0.7", - "version_normalized": "7.0.7.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/support.git", - "reference": "826782d01ec7a0befe26b106713822df5933ee69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/826782d01ec7a0befe26b106713822df5933ee69", - "reference": "826782d01ec7a0befe26b106713822df5933ee69", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.1", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/contracts": "^7.0", - "nesbot/carbon": "^2.17", - "php": "^7.2.5", - "voku/portable-ascii": "^1.4.8" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "suggest": { - "illuminate/filesystem": "Required to use the composer class (^7.0).", - "moontoast/math": "Required to use ordered UUIDs (^1.1).", - "ramsey/uuid": "Required to use Str::uuid() (^3.7).", - "symfony/process": "Required to use the composer class (^5.0).", - "symfony/var-dumper": "Required to use the dd function (^5.0).", - "vlucas/phpdotenv": "Required to use the Env class and env helper (^4.0)." - }, - "time": "2020-03-06T19:50:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Illuminate\\Support\\": "" - }, - "files": [ - "helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Support package.", - "homepage": "https://laravel.com" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.9", - "version_normalized": "5.2.9.0", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "time": "2019-09-25T14:49:45+00:00", - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ] - }, - { - "name": "lucatume/wp-browser", - "version": "2.2.7", - "version_normalized": "2.2.7.0", - "source": { - "type": "git", - "url": "https://github.com/lucatume/wp-browser.git", - "reference": "878fc8c00d5625f9afbc4f6f4f65164c5b522fdc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/878fc8c00d5625f9afbc4f6f4f65164c5b522fdc", - "reference": "878fc8c00d5625f9afbc4f6f4f65164c5b522fdc", - "shasum": "" - }, - "require": { - "antecedent/patchwork": "^2.0", - "codeception/codeception": "~2.5.0", - "ext-fileinfo": "*", - "ext-pdo": "*", - "gumlet/php-image-resize": "^1.6", - "lucatume/wp-browser-commons": "^1.0", - "php": ">=5.6.0", - "symfony/process": ">=2.7 <5.0", - "vlucas/phpdotenv": "^3.0", - "wp-cli/wp-cli-bundle": ">=2.0 <3.0.0" - }, - "require-dev": { - "erusev/parsedown": "^1.7", - "lucatume/codeception-snapshot-assertions": "^0.1", - "mikey179/vfsstream": "^1.6", - "squizlabs/php_codesniffer": "^3.4", - "victorjonsson/markdowndocs": "dev-master" - }, - "time": "2019-05-08T17:40:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Codeception\\": "src/Codeception", - "tad\\": "src/tad" - }, - "files": [ - "src/tad/WPBrowser/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "theAverageDev (Luca Tumedei)", - "email": "luca@theaveragedev.com", - "homepage": "http://theaveragedev.com", - "role": "Developer" - } - ], - "description": "WordPress extension of the PhpBrowser class.", - "homepage": "http://github.com/lucatume/wp-browser", - "keywords": [ - "codeception", - "wordpress" - ] - }, - { - "name": "lucatume/wp-browser-commons", - "version": "1.2.10", - "version_normalized": "1.2.10.0", - "source": { - "type": "git", - "url": "https://github.com/lucatume/wp-browser-commons.git", - "reference": "25b93939e1d123820cca02f2db175289a7d8949f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lucatume/wp-browser-commons/zipball/25b93939e1d123820cca02f2db175289a7d8949f", - "reference": "25b93939e1d123820cca02f2db175289a7d8949f", - "shasum": "" - }, - "require": { - "bacon/bacon-string-utils": "~1.0", - "codeception/codeception": "~2.1", - "dg/mysql-dump": "^1.3", - "mikemclin/laravel-wp-password": "~2.0.0", - "php": ">=5.4.0", - "symfony/filesystem": "^3.0", - "xamin/handlebars.php": "~0.10" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6" - }, - "time": "2019-05-08T14:31:06+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "tad\\": "src\\tad" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0" - ], - "authors": [ - { - "name": "Luca Tumedei", - "email": "luca@theaveragedev.com" - } - ], - "description": "Common libraries of the WP-Browser package." - }, - { - "name": "mck89/peast", - "version": "v1.10.1", - "version_normalized": "1.10.1.0", - "source": { - "type": "git", - "url": "https://github.com/mck89/peast.git", - "reference": "461fbe96212ac1b511f527fd11b942e976429398" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mck89/peast/zipball/461fbe96212ac1b511f527fd11b942e976429398", - "reference": "461fbe96212ac1b511f527fd11b942e976429398", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "time": "2019-12-22T16:46:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Peast\\": "lib/Peast/", - "Peast\\test\\": "test/Peast/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Marchiò", - "email": "marco.mm89@gmail.com" - } - ], - "description": "Peast is PHP library that generates AST for JavaScript code" - }, - { - "name": "mikemclin/laravel-wp-password", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/mikemclin/laravel-wp-password.git", - "reference": "84ff1113ff6866cdb0350c176dc3c843383e4819" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mikemclin/laravel-wp-password/zipball/84ff1113ff6866cdb0350c176dc3c843383e4819", - "reference": "84ff1113ff6866cdb0350c176dc3c843383e4819", - "shasum": "" - }, - "require": { - "hautelook/phpass": "0.3.*", - "illuminate/support": ">=4.0.0", - "php": ">=5.3.0" - }, - "replace": { - "mikemclin/laravel-wp-password": "self.version" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master" - }, - "time": "2018-01-11T14:12:02+00:00", - "type": "laravel-package", - "extra": { - "laravel": { - "providers": [ - "MikeMcLin\\WpPassword\\WpPasswordProvider" - ], - "aliases": { - "WpPassword": "MikeMcLin\\WpPassword\\Facades\\WpPassword" - } - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "MikeMcLin\\WpPassword\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike McLin", - "email": "mike@mikemclin.com", - "homepage": "http://mikemclin.net" - } - ], - "description": "Laravel package that checks and creates WordPress password hashes", - "homepage": "https://github.com/mikemclin/laravel-wp-password", - "keywords": [ - "hashing", - "laravel", - "password", - "wordpress" - ] - }, - { - "name": "mustache/mustache", - "version": "v2.13.0", - "version_normalized": "2.13.0.0", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/mustache.php.git", - "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/e95c5a008c23d3151d59ea72484d4f72049ab7f4", - "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~1.11", - "phpunit/phpunit": "~3.7|~4.0|~5.0" - }, - "time": "2019-11-23T21:40:31+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Mustache": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "A Mustache implementation in PHP.", - "homepage": "https://github.com/bobthecow/mustache.php", - "keywords": [ - "mustache", - "templating" - ] - }, - { - "name": "myclabs/deep-copy", - "version": "1.9.5", - "version_normalized": "1.9.5.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "time": "2020-01-17T21:11:47+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ] - }, - { - "name": "nb/oxymel", - "version": "v0.1.0", - "version_normalized": "0.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/nb/oxymel.git", - "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nb/oxymel/zipball/cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c", - "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "time": "2013-02-24T15:01:54+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Oxymel": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nikolay Bachiyski", - "email": "nb@nikolay.bg", - "homepage": "http://extrapolate.me/" - } - ], - "description": "A sweet XML builder", - "homepage": "https://github.com/nb/oxymel", - "keywords": [ - "xml" - ] - }, - { - "name": "nesbot/carbon", - "version": "2.31.0", - "version_normalized": "2.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", - "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/translation": "^3.4 || ^4.0 || ^5.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", - "kylekatarnls/multi-tester": "^1.1", - "phpmd/phpmd": "^2.8", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.5 || ^8.0", - "squizlabs/php_codesniffer": "^3.4" - }, - "time": "2020-03-01T11:11:58+00:00", - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" - }, - { - "name": "kylekatarnls", - "homepage": "http://github.com/kylekatarnls" - } - ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "http://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ] - }, - { - "name": "phar-io/manifest", - "version": "1.0.3", - "version_normalized": "1.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" - }, - "time": "2018-07-08T19:23:20+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "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)" - }, - { - "name": "phar-io/version", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "time": "2018-07-08T19:19:57+00:00", - "type": "library", - "installation-source": "dist", - "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" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~6" - }, - "time": "2018-08-07T13:53:10+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "installation-source": "dist", - "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" - ] - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.1.0", - "version_normalized": "5.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", - "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", - "shasum": "" - }, - "require": { - "ext-filter": "^7.1", - "php": "^7.2", - "phpdocumentor/reflection-common": "^2.0", - "phpdocumentor/type-resolver": "^1.0", - "webmozart/assert": "^1" - }, - "require-dev": { - "doctrine/instantiator": "^1", - "mockery/mockery": "^1" - }, - "time": "2020-02-22T12:28:44+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "installation-source": "dist", - "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." - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", - "shasum": "" - }, - "require": { - "php": "^7.2", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "^7.2", - "mockery/mockery": "~1" - }, - "time": "2020-02-18T18:59:58+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "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" - }, - { - "name": "phpoption/phpoption", - "version": "1.7.2", - "version_normalized": "1.7.2.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", - "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.3", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" - }, - "time": "2019-12-15T19:35:24+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ] - }, - { - "name": "phpspec/prophecy", - "version": "v1.10.3", - "version_normalized": "1.10.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "time": "2020-03-05T15:02:03+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, - "installation-source": "dist", - "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" - ] - }, - { - "name": "phpunit/php-code-coverage", - "version": "6.1.4", - "version_normalized": "6.1.4.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.1", - "phpunit/php-file-iterator": "^2.0", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.1 || ^4.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "suggest": { - "ext-xdebug": "^2.6.0" - }, - "time": "2018-10-31T16:06:48+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.1-dev" - } - }, - "installation-source": "dist", - "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" - ] - }, - { - "name": "phpunit/php-file-iterator", - "version": "2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.1" - }, - "time": "2018-09-13T20:33:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "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" - ] - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "version_normalized": "1.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2015-06-21T13:50:34+00:00", - "type": "library", - "installation-source": "dist", - "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" - ] - }, - { - "name": "phpunit/php-timer", - "version": "2.1.2", - "version_normalized": "2.1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "time": "2019-06-07T04:22:29+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "installation-source": "dist", - "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" - ] - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.1", - "version_normalized": "3.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "time": "2019-09-17T06:23:10+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ] - }, - { - "name": "phpunit/phpunit", - "version": "7.5.20", - "version_normalized": "7.5.20.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "^1.7", - "phar-io/manifest": "^1.0.2", - "phar-io/version": "^2.0", - "php": "^7.1", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.7", - "phpunit/php-file-iterator": "^2.0.1", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0", - "sebastian/environment": "^4.0", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpunit/phpunit-mock-objects": "*" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0" - }, - "time": "2020-01-08T08:45:45+00:00", - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ] - }, - { - "name": "psr/container", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2017-02-14T16:28:37+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ] - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2016-08-06T14:39:51+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ] - }, - { - "name": "psr/log", - "version": "1.1.2", - "version_normalized": "1.1.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2019-11-01T11:05:21+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ] - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2017-10-23T01:57:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ] - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "version_normalized": "3.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "time": "2019-03-08T08:55:37+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders." - }, - { - "name": "rmccue/requests", - "version": "v1.7.0", - "version_normalized": "1.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/rmccue/Requests.git", - "reference": "87932f52ffad70504d93f04f15690cf16a089546" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rmccue/Requests/zipball/87932f52ffad70504d93f04f15690cf16a089546", - "reference": "87932f52ffad70504d93f04f15690cf16a089546", - "shasum": "" - }, - "require": { - "php": ">=5.2" - }, - "require-dev": { - "requests/test-server": "dev-master" - }, - "time": "2016-10-13T00:11:37+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Requests": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Ryan McCue", - "homepage": "http://ryanmccue.info" - } - ], - "description": "A HTTP library written in PHP, for human beings.", - "homepage": "http://github.com/rmccue/Requests", - "keywords": [ - "curl", - "fsockopen", - "http", - "idna", - "ipv6", - "iri", - "sockets" - ] - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "time": "2017-03-04T06:30:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "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/" - }, - { - "name": "sebastian/comparator", - "version": "3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "shasum": "" - }, - "require": { - "php": "^7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.1" - }, - "time": "2018-07-12T15:12:46+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ] - }, - { - "name": "sebastian/diff", - "version": "3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" - }, - "time": "2019-02-04T06:01:07+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ] - }, - { - "name": "sebastian/environment", - "version": "4.2.3", - "version_normalized": "4.2.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.5" - }, - "suggest": { - "ext-posix": "*" - }, - "time": "2019-11-20T08:46:58+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, - "installation-source": "dist", - "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" - ] - }, - { - "name": "sebastian/exporter", - "version": "3.1.2", - "version_normalized": "3.1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "time": "2019-09-14T09:02:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "installation-source": "dist", - "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": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ] - }, - { - "name": "sebastian/global-state", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "time": "2017-04-27T15:39:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "installation-source": "dist", - "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" - ] - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.3", - "version_normalized": "3.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "time": "2017-08-03T12:35:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "installation-source": "dist", - "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/" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "version_normalized": "1.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "time": "2017-03-29T09:07:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "installation-source": "dist", - "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/" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "time": "2017-03-03T06:23:57+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context" - }, - { - "name": "sebastian/resource-operations", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "time": "2018-10-04T04:07:39+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "installation-source": "dist", - "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" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "time": "2016-10-03T07:35:21+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "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" - }, - { - "name": "seld/jsonlint", - "version": "1.7.2", - "version_normalized": "1.7.2.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19", - "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "time": "2019-10-24T14:27:39+00:00", - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ] - }, - { - "name": "seld/phar-utils", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0", - "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "time": "2020-02-14T15:25:33+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phar" - ] - }, - { - "name": "symfony/browser-kit", - "version": "v4.4.5", - "version_normalized": "4.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "090ce406505149d6852a7c03b0346dec3b8cf612" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/090ce406505149d6852a7c03b0346dec3b8cf612", - "reference": "090ce406505149d6852a7c03b0346dec3b8cf612", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/dom-crawler": "^3.4|^4.0|^5.0" - }, - "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/mime": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/process": "" - }, - "time": "2020-02-23T10:00:59+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony BrowserKit Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/console", - "version": "v4.4.5", - "version_normalized": "4.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", - "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "time": "2020-02-24T13:10:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/css-selector", - "version": "v4.4.5", - "version_normalized": "4.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "d0a6dd288fa8848dcc3d1f58b94de6a7cc5d2d22" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/d0a6dd288fa8848dcc3d1f58b94de6a7cc5d2d22", - "reference": "d0a6dd288fa8848dcc3d1f58b94de6a7cc5d2d22", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "time": "2020-02-04T09:01:01+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/dom-crawler", - "version": "v4.4.5", - "version_normalized": "4.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "11dcf08f12f29981bf770f097a5d64d65bce5929" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/11dcf08f12f29981bf770f097a5d64d65bce5929", - "reference": "11dcf08f12f29981bf770f097a5d64d65bce5929", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "masterminds/html5": "<2.6" - }, - "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "time": "2020-02-29T10:05:28+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DomCrawler Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/event-dispatcher", - "version": "v4.4.5", - "version_normalized": "4.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4ad8e149799d3128621a3a1f70e92b9897a8930d", - "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "time": "2020-02-04T09:32:40+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.7", - "version_normalized": "1.1.7.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" - }, - "time": "2019-09-17T09:54:03+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ] - }, - { - "name": "symfony/filesystem", - "version": "v3.4.38", - "version_normalized": "3.4.38.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "0a0d3b4bda11aa3a0464531c40e681e184e75628" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0a0d3b4bda11aa3a0464531c40e681e184e75628", - "reference": "0a0d3b4bda11aa3a0464531c40e681e184e75628", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" - }, - "time": "2020-01-17T08:50:08+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/finder", - "version": "v4.4.5", - "version_normalized": "4.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "time": "2020-02-14T07:42:58+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.14.0", - "version_normalized": "1.14.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", - "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "time": "2020-01-13T11:15:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.14-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ] - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.14.0", - "version_normalized": "1.14.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2", - "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "time": "2020-01-13T11:15:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.14-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ] - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.14.0", - "version_normalized": "1.14.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675", - "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2020-01-13T11:15:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.14-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ] - }, - { - "name": "symfony/process", - "version": "v4.4.5", - "version_normalized": "4.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/bf9166bac906c9e69fb7a11d94875e7ced97bcd7", - "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "time": "2020-02-07T20:06:44+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/service-contracts", - "version": "v2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "144c5e51266b281231e947b51223ba14acf1a749" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", - "reference": "144c5e51266b281231e947b51223ba14acf1a749", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "time": "2019-11-18T17:27:11+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ] - }, - { - "name": "symfony/translation", - "version": "v5.0.5", - "version_normalized": "5.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b", - "reference": "e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" - }, - "provide": { - "symfony/translation-implementation": "2.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "time": "2020-02-04T07:41:34+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/translation-contracts", - "version": "v2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", - "shasum": "" - }, - "require": { - "php": "^7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "time": "2019-11-18T17:27:11+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ] - }, - { - "name": "symfony/yaml", - "version": "v4.4.5", - "version_normalized": "4.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "94d005c176db2080e98825d98e01e8b311a97a88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/94d005c176db2080e98825d98e01e8b311a97a88", - "reference": "94d005c176db2080e98825d98e01e8b311a97a88", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "time": "2020-02-03T10:46:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com" - }, - { - "name": "theseer/tokenizer", - "version": "1.1.3", - "version_normalized": "1.1.3.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.0" - }, - "time": "2019-06-13T22:48:21+00:00", - "type": "library", - "installation-source": "dist", - "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" - }, - { - "name": "vlucas/phpdotenv", - "version": "v3.6.0", - "version_normalized": "3.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", - "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", - "shasum": "" - }, - "require": { - "php": "^5.4 || ^7.0", - "phpoption/phpoption": "^1.5", - "symfony/polyfill-ctype": "^1.9" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" - }, - "time": "2019-09-10T21:37:39+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.6-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "homepage": "https://gjcampbell.co.uk/" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://vancelucas.com/" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ] - }, - { - "name": "voku/portable-ascii", - "version": "1.4.9", - "version_normalized": "1.4.9.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9fd2b224c71448b5f84aef9d499a1428d79776a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9fd2b224c71448b5f84aef9d499a1428d79776a2", - "reference": "9fd2b224c71448b5f84aef9d499a1428d79776a2", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" - }, - "time": "2020-03-06T02:47:42+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "voku\\": "src/voku/", - "voku\\tests\\": "tests/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" - } - ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ] - }, - { - "name": "webmozart/assert", - "version": "1.7.0", - "version_normalized": "1.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "vimeo/psalm": "<3.6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" - }, - "time": "2020-02-14T12:15:55+00:00", - "type": "library", - "installation-source": "dist", - "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" - ] - }, - { - "name": "wp-cli/cache-command", - "version": "v2.0.3", - "version_normalized": "2.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/cache-command.git", - "reference": "d3264aecf0e981b61adc020f5f6664f6538b7434" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/d3264aecf0e981b61adc020f5f6664f6538b7434", - "reference": "d3264aecf0e981b61adc020f5f6664f6538b7434", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:43:12+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "cache", - "cache add", - "cache decr", - "cache delete", - "cache flush", - "cache get", - "cache incr", - "cache replace", - "cache set", - "cache type", - "transient", - "transient delete", - "transient get", - "transient set", - "transient type", - "transient list" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "cache-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manages object and transient caches.", - "homepage": "https://github.com/wp-cli/cache-command" - }, - { - "name": "wp-cli/checksum-command", - "version": "v2.0.3", - "version_normalized": "2.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/checksum-command.git", - "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/7db66668ec116c5ccef7bc27b4354fa81b85018a", - "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-04-25T00:28:02+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "core verify-checksums", - "plugin verify-checksums" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "checksum-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Verifies file integrity by comparing to published checksums.", - "homepage": "https://github.com/wp-cli/checksum-command" - }, - { - "name": "wp-cli/config-command", - "version": "v2.0.5", - "version_normalized": "2.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/config-command.git", - "reference": "9530dc42eebcae1fde10ad9e4aad312e06267eb9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/config-command/zipball/9530dc42eebcae1fde10ad9e4aad312e06267eb9", - "reference": "9530dc42eebcae1fde10ad9e4aad312e06267eb9", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2", - "wp-cli/wp-config-transformer": "^1.2.1" - }, - "require-dev": { - "wp-cli/db-command": "^1.3 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:43:26+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "config", - "config edit", - "config delete", - "config create", - "config get", - "config has", - "config list", - "config path", - "config set", - "config shuffle-salts" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "config-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - }, - { - "name": "Alain Schlesser", - "email": "alain.schlesser@gmail.com", - "homepage": "https://www.alainschlesser.com" - } - ], - "description": "Generates and reads the wp-config.php file.", - "homepage": "https://github.com/wp-cli/config-command" - }, - { - "name": "wp-cli/core-command", - "version": "v2.0.8", - "version_normalized": "2.0.8.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/core-command.git", - "reference": "be62a9364c77a99698364a888362a8c8b9414f2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/core-command/zipball/be62a9364c77a99698364a888362a8c8b9414f2f", - "reference": "be62a9364c77a99698364a888362a8c8b9414f2f", - "shasum": "" - }, - "require": { - "composer/semver": "^1.4", - "wp-cli/wp-cli": "^2.4" - }, - "require-dev": { - "wp-cli/checksum-command": "^1 || ^2", - "wp-cli/db-command": "^1.3 || ^2", - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T15:31:38+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "core", - "core check-update", - "core download", - "core install", - "core is-installed", - "core multisite-convert", - "core multisite-install", - "core update", - "core update-db", - "core version" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "core-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Downloads, installs, updates, and manages a WordPress installation.", - "homepage": "https://github.com/wp-cli/core-command" - }, - { - "name": "wp-cli/cron-command", - "version": "v2.0.4", - "version_normalized": "2.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/cron-command.git", - "reference": "184ce82dfd6e7284a73f039ae39cf51a5f73174e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/184ce82dfd6e7284a73f039ae39cf51a5f73174e", - "reference": "184ce82dfd6e7284a73f039ae39cf51a5f73174e", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-12-17T17:53:36+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "cron", - "cron test", - "cron event", - "cron event delete", - "cron event list", - "cron event run", - "cron event schedule", - "cron schedule", - "cron schedule list", - "cron event unschedule" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "cron-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.", - "homepage": "https://github.com/wp-cli/cron-command" - }, - { - "name": "wp-cli/db-command", - "version": "v2.0.6", - "version_normalized": "2.0.6.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/db-command.git", - "reference": "8e3cd46987241ed97ddb7f682b3505dff8d6dce4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/db-command/zipball/8e3cd46987241ed97ddb7f682b3505dff8d6dce4", - "reference": "8e3cd46987241ed97ddb7f682b3505dff8d6dce4", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2020-01-28T16:39:32+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "db", - "db clean", - "db create", - "db drop", - "db reset", - "db check", - "db optimize", - "db prefix", - "db repair", - "db cli", - "db query", - "db export", - "db import", - "db search", - "db tables", - "db size", - "db columns" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "db-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Performs basic database operations using credentials stored in wp-config.php.", - "homepage": "https://github.com/wp-cli/db-command" - }, - { - "name": "wp-cli/embed-command", - "version": "v2.0.4", - "version_normalized": "2.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/embed-command.git", - "reference": "f67fd41a056c6cb847e8601e058fa836b9e5d325" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/f67fd41a056c6cb847e8601e058fa836b9e5d325", - "reference": "f67fd41a056c6cb847e8601e058fa836b9e5d325", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:43:50+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "embed", - "embed fetch", - "embed provider", - "embed provider list", - "embed provider match", - "embed handler", - "embed handler list", - "embed cache", - "embed cache clear", - "embed cache find", - "embed cache trigger" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "WP_CLI\\Embeds\\": "src/" - }, - "files": [ - "embed-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pascal Birchler", - "homepage": "https://pascalbirchler.com/" - } - ], - "description": "Inspects oEmbed providers, clears embed cache, and more.", - "homepage": "https://github.com/wp-cli/embed-command" - }, - { - "name": "wp-cli/entity-command", - "version": "v2.0.7", - "version_normalized": "2.0.7.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/entity-command.git", - "reference": "0df89e4fba48177acf768bff9c00cda95a3fe5b9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/0df89e4fba48177acf768bff9c00cda95a3fe5b9", - "reference": "0df89e4fba48177acf768bff9c00cda95a3fe5b9", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/cache-command": "^1 || ^2", - "wp-cli/db-command": "^1.3 || ^2", - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/media-command": "^1.1 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T11:32:14+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "comment", - "comment approve", - "comment count", - "comment create", - "comment delete", - "comment exists", - "comment generate", - "comment get", - "comment list", - "comment meta", - "comment meta add", - "comment meta delete", - "comment meta get", - "comment meta list", - "comment meta patch", - "comment meta pluck", - "comment meta update", - "comment recount", - "comment spam", - "comment status", - "comment trash", - "comment unapprove", - "comment unspam", - "comment untrash", - "comment update", - "menu", - "menu create", - "menu delete", - "menu item", - "menu item add-custom", - "menu item add-post", - "menu item add-term", - "menu item delete", - "menu item list", - "menu item update", - "menu list", - "menu location", - "menu location assign", - "menu location list", - "menu location remove", - "network meta", - "network meta add", - "network meta delete", - "network meta get", - "network meta list", - "network meta patch", - "network meta pluck", - "network meta update", - "option", - "option add", - "option delete", - "option get", - "option list", - "option patch", - "option pluck", - "option update", - "post", - "post create", - "post delete", - "post edit", - "post exists", - "post generate", - "post get", - "post list", - "post meta", - "post meta add", - "post meta delete", - "post meta get", - "post meta list", - "post meta patch", - "post meta pluck", - "post meta update", - "post term", - "post term add", - "post term list", - "post term remove", - "post term set", - "post update", - "post-type", - "post-type get", - "post-type list", - "site", - "site activate", - "site archive", - "site create", - "site deactivate", - "site delete", - "site empty", - "site list", - "site mature", - "site option", - "site private", - "site public", - "site spam", - "site unarchive", - "site unmature", - "site unspam", - "taxonomy", - "taxonomy get", - "taxonomy list", - "term", - "term create", - "term delete", - "term generate", - "term get", - "term list", - "term meta", - "term meta add", - "term meta delete", - "term meta get", - "term meta list", - "term meta patch", - "term meta pluck", - "term meta update", - "term recount", - "term update", - "user", - "user add-cap", - "user add-role", - "user create", - "user delete", - "user generate", - "user get", - "user import-csv", - "user list", - "user list-caps", - "user meta", - "user meta add", - "user meta delete", - "user meta get", - "user meta list", - "user meta patch", - "user meta pluck", - "user meta update", - "user remove-cap", - "user remove-role", - "user reset-password", - "user session", - "user session destroy", - "user session list", - "user set-role", - "user spam", - "user term", - "user term add", - "user term list", - "user term remove", - "user term set", - "user unspam", - "user update" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/", - "WP_CLI\\": "src/WP_CLI" - }, - "files": [ - "entity-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage WordPress comments, menus, options, posts, sites, terms, and users.", - "homepage": "https://github.com/wp-cli/entity-command" - }, - { - "name": "wp-cli/eval-command", - "version": "v2.0.6", - "version_normalized": "2.0.6.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/eval-command.git", - "reference": "d379732f9899387a6a631ccea5116b3da6f16300" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/d379732f9899387a6a631ccea5116b3da6f16300", - "reference": "d379732f9899387a6a631ccea5116b3da6f16300", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2020-02-06T11:24:47+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "eval", - "eval-file" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "eval-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Executes arbitrary PHP code or files.", - "homepage": "https://github.com/wp-cli/eval-command" - }, - { - "name": "wp-cli/export-command", - "version": "v2.0.3", - "version_normalized": "2.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/export-command.git", - "reference": "a31b1777a199a8437127ad3db1b6b92e9cb5cd9b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/export-command/zipball/a31b1777a199a8437127ad3db1b6b92e9cb5cd9b", - "reference": "a31b1777a199a8437127ad3db1b6b92e9cb5cd9b", - "shasum": "" - }, - "require": { - "nb/oxymel": "~0.1.0", - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/db-command": "^1.3 || ^2", - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/import-command": "^1 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-07-16T16:39:17+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "export" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "export-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Exports WordPress content to a WXR file.", - "homepage": "https://github.com/wp-cli/export-command" - }, - { - "name": "wp-cli/extension-command", - "version": "v2.0.8", - "version_normalized": "2.0.8.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/extension-command.git", - "reference": "3f55805356ccc502f38a24f224b8943f181d4813" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/3f55805356ccc502f38a24f224b8943f181d4813", - "reference": "3f55805356ccc502f38a24f224b8943f181d4813", - "shasum": "" - }, - "require": { - "composer/semver": "^1.4", - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/scaffold-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1.6" - }, - "time": "2020-02-24T02:53:35+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "plugin", - "plugin activate", - "plugin deactivate", - "plugin delete", - "plugin get", - "plugin install", - "plugin is-installed", - "plugin list", - "plugin path", - "plugin search", - "plugin status", - "plugin toggle", - "plugin uninstall", - "plugin update", - "theme", - "theme activate", - "theme delete", - "theme disable", - "theme enable", - "theme get", - "theme install", - "theme is-installed", - "theme list", - "theme mod", - "theme mod get", - "theme mod set", - "theme mod remove", - "theme path", - "theme search", - "theme status", - "theme update", - "theme mod list" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "extension-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manages plugins and themes, including installs, activations, and updates.", - "homepage": "https://github.com/wp-cli/extension-command" - }, - { - "name": "wp-cli/i18n-command", - "version": "v2.2.2", - "version_normalized": "2.2.2.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/i18n-command.git", - "reference": "2804c5246d9338da59951737b03c54d257be8e47" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/2804c5246d9338da59951737b03c54d257be8e47", - "reference": "2804c5246d9338da59951737b03c54d257be8e47", - "shasum": "" - }, - "require": { - "gettext/gettext": "^4.8", - "mck89/peast": "^1.8", - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/scaffold-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1.3" - }, - "time": "2019-12-13T09:00:43+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "i18n", - "i18n make-pot", - "i18n make-json" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "WP_CLI\\I18n\\": "src/" - }, - "files": [ - "i18n-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pascal Birchler", - "homepage": "https://pascalbirchler.com/" - } - ], - "description": "Provides internationalization tools for WordPress projects.", - "homepage": "https://github.com/wp-cli/i18n-command" - }, - { - "name": "wp-cli/import-command", - "version": "v2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/import-command.git", - "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/import-command/zipball/e28a7f55138ceb53f2ff5926874d8e5582c87db8", - "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/export-command": "^1 || ^2", - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-04-19T14:32:57+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "import" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "import-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Imports content from a given WXR file.", - "homepage": "https://github.com/wp-cli/import-command" - }, - { - "name": "wp-cli/language-command", - "version": "v2.0.5", - "version_normalized": "2.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/language-command.git", - "reference": "a14a385efffba2060f947afa85f7ffd7e7cda5d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/language-command/zipball/a14a385efffba2060f947afa85f7ffd7e7cda5d7", - "reference": "a14a385efffba2060f947afa85f7ffd7e7cda5d7", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/db-command": "^1.3 || ^2", - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:33:31+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "language", - "language core", - "language core activate", - "language core is-installed", - "language core install", - "language core list", - "language core uninstall", - "language core update", - "language plugin", - "language plugin is-installed", - "language plugin install", - "language plugin list", - "language plugin uninstall", - "language plugin update", - "language theme", - "language theme is-installed", - "language theme install", - "language theme list", - "language theme uninstall", - "language theme update" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "language-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Installs, activates, and manages language packs.", - "homepage": "https://github.com/wp-cli/language-command" - }, - { - "name": "wp-cli/maintenance-mode-command", - "version": "v2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/maintenance-mode-command.git", - "reference": "3c80e731e1032607a2e9589ae6b6398e95c05b91" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/maintenance-mode-command/zipball/3c80e731e1032607a2e9589ae6b6398e95c05b91", - "reference": "3c80e731e1032607a2e9589ae6b6398e95c05b91", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:32:41+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "maintenance-mode", - "maintenance-mode activate", - "maintenance-mode deactivate", - "maintenance-mode status", - "maintenance-mode is-active" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "WP_CLI\\MaintenanceMode\\": "src/" - }, - "files": [ - "maintenance-mode-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thrijith Thankachan", - "email": "thrijith13@gmail.com", - "homepage": "https://thrijith.com" - } - ], - "description": "Activates, deactivates or checks the status of the maintenance mode of a site.", - "homepage": "https://github.com/wp-cli/maintenance-mode-command" - }, - { - "name": "wp-cli/media-command", - "version": "v2.0.7", - "version_normalized": "2.0.7.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/media-command.git", - "reference": "0b7fbee4c4aa9335b83fd5c65183808949ba1c8e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/media-command/zipball/0b7fbee4c4aa9335b83fd5c65183808949ba1c8e", - "reference": "0b7fbee4c4aa9335b83fd5c65183808949ba1c8e", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/extension-command": "^2.0", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T11:32:15+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "media", - "media import", - "media regenerate", - "media image-size" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "media-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.", - "homepage": "https://github.com/wp-cli/media-command" - }, - { - "name": "wp-cli/mustangostang-spyc", - "version": "0.6.3", - "version_normalized": "0.6.3.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/spyc.git", - "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/spyc/zipball/6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7", - "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7", - "shasum": "" - }, - "require": { - "php": ">=5.3.1" - }, - "require-dev": { - "phpunit/phpunit": "4.3.*@dev" - }, - "time": "2017-04-25T11:26:20+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Mustangostang\\": "src/" - }, - "files": [ - "includes/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "mustangostang", - "email": "vlad.andersen@gmail.com" - } - ], - "description": "A simple YAML loader/dumper class for PHP (WP-CLI fork)", - "homepage": "https://github.com/mustangostang/spyc/" - }, - { - "name": "wp-cli/package-command", - "version": "v2.0.6", - "version_normalized": "2.0.6.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/package-command.git", - "reference": "92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/package-command/zipball/92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a", - "reference": "92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a", - "shasum": "" - }, - "require": { - "composer/composer": ">=1.2.0 <1.7.0 || ^1.7.1", - "ext-json": "*", - "wp-cli/wp-cli": "^2.1" - }, - "require-dev": { - "wp-cli/scaffold-command": "^1 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2020-01-28T12:55:09+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "package", - "package browse", - "package install", - "package list", - "package update", - "package uninstall" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "package-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Lists, installs, and removes WP-CLI packages.", - "homepage": "https://github.com/wp-cli/package-command" - }, - { - "name": "wp-cli/php-cli-tools", - "version": "v0.11.11", - "version_normalized": "0.11.11.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/php-cli-tools.git", - "reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f", - "reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f", - "shasum": "" - }, - "require": { - "php": ">= 5.3.0" - }, - "time": "2018-09-04T13:28:00+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "cli": "lib/" - }, - "files": [ - "lib/cli/cli.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "James Logsdon", - "email": "jlogsdon@php.net", - "role": "Developer" - }, - { - "name": "Daniel Bachhuber", - "email": "daniel@handbuilt.co", - "role": "Maintainer" - } - ], - "description": "Console utilities for PHP", - "homepage": "http://github.com/wp-cli/php-cli-tools", - "keywords": [ - "cli", - "console" - ] - }, - { - "name": "wp-cli/rewrite-command", - "version": "v2.0.4", - "version_normalized": "2.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/rewrite-command.git", - "reference": "3879bcbf7e695f68097cedb8415ed04915a25465" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/3879bcbf7e695f68097cedb8415ed04915a25465", - "reference": "3879bcbf7e695f68097cedb8415ed04915a25465", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:31:23+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "rewrite", - "rewrite flush", - "rewrite list", - "rewrite structure" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "rewrite-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.", - "homepage": "https://github.com/wp-cli/rewrite-command" - }, - { - "name": "wp-cli/role-command", - "version": "v2.0.3", - "version_normalized": "2.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/role-command.git", - "reference": "bad54a1b02331ee6460cc6a6f967e37dd91e07a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/role-command/zipball/bad54a1b02331ee6460cc6a6f967e37dd91e07a3", - "reference": "bad54a1b02331ee6460cc6a6f967e37dd91e07a3", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:30:59+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "role", - "role create", - "role delete", - "role exists", - "role list", - "role reset", - "cap", - "cap add", - "cap list", - "cap remove" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "role-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Adds, removes, lists, and resets roles and capabilities.", - "homepage": "https://github.com/wp-cli/role-command" - }, - { - "name": "wp-cli/scaffold-command", - "version": "v2.0.8", - "version_normalized": "2.0.8.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/scaffold-command.git", - "reference": "4814acbdf3d7af499530cc1ae1e82f3ed9f12674" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/4814acbdf3d7af499530cc1ae1e82f3ed9f12674", - "reference": "4814acbdf3d7af499530cc1ae1e82f3ed9f12674", - "shasum": "" - }, - "require": { - "php": "^5.4 || ^7.0", - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-25T13:26:31+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "scaffold", - "scaffold underscores", - "scaffold block", - "scaffold child-theme", - "scaffold plugin", - "scaffold plugin-tests", - "scaffold post-type", - "scaffold taxonomy", - "scaffold theme-tests" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "scaffold-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.", - "homepage": "https://github.com/wp-cli/scaffold-command" - }, - { - "name": "wp-cli/search-replace-command", - "version": "v2.0.6", - "version_normalized": "2.0.6.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/search-replace-command.git", - "reference": "f446ca1f90144b496dbacb373868118ba40df028" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/f446ca1f90144b496dbacb373868118ba40df028", - "reference": "f446ca1f90144b496dbacb373868118ba40df028", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/db-command": "^1.3 || ^2", - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-12-13T09:13:20+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "search-replace" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "search-replace-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Searches/replaces strings in the database.", - "homepage": "https://github.com/wp-cli/search-replace-command" - }, - { - "name": "wp-cli/server-command", - "version": "v2.0.4", - "version_normalized": "2.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/server-command.git", - "reference": "b0c8db803aea2133973a9a35b0d94fb62487b456" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/server-command/zipball/b0c8db803aea2133973a9a35b0d94fb62487b456", - "reference": "b0c8db803aea2133973a9a35b0d94fb62487b456", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T11:32:15+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "server" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "server-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Launches PHP's built-in web server for a specific WordPress installation.", - "homepage": "https://github.com/wp-cli/server-command" - }, - { - "name": "wp-cli/shell-command", - "version": "v2.0.4", - "version_normalized": "2.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/shell-command.git", - "reference": "293cc82fe6e99c0168bf834787ac5d0e17825723" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/293cc82fe6e99c0168bf834787ac5d0e17825723", - "reference": "293cc82fe6e99c0168bf834787ac5d0e17825723", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:29:25+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "shell" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/", - "WP_CLI\\": "src/WP_CLI" - }, - "files": [ - "shell-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Opens an interactive PHP console for running and testing PHP code.", - "homepage": "https://github.com/wp-cli/shell-command" - }, - { - "name": "wp-cli/super-admin-command", - "version": "v2.0.3", - "version_normalized": "2.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/super-admin-command.git", - "reference": "b3f3078d25c17ee586a5f31cb5ce3553613e85b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/b3f3078d25c17ee586a5f31cb5ce3553613e85b4", - "reference": "b3f3078d25c17ee586a5f31cb5ce3553613e85b4", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2" - }, - "require-dev": { - "wp-cli/entity-command": "^1.3 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2019-11-12T01:28:59+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "super-admin", - "super-admin add", - "super-admin list", - "super-admin remove" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "super-admin-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Lists, adds, or removes super admin users on a multisite installation.", - "homepage": "https://github.com/wp-cli/super-admin-command" - }, - { - "name": "wp-cli/widget-command", - "version": "v2.1.0", - "version_normalized": "2.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/widget-command.git", - "reference": "ddbc2c3e9966fae8de05a3200b04e0faf42fe06f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/ddbc2c3e9966fae8de05a3200b04e0faf42fe06f", - "reference": "ddbc2c3e9966fae8de05a3200b04e0faf42fe06f", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "^2.4" - }, - "require-dev": { - "wp-cli/extension-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "time": "2020-01-18T02:17:30+00:00", - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "bundled": true, - "commands": [ - "widget", - "widget add", - "widget deactivate", - "widget delete", - "widget list", - "widget move", - "widget reset", - "widget update", - "sidebar", - "sidebar list" - ] - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "widget-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Adds, moves, and removes widgets; lists sidebars.", - "homepage": "https://github.com/wp-cli/widget-command" - }, - { - "name": "wp-cli/wp-cli", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/wp-cli.git", - "reference": "ceb18598e79befa9b2a37a51efbb34910628988b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/ceb18598e79befa9b2a37a51efbb34910628988b", - "reference": "ceb18598e79befa9b2a37a51efbb34910628988b", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "mustache/mustache": "~2.13", - "php": "^5.4 || ^7.0", - "rmccue/requests": "~1.6", - "symfony/finder": ">2.7", - "wp-cli/mustangostang-spyc": "^0.6.3", - "wp-cli/php-cli-tools": "~0.11.2" - }, - "require-dev": { - "roave/security-advisories": "dev-master", - "wp-cli/db-command": "^1.3 || ^2", - "wp-cli/entity-command": "^1.2 || ^2", - "wp-cli/extension-command": "^1.1 || ^2", - "wp-cli/package-command": "^1 || ^2", - "wp-cli/wp-cli-tests": "^2.1" - }, - "suggest": { - "ext-readline": "Include for a better --prompt implementation", - "ext-zip": "Needed to support extraction of ZIP archives when doing downloads or updates" - }, - "time": "2020-02-18T08:15:37+00:00", - "bin": [ - "bin/wp", - "bin/wp.bat" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "WP_CLI": "php" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "WP-CLI framework", - "homepage": "https://wp-cli.org", - "keywords": [ - "cli", - "wordpress" - ] - }, - { - "name": "wp-cli/wp-cli-bundle", - "version": "v2.4.0", - "version_normalized": "2.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/wp-cli-bundle.git", - "reference": "713bc75b2f88550920dedc4f2ad3e1daf9f76326" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-cli-bundle/zipball/713bc75b2f88550920dedc4f2ad3e1daf9f76326", - "reference": "713bc75b2f88550920dedc4f2ad3e1daf9f76326", - "shasum": "" - }, - "require": { - "cweagans/composer-patches": "^1.6", - "php": ">=5.4", - "wp-cli/cache-command": "^2", - "wp-cli/checksum-command": "^2", - "wp-cli/config-command": "^2", - "wp-cli/core-command": "^2", - "wp-cli/cron-command": "^2", - "wp-cli/db-command": "^2", - "wp-cli/embed-command": "^2", - "wp-cli/entity-command": "^2", - "wp-cli/eval-command": "^2", - "wp-cli/export-command": "^2", - "wp-cli/extension-command": "^2", - "wp-cli/i18n-command": "^2", - "wp-cli/import-command": "^2", - "wp-cli/language-command": "^2", - "wp-cli/maintenance-mode-command": "^2", - "wp-cli/media-command": "^2", - "wp-cli/package-command": "^2", - "wp-cli/rewrite-command": "^2", - "wp-cli/role-command": "^2", - "wp-cli/scaffold-command": "^2", - "wp-cli/search-replace-command": "^2", - "wp-cli/server-command": "^2", - "wp-cli/shell-command": "^2", - "wp-cli/super-admin-command": "^2", - "wp-cli/widget-command": "^2", - "wp-cli/wp-cli": "^2.4" - }, - "require-dev": { - "roave/security-advisories": "dev-master", - "wp-cli/wp-cli-tests": "^2.1" - }, - "suggest": { - "psy/psysh": "Enhanced `wp shell` functionality" - }, - "time": "2019-11-12T17:43:58+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - }, - "enable-patching": true - }, - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "WP-CLI bundle package with default commands.", - "homepage": "https://wp-cli.org", - "keywords": [ - "cli", - "wordpress" - ] - }, - { - "name": "wp-cli/wp-config-transformer", - "version": "v1.2.6", - "version_normalized": "1.2.6.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/wp-config-transformer.git", - "reference": "1ca98343443a8e4585865db5f50e8e6121fee70b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-config-transformer/zipball/1ca98343443a8e4585865db5f50e8e6121fee70b", - "reference": "1ca98343443a8e4585865db5f50e8e6121fee70b", - "shasum": "" - }, - "require": { - "php": ">=5.3.29" - }, - "require-dev": { - "composer/composer": "^1.5.6", - "phpunit/phpunit": "^6.5.5", - "wp-coding-standards/wpcs": "^0.14.0 || ^1.0.0 || ^2.0.0" - }, - "time": "2019-07-23T17:24:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/WPConfigTransformer.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frankie Jarrett", - "email": "fjarrett@gmail.com" - } - ], - "description": "Programmatically edit a wp-config.php file." - }, - { - "name": "xamin/handlebars.php", - "version": "v0.10.4", - "version_normalized": "0.10.4.0", - "source": { - "type": "git", - "url": "https://github.com/XaminProject/handlebars.php.git", - "reference": "b85cee07eae96db0e1eec224ca90f5ce1e4d857a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/XaminProject/handlebars.php/zipball/b85cee07eae96db0e1eec224ca90f5ce1e4d857a", - "reference": "b85cee07eae96db0e1eec224ca90f5ce1e4d857a", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4.4", - "squizlabs/php_codesniffer": "~1.5" - }, - "time": "2016-12-12T13:51:02+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Handlebars": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "fzerorubigd", - "email": "fzerorubigd@gmail.com" - }, - { - "name": "Behrooz Shabani (everplays)", - "email": "everplays@gmail.com" - } - ], - "description": "Handlebars processor for php", - "homepage": "https://github.com/XaminProject/handlebars.php", - "abandoned": true } ] diff --git a/vendor/composer/semver/CHANGELOG.md b/vendor/composer/semver/CHANGELOG.md deleted file mode 100644 index ee0c2ef..0000000 --- a/vendor/composer/semver/CHANGELOG.md +++ /dev/null @@ -1,78 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -This project adheres to [Semantic Versioning](http://semver.org/). - -### [1.5.1] 2020-01-13 - - * Fixed: Parsing of aliased version was not validating the alias to be a valid version - -### [1.5.0] 2019-03-19 - - * Added: some support for date versions (e.g. 201903) in `~` operator - * Fixed: support for stabilities in `~` operator was inconsistent - -### [1.4.2] 2016-08-30 - - * Fixed: collapsing of complex constraints lead to buggy constraints - -### [1.4.1] 2016-06-02 - - * Changed: branch-like requirements no longer strip build metadata - [composer/semver#38](https://github.com/composer/semver/pull/38). - -### [1.4.0] 2016-03-30 - - * Added: getters on MultiConstraint - [composer/semver#35](https://github.com/composer/semver/pull/35). - -### [1.3.0] 2016-02-25 - - * Fixed: stability parsing - [composer/composer#1234](https://github.com/composer/composer/issues/4889). - * Changed: collapse contiguous constraints when possible. - -### [1.2.0] 2015-11-10 - - * Changed: allow multiple numerical identifiers in 'pre-release' version part. - * Changed: add more 'v' prefix support. - -### [1.1.0] 2015-11-03 - - * Changed: dropped redundant `test` namespace. - * Changed: minor adjustment in datetime parsing normalization. - * Changed: `ConstraintInterface` relaxed, setPrettyString is not required anymore. - * Changed: `AbstractConstraint` marked deprecated, will be removed in 2.0. - * Changed: `Constraint` is now extensible. - -### [1.0.0] 2015-09-21 - - * Break: `VersionConstraint` renamed to `Constraint`. - * Break: `SpecificConstraint` renamed to `AbstractConstraint`. - * Break: `LinkConstraintInterface` renamed to `ConstraintInterface`. - * Break: `VersionParser::parseNameVersionPairs` was removed. - * Changed: `VersionParser::parseConstraints` allows (but ignores) build metadata now. - * Changed: `VersionParser::parseConstraints` allows (but ignores) prefixing numeric versions with a 'v' now. - * Changed: Fixed namespace(s) of test files. - * Changed: `Comparator::compare` no longer throws `InvalidArgumentException`. - * Changed: `Constraint` now throws `InvalidArgumentException`. - -### [0.1.0] 2015-07-23 - - * Added: `Composer\Semver\Comparator`, various methods to compare versions. - * Added: various documents such as README.md, LICENSE, etc. - * Added: configuration files for Git, Travis, php-cs-fixer, phpunit. - * Break: the following namespaces were renamed: - - Namespace: `Composer\Package\Version` -> `Composer\Semver` - - Namespace: `Composer\Package\LinkConstraint` -> `Composer\Semver\Constraint` - - Namespace: `Composer\Test\Package\Version` -> `Composer\Test\Semver` - - Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint` - * Changed: code style using php-cs-fixer. - -[1.5.1]: https://github.com/composer/semver/compare/1.5.0...1.5.1 -[1.5.0]: https://github.com/composer/semver/compare/1.4.2...1.5.0 -[1.4.2]: https://github.com/composer/semver/compare/1.4.1...1.4.2 -[1.4.1]: https://github.com/composer/semver/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/composer/semver/compare/1.3.0...1.4.0 -[1.3.0]: https://github.com/composer/semver/compare/1.2.0...1.3.0 -[1.2.0]: https://github.com/composer/semver/compare/1.1.0...1.2.0 -[1.1.0]: https://github.com/composer/semver/compare/1.0.0...1.1.0 -[1.0.0]: https://github.com/composer/semver/compare/0.1.0...1.0.0 -[0.1.0]: https://github.com/composer/semver/compare/5e0b9a4da...0.1.0 diff --git a/vendor/composer/semver/LICENSE b/vendor/composer/semver/LICENSE deleted file mode 100644 index 4669758..0000000 --- a/vendor/composer/semver/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2015 Composer - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/composer/semver/README.md b/vendor/composer/semver/README.md deleted file mode 100644 index 143daa0..0000000 --- a/vendor/composer/semver/README.md +++ /dev/null @@ -1,70 +0,0 @@ -composer/semver -=============== - -Semver library that offers utilities, version constraint parsing and validation. - -Originally written as part of [composer/composer](https://github.com/composer/composer), -now extracted and made available as a stand-alone library. - -[![Build Status](https://travis-ci.org/composer/semver.svg?branch=master)](https://travis-ci.org/composer/semver) - - -Installation ------------- - -Install the latest version with: - -```bash -$ composer require composer/semver -``` - - -Requirements ------------- - -* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. - - -Version Comparison ------------------- - -For details on how versions are compared, refer to the [Versions](https://getcomposer.org/doc/articles/versions.md) -article in the documentation section of the [getcomposer.org](https://getcomposer.org) website. - - -Basic usage ------------ - -### Comparator - -The `Composer\Semver\Comparator` class provides the following methods for comparing versions: - -* greaterThan($v1, $v2) -* greaterThanOrEqualTo($v1, $v2) -* lessThan($v1, $v2) -* lessThanOrEqualTo($v1, $v2) -* equalTo($v1, $v2) -* notEqualTo($v1, $v2) - -Each function takes two version strings as arguments. For example: - -```php -use Composer\Semver\Comparator; - -Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0 -``` - -### Semver - -The `Composer\Semver\Semver` class provides the following methods: - -* satisfies($version, $constraints) -* satisfiedBy(array $versions, $constraint) -* sort($versions) -* rsort($versions) - - -License -------- - -composer/semver is licensed under the MIT License, see the LICENSE file for details. diff --git a/vendor/composer/semver/composer.json b/vendor/composer/semver/composer.json deleted file mode 100644 index 981e7d1..0000000 --- a/vendor/composer/semver/composer.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "composer/semver", - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "type": "library", - "license": "MIT", - "keywords": [ - "semver", - "semantic", - "versioning", - "validation" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5" - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Composer\\Semver\\": "tests" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "scripts": { - "test": "phpunit" - } -} diff --git a/vendor/composer/semver/src/Comparator.php b/vendor/composer/semver/src/Comparator.php deleted file mode 100644 index a9d758f..0000000 --- a/vendor/composer/semver/src/Comparator.php +++ /dev/null @@ -1,111 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\Constraint; - -class Comparator -{ - /** - * Evaluates the expression: $version1 > $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function greaterThan($version1, $version2) - { - return self::compare($version1, '>', $version2); - } - - /** - * Evaluates the expression: $version1 >= $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function greaterThanOrEqualTo($version1, $version2) - { - return self::compare($version1, '>=', $version2); - } - - /** - * Evaluates the expression: $version1 < $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function lessThan($version1, $version2) - { - return self::compare($version1, '<', $version2); - } - - /** - * Evaluates the expression: $version1 <= $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function lessThanOrEqualTo($version1, $version2) - { - return self::compare($version1, '<=', $version2); - } - - /** - * Evaluates the expression: $version1 == $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function equalTo($version1, $version2) - { - return self::compare($version1, '==', $version2); - } - - /** - * Evaluates the expression: $version1 != $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function notEqualTo($version1, $version2) - { - return self::compare($version1, '!=', $version2); - } - - /** - * Evaluates the expression: $version1 $operator $version2. - * - * @param string $version1 - * @param string $operator - * @param string $version2 - * - * @return bool - */ - public static function compare($version1, $operator, $version2) - { - $constraint = new Constraint($operator, $version2); - - return $constraint->matches(new Constraint('==', $version1)); - } -} diff --git a/vendor/composer/semver/src/Constraint/AbstractConstraint.php b/vendor/composer/semver/src/Constraint/AbstractConstraint.php deleted file mode 100644 index 7b5270f..0000000 --- a/vendor/composer/semver/src/Constraint/AbstractConstraint.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -trigger_error('The ' . __NAMESPACE__ . '\AbstractConstraint abstract class is deprecated, there is no replacement for it, it will be removed in the next major version.', E_USER_DEPRECATED); - -/** - * Base constraint class. - */ -abstract class AbstractConstraint implements ConstraintInterface -{ - /** @var string */ - protected $prettyString; - - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider) - { - if ($provider instanceof $this) { - // see note at bottom of this class declaration - return $this->matchSpecific($provider); - } - - // turn matching around to find a match - return $provider->matches($this); - } - - /** - * @param string $prettyString - */ - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - - /** - * @return string - */ - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - - return $this->__toString(); - } - - // implementations must implement a method of this format: - // not declared abstract here because type hinting violates parameter coherence (TODO right word?) - // public function matchSpecific( $provider); -} diff --git a/vendor/composer/semver/src/Constraint/Constraint.php b/vendor/composer/semver/src/Constraint/Constraint.php deleted file mode 100644 index c8c90f0..0000000 --- a/vendor/composer/semver/src/Constraint/Constraint.php +++ /dev/null @@ -1,215 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -/** - * Defines a constraint. - */ -class Constraint implements ConstraintInterface -{ - /* operator integer values */ - const OP_EQ = 0; - const OP_LT = 1; - const OP_LE = 2; - const OP_GT = 3; - const OP_GE = 4; - const OP_NE = 5; - - /** - * Operator to integer translation table. - * - * @var array - */ - private static $transOpStr = array( - '=' => self::OP_EQ, - '==' => self::OP_EQ, - '<' => self::OP_LT, - '<=' => self::OP_LE, - '>' => self::OP_GT, - '>=' => self::OP_GE, - '<>' => self::OP_NE, - '!=' => self::OP_NE, - ); - - /** - * Integer to operator translation table. - * - * @var array - */ - private static $transOpInt = array( - self::OP_EQ => '==', - self::OP_LT => '<', - self::OP_LE => '<=', - self::OP_GT => '>', - self::OP_GE => '>=', - self::OP_NE => '!=', - ); - - /** @var string */ - protected $operator; - - /** @var string */ - protected $version; - - /** @var string */ - protected $prettyString; - - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider) - { - if ($provider instanceof $this) { - return $this->matchSpecific($provider); - } - - // turn matching around to find a match - return $provider->matches($this); - } - - /** - * @param string $prettyString - */ - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - - /** - * @return string - */ - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - - return $this->__toString(); - } - - /** - * Get all supported comparison operators. - * - * @return array - */ - public static function getSupportedOperators() - { - return array_keys(self::$transOpStr); - } - - /** - * Sets operator and version to compare with. - * - * @param string $operator - * @param string $version - * - * @throws \InvalidArgumentException if invalid operator is given. - */ - public function __construct($operator, $version) - { - if (!isset(self::$transOpStr[$operator])) { - throw new \InvalidArgumentException(sprintf( - 'Invalid operator "%s" given, expected one of: %s', - $operator, - implode(', ', self::getSupportedOperators()) - )); - } - - $this->operator = self::$transOpStr[$operator]; - $this->version = $version; - } - - /** - * @param string $a - * @param string $b - * @param string $operator - * @param bool $compareBranches - * - * @throws \InvalidArgumentException if invalid operator is given. - * - * @return bool - */ - public function versionCompare($a, $b, $operator, $compareBranches = false) - { - if (!isset(self::$transOpStr[$operator])) { - throw new \InvalidArgumentException(sprintf( - 'Invalid operator "%s" given, expected one of: %s', - $operator, - implode(', ', self::getSupportedOperators()) - )); - } - - $aIsBranch = 'dev-' === substr($a, 0, 4); - $bIsBranch = 'dev-' === substr($b, 0, 4); - - if ($aIsBranch && $bIsBranch) { - return $operator === '==' && $a === $b; - } - - // when branches are not comparable, we make sure dev branches never match anything - if (!$compareBranches && ($aIsBranch || $bIsBranch)) { - return false; - } - - return version_compare($a, $b, $operator); - } - - /** - * @param Constraint $provider - * @param bool $compareBranches - * - * @return bool - */ - public function matchSpecific(Constraint $provider, $compareBranches = false) - { - $noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]); - $providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]); - - $isEqualOp = self::OP_EQ === $this->operator; - $isNonEqualOp = self::OP_NE === $this->operator; - $isProviderEqualOp = self::OP_EQ === $provider->operator; - $isProviderNonEqualOp = self::OP_NE === $provider->operator; - - // '!=' operator is match when other operator is not '==' operator or version is not match - // these kinds of comparisons always have a solution - if ($isNonEqualOp || $isProviderNonEqualOp) { - return (!$isEqualOp && !$isProviderEqualOp) - || $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); - } - - // an example for the condition is <= 2.0 & < 1.0 - // these kinds of comparisons always have a solution - if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { - return true; - } - - if ($this->versionCompare($provider->version, $this->version, self::$transOpInt[$this->operator], $compareBranches)) { - // special case, e.g. require >= 1.0 and provide < 1.0 - // 1.0 >= 1.0 but 1.0 is outside of the provided interval - return !($provider->version === $this->version - && self::$transOpInt[$provider->operator] === $providerNoEqualOp - && self::$transOpInt[$this->operator] !== $noEqualOp); - } - - return false; - } - - /** - * @return string - */ - public function __toString() - { - return self::$transOpInt[$this->operator] . ' ' . $this->version; - } -} diff --git a/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/vendor/composer/semver/src/Constraint/ConstraintInterface.php deleted file mode 100644 index 7cb13b6..0000000 --- a/vendor/composer/semver/src/Constraint/ConstraintInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -interface ConstraintInterface -{ - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider); - - /** - * @return string - */ - public function getPrettyString(); - - /** - * @return string - */ - public function __toString(); -} diff --git a/vendor/composer/semver/src/Constraint/EmptyConstraint.php b/vendor/composer/semver/src/Constraint/EmptyConstraint.php deleted file mode 100644 index cb89cd2..0000000 --- a/vendor/composer/semver/src/Constraint/EmptyConstraint.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -/** - * Defines the absence of a constraint. - */ -class EmptyConstraint implements ConstraintInterface -{ - /** @var string */ - protected $prettyString; - - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider) - { - return true; - } - - /** - * @param $prettyString - */ - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - - /** - * @return string - */ - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - - return (string) $this; - } - - /** - * @return string - */ - public function __toString() - { - return '[]'; - } -} diff --git a/vendor/composer/semver/src/Constraint/MultiConstraint.php b/vendor/composer/semver/src/Constraint/MultiConstraint.php deleted file mode 100644 index f8a60e4..0000000 --- a/vendor/composer/semver/src/Constraint/MultiConstraint.php +++ /dev/null @@ -1,120 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -/** - * Defines a conjunctive or disjunctive set of constraints. - */ -class MultiConstraint implements ConstraintInterface -{ - /** @var ConstraintInterface[] */ - protected $constraints; - - /** @var string */ - protected $prettyString; - - /** @var bool */ - protected $conjunctive; - - /** - * @param ConstraintInterface[] $constraints A set of constraints - * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive - */ - public function __construct(array $constraints, $conjunctive = true) - { - $this->constraints = $constraints; - $this->conjunctive = $conjunctive; - } - - /** - * @return ConstraintInterface[] - */ - public function getConstraints() - { - return $this->constraints; - } - - /** - * @return bool - */ - public function isConjunctive() - { - return $this->conjunctive; - } - - /** - * @return bool - */ - public function isDisjunctive() - { - return !$this->conjunctive; - } - - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider) - { - if (false === $this->conjunctive) { - foreach ($this->constraints as $constraint) { - if ($constraint->matches($provider)) { - return true; - } - } - - return false; - } - - foreach ($this->constraints as $constraint) { - if (!$constraint->matches($provider)) { - return false; - } - } - - return true; - } - - /** - * @param string $prettyString - */ - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - - /** - * @return string - */ - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - - return (string) $this; - } - - /** - * @return string - */ - public function __toString() - { - $constraints = array(); - foreach ($this->constraints as $constraint) { - $constraints[] = (string) $constraint; - } - - return '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; - } -} diff --git a/vendor/composer/semver/src/Semver.php b/vendor/composer/semver/src/Semver.php deleted file mode 100644 index 3ab2b68..0000000 --- a/vendor/composer/semver/src/Semver.php +++ /dev/null @@ -1,127 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\Constraint; - -class Semver -{ - const SORT_ASC = 1; - const SORT_DESC = -1; - - /** @var VersionParser */ - private static $versionParser; - - /** - * Determine if given version satisfies given constraints. - * - * @param string $version - * @param string $constraints - * - * @return bool - */ - public static function satisfies($version, $constraints) - { - if (null === self::$versionParser) { - self::$versionParser = new VersionParser(); - } - - $versionParser = self::$versionParser; - $provider = new Constraint('==', $versionParser->normalize($version)); - $parsedConstraints = $versionParser->parseConstraints($constraints); - - return $parsedConstraints->matches($provider); - } - - /** - * Return all versions that satisfy given constraints. - * - * @param array $versions - * @param string $constraints - * - * @return array - */ - public static function satisfiedBy(array $versions, $constraints) - { - $versions = array_filter($versions, function ($version) use ($constraints) { - return Semver::satisfies($version, $constraints); - }); - - return array_values($versions); - } - - /** - * Sort given array of versions. - * - * @param array $versions - * - * @return array - */ - public static function sort(array $versions) - { - return self::usort($versions, self::SORT_ASC); - } - - /** - * Sort given array of versions in reverse. - * - * @param array $versions - * - * @return array - */ - public static function rsort(array $versions) - { - return self::usort($versions, self::SORT_DESC); - } - - /** - * @param array $versions - * @param int $direction - * - * @return array - */ - private static function usort(array $versions, $direction) - { - if (null === self::$versionParser) { - self::$versionParser = new VersionParser(); - } - - $versionParser = self::$versionParser; - $normalized = array(); - - // Normalize outside of usort() scope for minor performance increase. - // Creates an array of arrays: [[normalized, key], ...] - foreach ($versions as $key => $version) { - $normalized[] = array($versionParser->normalize($version), $key); - } - - usort($normalized, function (array $left, array $right) use ($direction) { - if ($left[0] === $right[0]) { - return 0; - } - - if (Comparator::lessThan($left[0], $right[0])) { - return -$direction; - } - - return $direction; - }); - - // Recreate input array, using the original indexes which are now in sorted order. - $sorted = array(); - foreach ($normalized as $item) { - $sorted[] = $versions[$item[1]]; - } - - return $sorted; - } -} diff --git a/vendor/composer/semver/src/VersionParser.php b/vendor/composer/semver/src/VersionParser.php deleted file mode 100644 index 9a7d0db..0000000 --- a/vendor/composer/semver/src/VersionParser.php +++ /dev/null @@ -1,545 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Semver\Constraint\EmptyConstraint; -use Composer\Semver\Constraint\MultiConstraint; -use Composer\Semver\Constraint\Constraint; - -/** - * Version parser. - * - * @author Jordi Boggiano - */ -class VersionParser -{ - /** - * Regex to match pre-release data (sort of). - * - * Due to backwards compatibility: - * - Instead of enforcing hyphen, an underscore, dot or nothing at all are also accepted. - * - Only stabilities as recognized by Composer are allowed to precede a numerical identifier. - * - Numerical-only pre-release identifiers are not supported, see tests. - * - * |--------------| - * [major].[minor].[patch] -[pre-release] +[build-metadata] - * - * @var string - */ - private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)((?:[.-]?\d+)*+)?)?([.-]?dev)?'; - - /** @var array */ - private static $stabilities = array('stable', 'RC', 'beta', 'alpha', 'dev'); - - /** - * Returns the stability of a version. - * - * @param string $version - * - * @return string - */ - public static function parseStability($version) - { - $version = preg_replace('{#.+$}i', '', $version); - - if (strpos($version, 'dev-') === 0 || '-dev' === substr($version, -4)) { - return 'dev'; - } - - preg_match('{' . self::$modifierRegex . '(?:\+.*)?$}i', strtolower($version), $match); - - if (!empty($match[3])) { - return 'dev'; - } - - if (!empty($match[1])) { - if ('beta' === $match[1] || 'b' === $match[1]) { - return 'beta'; - } - if ('alpha' === $match[1] || 'a' === $match[1]) { - return 'alpha'; - } - if ('rc' === $match[1]) { - return 'RC'; - } - } - - return 'stable'; - } - - /** - * @param string $stability - * - * @return string - */ - public static function normalizeStability($stability) - { - $stability = strtolower($stability); - - return $stability === 'rc' ? 'RC' : $stability; - } - - /** - * Normalizes a version string to be able to perform comparisons on it. - * - * @param string $version - * @param string $fullVersion optional complete version string to give more context - * - * @throws \UnexpectedValueException - * - * @return string - */ - public function normalize($version, $fullVersion = null) - { - $version = trim($version); - if (null === $fullVersion) { - $fullVersion = $version; - } - - // strip off aliasing - if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $version, $match)) { - // verify that the alias is a version without constraint - $this->normalize($match[2]); - - $version = $match[1]; - } - - // match master-like branches - if (preg_match('{^(?:dev-)?(?:master|trunk|default)$}i', $version)) { - return '9999999-dev'; - } - - // if requirement is branch-like, use full name - if (stripos($version, 'dev-') === 0) { - return 'dev-' . substr($version, 4); - } - - // strip off build metadata - if (preg_match('{^([^,\s+]++)\+[^\s]++$}', $version, $match)) { - $version = $match[1]; - } - - // match classical versioning - if (preg_match('{^v?(\d{1,5})(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) { - $version = $matches[1] - . (!empty($matches[2]) ? $matches[2] : '.0') - . (!empty($matches[3]) ? $matches[3] : '.0') - . (!empty($matches[4]) ? $matches[4] : '.0'); - $index = 5; - // match date(time) based versioning - } elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) { - $version = preg_replace('{\D}', '.', $matches[1]); - $index = 2; - } - - // add version modifiers if a version was matched - if (isset($index)) { - if (!empty($matches[$index])) { - if ('stable' === $matches[$index]) { - return $version; - } - $version .= '-' . $this->expandStability($matches[$index]) . (!empty($matches[$index + 1]) ? ltrim($matches[$index + 1], '.-') : ''); - } - - if (!empty($matches[$index + 2])) { - $version .= '-dev'; - } - - return $version; - } - - // match dev branches - if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { - try { - return $this->normalizeBranch($match[1]); - } catch (\Exception $e) { - } - } - - $extraMessage = ''; - if (preg_match('{ +as +' . preg_quote($version) . '$}', $fullVersion)) { - $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; - } elseif (preg_match('{^' . preg_quote($version) . ' +as +}', $fullVersion)) { - $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; - } - - throw new \UnexpectedValueException('Invalid version string "' . $version . '"' . $extraMessage); - } - - /** - * Extract numeric prefix from alias, if it is in numeric format, suitable for version comparison. - * - * @param string $branch Branch name (e.g. 2.1.x-dev) - * - * @return string|false Numeric prefix if present (e.g. 2.1.) or false - */ - public function parseNumericAliasPrefix($branch) - { - if (preg_match('{^(?P(\d++\\.)*\d++)(?:\.x)?-dev$}i', $branch, $matches)) { - return $matches['version'] . '.'; - } - - return false; - } - - /** - * Normalizes a branch name to be able to perform comparisons on it. - * - * @param string $name - * - * @return string - */ - public function normalizeBranch($name) - { - $name = trim($name); - - if (in_array($name, array('master', 'trunk', 'default'))) { - return $this->normalize($name); - } - - if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) { - $version = ''; - for ($i = 1; $i < 5; ++$i) { - $version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; - } - - return str_replace('x', '9999999', $version) . '-dev'; - } - - return 'dev-' . $name; - } - - /** - * Parses a constraint string into MultiConstraint and/or Constraint objects. - * - * @param string $constraints - * - * @return ConstraintInterface - */ - public function parseConstraints($constraints) - { - $prettyConstraint = $constraints; - - if (preg_match('{^([^,\s]*?)@(' . implode('|', self::$stabilities) . ')$}i', $constraints, $match)) { - $constraints = empty($match[1]) ? '*' : $match[1]; - } - - if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraints, $match)) { - $constraints = $match[1]; - } - - $orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints)); - $orGroups = array(); - - foreach ($orConstraints as $constraints) { - $andConstraints = preg_split('{(?< ,]) *(? 1) { - $constraintObjects = array(); - foreach ($andConstraints as $constraint) { - foreach ($this->parseConstraint($constraint) as $parsedConstraint) { - $constraintObjects[] = $parsedConstraint; - } - } - } else { - $constraintObjects = $this->parseConstraint($andConstraints[0]); - } - - if (1 === count($constraintObjects)) { - $constraint = $constraintObjects[0]; - } else { - $constraint = new MultiConstraint($constraintObjects); - } - - $orGroups[] = $constraint; - } - - if (1 === count($orGroups)) { - $constraint = $orGroups[0]; - } elseif (2 === count($orGroups) - // parse the two OR groups and if they are contiguous we collapse - // them into one constraint - && $orGroups[0] instanceof MultiConstraint - && $orGroups[1] instanceof MultiConstraint - && 2 === count($orGroups[0]->getConstraints()) - && 2 === count($orGroups[1]->getConstraints()) - && ($a = (string) $orGroups[0]) - && strpos($a, '[>=') === 0 && (false !== ($posA = strpos($a, '<', 4))) - && ($b = (string) $orGroups[1]) - && strpos($b, '[>=') === 0 && (false !== ($posB = strpos($b, '<', 4))) - && substr($a, $posA + 2, -1) === substr($b, 4, $posB - 5) - ) { - $constraint = new MultiConstraint(array( - new Constraint('>=', substr($a, 4, $posA - 5)), - new Constraint('<', substr($b, $posB + 2, -1)), - )); - } else { - $constraint = new MultiConstraint($orGroups, false); - } - - $constraint->setPrettyString($prettyConstraint); - - return $constraint; - } - - /** - * @param string $constraint - * - * @throws \UnexpectedValueException - * - * @return array - */ - private function parseConstraint($constraint) - { - if (preg_match('{^([^,\s]+?)@(' . implode('|', self::$stabilities) . ')$}i', $constraint, $match)) { - $constraint = $match[1]; - if ($match[2] !== 'stable') { - $stabilityModifier = $match[2]; - } - } - - if (preg_match('{^v?[xX*](\.[xX*])*$}i', $constraint)) { - return array(new EmptyConstraint()); - } - - $versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?' . self::$modifierRegex . '(?:\+[^\s]+)?'; - - // Tilde Range - // - // Like wildcard constraints, unsuffixed tilde constraints say that they must be greater than the previous - // version, to ensure that unstable instances of the current version are allowed. However, if a stability - // suffix is added to the constraint, then a >= match on the current version is used instead. - if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { - if (strpos($constraint, '~>') === 0) { - throw new \UnexpectedValueException( - 'Could not parse version constraint ' . $constraint . ': ' . - 'Invalid operator "~>", you probably meant to use the "~" operator' - ); - } - - // Work out which position in the version we are operating at - if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { - $position = 4; - } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { - $position = 3; - } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { - $position = 2; - } else { - $position = 1; - } - - // Calculate the stability suffix - $stabilitySuffix = ''; - if (empty($matches[5]) && empty($matches[7])) { - $stabilitySuffix .= '-dev'; - } - - $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); - $lowerBound = new Constraint('>=', $lowVersion); - - // For upper bound, we increment the position of one more significance, - // but highPosition = 0 would be illegal - $highPosition = max(1, $position - 1); - $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - - return array( - $lowerBound, - $upperBound, - ); - } - - // Caret Range - // - // Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple. - // In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for - // versions 0.X >=0.1.0, and no updates for versions 0.0.X - if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) { - // Work out which position in the version we are operating at - if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { - $position = 1; - } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { - $position = 2; - } else { - $position = 3; - } - - // Calculate the stability suffix - $stabilitySuffix = ''; - if (empty($matches[5]) && empty($matches[7])) { - $stabilitySuffix .= '-dev'; - } - - $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); - $lowerBound = new Constraint('>=', $lowVersion); - - // For upper bound, we increment the position of one more significance, - // but highPosition = 0 would be illegal - $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - - return array( - $lowerBound, - $upperBound, - ); - } - - // X Range - // - // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple. - // A partial version range is treated as an X-Range, so the special character is in fact optional. - if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) { - if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { - $position = 3; - } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { - $position = 2; - } else { - $position = 1; - } - - $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; - $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; - - if ($lowVersion === '0.0.0.0-dev') { - return array(new Constraint('<', $highVersion)); - } - - return array( - new Constraint('>=', $lowVersion), - new Constraint('<', $highVersion), - ); - } - - // Hyphen Range - // - // Specifies an inclusive set. If a partial version is provided as the first version in the inclusive range, - // then the missing pieces are replaced with zeroes. If a partial version is provided as the second version in - // the inclusive range, then all versions that start with the supplied parts of the tuple are accepted, but - // nothing that would be greater than the provided tuple parts. - if (preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { - // Calculate the stability suffix - $lowStabilitySuffix = ''; - if (empty($matches[6]) && empty($matches[8])) { - $lowStabilitySuffix = '-dev'; - } - - $lowVersion = $this->normalize($matches['from']); - $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); - - $empty = function ($x) { - return ($x === 0 || $x === '0') ? false : empty($x); - }; - - if ((!$empty($matches[11]) && !$empty($matches[12])) || !empty($matches[14]) || !empty($matches[16])) { - $highVersion = $this->normalize($matches['to']); - $upperBound = new Constraint('<=', $highVersion); - } else { - $highMatch = array('', $matches[10], $matches[11], $matches[12], $matches[13]); - $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[11]) ? 1 : 2, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - } - - return array( - $lowerBound, - $upperBound, - ); - } - - // Basic Comparators - if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) { - try { - $version = $this->normalize($matches[2]); - - if (!empty($stabilityModifier) && self::parseStability($version) === 'stable') { - $version .= '-' . $stabilityModifier; - } elseif ('<' === $matches[1] || '>=' === $matches[1]) { - if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) { - if (strpos($matches[2], 'dev-') !== 0) { - $version .= '-dev'; - } - } - } - - return array(new Constraint($matches[1] ?: '=', $version)); - } catch (\Exception $e) { - } - } - - $message = 'Could not parse version constraint ' . $constraint; - if (isset($e)) { - $message .= ': ' . $e->getMessage(); - } - - throw new \UnexpectedValueException($message); - } - - /** - * Increment, decrement, or simply pad a version number. - * - * Support function for {@link parseConstraint()} - * - * @param array $matches Array with version parts in array indexes 1,2,3,4 - * @param int $position 1,2,3,4 - which segment of the version to increment/decrement - * @param int $increment - * @param string $pad The string to pad version parts after $position - * - * @return string The new version - */ - private function manipulateVersionString($matches, $position, $increment = 0, $pad = '0') - { - for ($i = 4; $i > 0; --$i) { - if ($i > $position) { - $matches[$i] = $pad; - } elseif ($i === $position && $increment) { - $matches[$i] += $increment; - // If $matches[$i] was 0, carry the decrement - if ($matches[$i] < 0) { - $matches[$i] = $pad; - --$position; - - // Return null on a carry overflow - if ($i === 1) { - return null; - } - } - } - } - - return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; - } - - /** - * Expand shorthand stability string to long version. - * - * @param string $stability - * - * @return string - */ - private function expandStability($stability) - { - $stability = strtolower($stability); - - switch ($stability) { - case 'a': - return 'alpha'; - case 'b': - return 'beta'; - case 'p': - case 'pl': - return 'patch'; - case 'rc': - return 'RC'; - default: - return $stability; - } - } -} diff --git a/vendor/composer/spdx-licenses/.php_cs.dist b/vendor/composer/spdx-licenses/.php_cs.dist deleted file mode 100644 index 6c05540..0000000 --- a/vendor/composer/spdx-licenses/.php_cs.dist +++ /dev/null @@ -1,59 +0,0 @@ - - -For the full copyright and license information, please view -the LICENSE file that was distributed with this source code. -EOF; - -$finder = PhpCsFixer\Finder::create() - ->files() - ->name('*.php') - ->in(__DIR__.'/src') - ->in(__DIR__.'/tests') -; - -/* fabpot/php-cs-fixer:^2.0-dev */ -return PhpCsFixer\Config::create() - ->setUsingCache(true) - //->setUsingLinter(false) - ->setRiskyAllowed(true) - ->setRules(array( - '@PSR2' => true, - 'binary_operator_spaces' => true, - 'blank_line_before_return' => true, - 'cast_spaces' => true, - 'header_comment' => array('header' => $header), - 'include' => true, - 'long_array_syntax' => true, - 'method_separation' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_blank_lines_between_uses' => true, - 'no_duplicate_semicolons' => true, - 'no_extra_consecutive_blank_lines' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_unused_imports' => true, - 'no_whitespace_in_blank_lines' => true, - 'object_operator_without_whitespace' => true, - 'phpdoc_align' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_scalar' => true, - 'phpdoc_trim' => true, - 'phpdoc_type_to_var' => true, - 'psr0' => true, - 'single_blank_line_before_namespace' => true, - 'standardize_not_equals' => true, - 'ternary_operator_spaces' => true, - 'trailing_comma_in_multiline_array' => true, - )) - ->finder($finder) -; diff --git a/vendor/composer/spdx-licenses/CHANGELOG.md b/vendor/composer/spdx-licenses/CHANGELOG.md deleted file mode 100644 index 2fe451c..0000000 --- a/vendor/composer/spdx-licenses/CHANGELOG.md +++ /dev/null @@ -1,94 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -This project adheres to [Semantic Versioning](http://semver.org/). - -## [master] - - ... - -## [1.5.2] 2019-07-29 - - * Changed: updated licenses list to SPDX 3.6 - -## [1.5.1] 2019-03-26 - - * Changed: updated licenses list to SPDX 3.4 - -## [1.5.0] 2018-11-01 - - * Changed: updated licenses list to SPDX 3.3 - -## [1.4.0] 2018-05-04 - - * Changed: updated licenses list to SPDX 3.1 - -## [1.3.0] 2018-01-31 - - * Added: `SpdxLicenses::getLicenses` to get the whole list of methods. - * Changed: license identifiers are now case insensitive. - -## [1.2.0] 2018-01-03 - - * Added: deprecation status for all licenses and a `SpdxLicenses::isDeprecatedByIdentifier` method. - * Changed: updated licenses list to SPDX 3.0. - -## [1.1.6] 2017-04-03 - - * Changed: updated licenses list. - -## [1.1.5] 2016-09-28 - - * Changed: updated licenses list. - -## [1.1.4] 2016-05-04 - - * Changed: updated licenses list. - -## [1.1.3] 2016-03-25 - - * Changed: updated licenses list. - * Changed: dropped `test` namespace. - * Changed: tedious small things. - -## [1.1.2] 2015-10-05 - - * Changed: updated licenses list. - -## [1.1.1] 2015-09-07 - - * Changed: improved performance when looking up just one license. - * Changed: updated licenses list. - -## [1.1.0] 2015-07-17 - - * Changed: updater now sorts licenses and exceptions by key. - * Changed: filenames now class constants of SpdxLicenses (`LICENSES_FILE` and `EXCEPTIONS_FILE`). - * Changed: resources directory now available via static method `SpdxLicenses::getResourcesDir()`. - * Changed: updated licenses list. - * Changed: removed json-schema requirement. - -## [1.0.0] 2015-07-15 - - * Break: the following classes and namespaces were renamed: - - Namespace: `Composer\Util` -> `Composer\Spdx` - - Classname: `SpdxLicense` -> `SpdxLicenses` - - Classname: `SpdxLicenseTest` -> `SpdxLicensesTest` - - Classname: `Updater` -> `SpdxLicensesUpdater` - * Changed: validation via regex implementation instead of lexer. - -[master]: https://github.com/composer/spdx-licenses/compare/1.5.2...master -[1.5.2]: https://github.com/composer/spdx-licenses/compare/1.5.1...1.5.2 -[1.5.1]: https://github.com/composer/spdx-licenses/compare/1.5.0...1.5.1 -[1.5.0]: https://github.com/composer/spdx-licenses/compare/1.4.0...1.5.0 -[1.4.0]: https://github.com/composer/spdx-licenses/compare/1.3.0...1.4.0 -[1.3.0]: https://github.com/composer/spdx-licenses/compare/1.2.0...1.3.0 -[1.2.0]: https://github.com/composer/spdx-licenses/compare/1.1.6...1.2.0 -[1.1.6]: https://github.com/composer/spdx-licenses/compare/1.1.5...1.1.6 -[1.1.5]: https://github.com/composer/spdx-licenses/compare/1.1.4...1.1.5 -[1.1.4]: https://github.com/composer/spdx-licenses/compare/1.1.3...1.1.4 -[1.1.3]: https://github.com/composer/spdx-licenses/compare/1.1.2...1.1.3 -[1.1.2]: https://github.com/composer/spdx-licenses/compare/1.1.1...1.1.2 -[1.1.1]: https://github.com/composer/spdx-licenses/compare/1.1.0...1.1.1 -[1.1.0]: https://github.com/composer/spdx-licenses/compare/1.0.0...1.1.0 -[1.0.0]: https://github.com/composer/spdx-licenses/compare/0281a7fe7820c990db3058844e7d448d7b70e3ac...1.0.0 diff --git a/vendor/composer/spdx-licenses/LICENSE b/vendor/composer/spdx-licenses/LICENSE deleted file mode 100644 index 4669758..0000000 --- a/vendor/composer/spdx-licenses/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2015 Composer - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/composer/spdx-licenses/README.md b/vendor/composer/spdx-licenses/README.md deleted file mode 100644 index 4c4da81..0000000 --- a/vendor/composer/spdx-licenses/README.md +++ /dev/null @@ -1,69 +0,0 @@ -composer/spdx-licenses -====================== - -SPDX (Software Package Data Exchange) licenses list and validation library. - -Originally written as part of [composer/composer](https://github.com/composer/composer), -now extracted and made available as a stand-alone library. - -[![Build Status](https://travis-ci.org/composer/spdx-licenses.svg?branch=master)](https://travis-ci.org/composer/spdx-licenses) - -Installation ------------- - -Install the latest version with: - -```bash -$ composer require composer/spdx-licenses -``` - -Basic Usage ------------ - -```php -getLicenseByIdentifier('MIT'); - -// get a license exception by identifier -$licenses->getExceptionByIdentifier('Autoconf-exception-3.0'); - -// get a license identifier by name -$licenses->getIdentifierByName('MIT License'); - -// check if a license is OSI approved by identifier -$licenses->isOsiApprovedByIdentifier('MIT'); - -// check if a license identifier is deprecated -$licenses->isDeprecatedByIdentifier('MIT'); - -// check if input is a valid SPDX license expression -$licenses->validate($input); -``` - -> Read the [specifications](https://spdx.org/specifications) -> to find out more about valid license expressions. - -Requirements ------------- - -* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. - -License -------- - -composer/spdx-licenses is licensed under the MIT License, see the LICENSE file for details. - -Source ------- - -License information is curated by [SPDX](https://spdx.org/). The data is pulled from the -[License List Data](https://github.com/spdx/license-list-data) repository. - -* [Licenses](https://spdx.org/licenses/index.html) -* [License Exceptions](https://spdx.org/licenses/exceptions-index.html) diff --git a/vendor/composer/spdx-licenses/composer.json b/vendor/composer/spdx-licenses/composer.json deleted file mode 100644 index bda5b2b..0000000 --- a/vendor/composer/spdx-licenses/composer.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "composer/spdx-licenses", - "description": "SPDX licenses list and validation library.", - "type": "library", - "license": "MIT", - "keywords": [ - "spdx", - "license", - "validator" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/spdx-licenses/issues" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Composer\\Spdx\\": "tests" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "scripts": { - "test": "phpunit" - } -} diff --git a/vendor/composer/spdx-licenses/res/spdx-exceptions.json b/vendor/composer/spdx-licenses/res/spdx-exceptions.json deleted file mode 100644 index 2c36d6a..0000000 --- a/vendor/composer/spdx-licenses/res/spdx-exceptions.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "389-exception": [ - "389 Directory Server Exception" - ], - "Autoconf-exception-2.0": [ - "Autoconf exception 2.0" - ], - "Autoconf-exception-3.0": [ - "Autoconf exception 3.0" - ], - "Bison-exception-2.2": [ - "Bison exception 2.2" - ], - "Bootloader-exception": [ - "Bootloader Distribution Exception" - ], - "Classpath-exception-2.0": [ - "Classpath exception 2.0" - ], - "CLISP-exception-2.0": [ - "CLISP exception 2.0" - ], - "DigiRule-FOSS-exception": [ - "DigiRule FOSS License Exception" - ], - "eCos-exception-2.0": [ - "eCos exception 2.0" - ], - "Fawkes-Runtime-exception": [ - "Fawkes Runtime Exception" - ], - "FLTK-exception": [ - "FLTK exception" - ], - "Font-exception-2.0": [ - "Font exception 2.0" - ], - "freertos-exception-2.0": [ - "FreeRTOS Exception 2.0" - ], - "GCC-exception-2.0": [ - "GCC Runtime Library exception 2.0" - ], - "GCC-exception-3.1": [ - "GCC Runtime Library exception 3.1" - ], - "gnu-javamail-exception": [ - "GNU JavaMail exception" - ], - "GPL-3.0-linking-exception": [ - "GPL-3.0 Linking Exception" - ], - "GPL-3.0-linking-source-exception": [ - "GPL-3.0 Linking Exception (with Corresponding Source)" - ], - "GPL-CC-1.0": [ - "GPL Cooperation Commitment 1.0" - ], - "i2p-gpl-java-exception": [ - "i2p GPL+Java Exception" - ], - "Libtool-exception": [ - "Libtool Exception" - ], - "Linux-syscall-note": [ - "Linux Syscall Note" - ], - "LLVM-exception": [ - "LLVM Exception" - ], - "LZMA-exception": [ - "LZMA exception" - ], - "mif-exception": [ - "Macros and Inline Functions Exception" - ], - "Nokia-Qt-exception-1.1": [ - "Nokia Qt LGPL exception 1.1" - ], - "OCaml-LGPL-linking-exception": [ - "OCaml LGPL Linking Exception" - ], - "OCCT-exception-1.0": [ - "Open CASCADE Exception 1.0" - ], - "OpenJDK-assembly-exception-1.0": [ - "OpenJDK Assembly exception 1.0" - ], - "openvpn-openssl-exception": [ - "OpenVPN OpenSSL Exception" - ], - "PS-or-PDF-font-exception-20170817": [ - "PS/PDF font exception (2017-08-17)" - ], - "Qt-GPL-exception-1.0": [ - "Qt GPL exception 1.0" - ], - "Qt-LGPL-exception-1.1": [ - "Qt LGPL exception 1.1" - ], - "Qwt-exception-1.0": [ - "Qwt exception 1.0" - ], - "Swift-exception": [ - "Swift Exception" - ], - "u-boot-exception-2.0": [ - "U-Boot exception 2.0" - ], - "Universal-FOSS-exception-1.0": [ - "Universal FOSS Exception, Version 1.0" - ], - "WxWindows-exception-3.1": [ - "WxWindows Library Exception 3.1" - ] -} \ No newline at end of file diff --git a/vendor/composer/spdx-licenses/res/spdx-licenses.json b/vendor/composer/spdx-licenses/res/spdx-licenses.json deleted file mode 100644 index 182bad6..0000000 --- a/vendor/composer/spdx-licenses/res/spdx-licenses.json +++ /dev/null @@ -1,2047 +0,0 @@ -{ - "0BSD": [ - "BSD Zero Clause License", - true, - false - ], - "AAL": [ - "Attribution Assurance License", - true, - false - ], - "Abstyles": [ - "Abstyles License", - false, - false - ], - "Adobe-2006": [ - "Adobe Systems Incorporated Source Code License Agreement", - false, - false - ], - "Adobe-Glyph": [ - "Adobe Glyph List License", - false, - false - ], - "ADSL": [ - "Amazon Digital Services License", - false, - false - ], - "AFL-1.1": [ - "Academic Free License v1.1", - true, - false - ], - "AFL-1.2": [ - "Academic Free License v1.2", - true, - false - ], - "AFL-2.0": [ - "Academic Free License v2.0", - true, - false - ], - "AFL-2.1": [ - "Academic Free License v2.1", - true, - false - ], - "AFL-3.0": [ - "Academic Free License v3.0", - true, - false - ], - "Afmparse": [ - "Afmparse License", - false, - false - ], - "AGPL-1.0": [ - "Affero General Public License v1.0", - false, - true - ], - "AGPL-1.0-only": [ - "Affero General Public License v1.0 only", - false, - false - ], - "AGPL-1.0-or-later": [ - "Affero General Public License v1.0 or later", - false, - false - ], - "AGPL-3.0": [ - "GNU Affero General Public License v3.0", - true, - true - ], - "AGPL-3.0-only": [ - "GNU Affero General Public License v3.0 only", - true, - false - ], - "AGPL-3.0-or-later": [ - "GNU Affero General Public License v3.0 or later", - true, - false - ], - "Aladdin": [ - "Aladdin Free Public License", - false, - false - ], - "AMDPLPA": [ - "AMD's plpa_map.c License", - false, - false - ], - "AML": [ - "Apple MIT License", - false, - false - ], - "AMPAS": [ - "Academy of Motion Picture Arts and Sciences BSD", - false, - false - ], - "ANTLR-PD": [ - "ANTLR Software Rights Notice", - false, - false - ], - "Apache-1.0": [ - "Apache License 1.0", - false, - false - ], - "Apache-1.1": [ - "Apache License 1.1", - true, - false - ], - "Apache-2.0": [ - "Apache License 2.0", - true, - false - ], - "APAFML": [ - "Adobe Postscript AFM License", - false, - false - ], - "APL-1.0": [ - "Adaptive Public License 1.0", - true, - false - ], - "APSL-1.0": [ - "Apple Public Source License 1.0", - true, - false - ], - "APSL-1.1": [ - "Apple Public Source License 1.1", - true, - false - ], - "APSL-1.2": [ - "Apple Public Source License 1.2", - true, - false - ], - "APSL-2.0": [ - "Apple Public Source License 2.0", - true, - false - ], - "Artistic-1.0": [ - "Artistic License 1.0", - true, - false - ], - "Artistic-1.0-cl8": [ - "Artistic License 1.0 w/clause 8", - true, - false - ], - "Artistic-1.0-Perl": [ - "Artistic License 1.0 (Perl)", - true, - false - ], - "Artistic-2.0": [ - "Artistic License 2.0", - true, - false - ], - "Bahyph": [ - "Bahyph License", - false, - false - ], - "Barr": [ - "Barr License", - false, - false - ], - "Beerware": [ - "Beerware License", - false, - false - ], - "BitTorrent-1.0": [ - "BitTorrent Open Source License v1.0", - false, - false - ], - "BitTorrent-1.1": [ - "BitTorrent Open Source License v1.1", - false, - false - ], - "blessing": [ - "SQLite Blessing", - false, - false - ], - "BlueOak-1.0.0": [ - "Blue Oak Model License 1.0.0", - false, - false - ], - "Borceux": [ - "Borceux license", - false, - false - ], - "BSD-1-Clause": [ - "BSD 1-Clause License", - false, - false - ], - "BSD-2-Clause": [ - "BSD 2-Clause \"Simplified\" License", - true, - false - ], - "BSD-2-Clause-FreeBSD": [ - "BSD 2-Clause FreeBSD License", - false, - false - ], - "BSD-2-Clause-NetBSD": [ - "BSD 2-Clause NetBSD License", - false, - false - ], - "BSD-2-Clause-Patent": [ - "BSD-2-Clause Plus Patent License", - true, - false - ], - "BSD-3-Clause": [ - "BSD 3-Clause \"New\" or \"Revised\" License", - true, - false - ], - "BSD-3-Clause-Attribution": [ - "BSD with attribution", - false, - false - ], - "BSD-3-Clause-Clear": [ - "BSD 3-Clause Clear License", - false, - false - ], - "BSD-3-Clause-LBNL": [ - "Lawrence Berkeley National Labs BSD variant license", - true, - false - ], - "BSD-3-Clause-No-Nuclear-License": [ - "BSD 3-Clause No Nuclear License", - false, - false - ], - "BSD-3-Clause-No-Nuclear-License-2014": [ - "BSD 3-Clause No Nuclear License 2014", - false, - false - ], - "BSD-3-Clause-No-Nuclear-Warranty": [ - "BSD 3-Clause No Nuclear Warranty", - false, - false - ], - "BSD-3-Clause-Open-MPI": [ - "BSD 3-Clause Open MPI variant", - false, - false - ], - "BSD-4-Clause": [ - "BSD 4-Clause \"Original\" or \"Old\" License", - false, - false - ], - "BSD-4-Clause-UC": [ - "BSD-4-Clause (University of California-Specific)", - false, - false - ], - "BSD-Protection": [ - "BSD Protection License", - false, - false - ], - "BSD-Source-Code": [ - "BSD Source Code Attribution", - false, - false - ], - "BSL-1.0": [ - "Boost Software License 1.0", - true, - false - ], - "bzip2-1.0.5": [ - "bzip2 and libbzip2 License v1.0.5", - false, - false - ], - "bzip2-1.0.6": [ - "bzip2 and libbzip2 License v1.0.6", - false, - false - ], - "Caldera": [ - "Caldera License", - false, - false - ], - "CATOSL-1.1": [ - "Computer Associates Trusted Open Source License 1.1", - true, - false - ], - "CC-BY-1.0": [ - "Creative Commons Attribution 1.0 Generic", - false, - false - ], - "CC-BY-2.0": [ - "Creative Commons Attribution 2.0 Generic", - false, - false - ], - "CC-BY-2.5": [ - "Creative Commons Attribution 2.5 Generic", - false, - false - ], - "CC-BY-3.0": [ - "Creative Commons Attribution 3.0 Unported", - false, - false - ], - "CC-BY-4.0": [ - "Creative Commons Attribution 4.0 International", - false, - false - ], - "CC-BY-NC-1.0": [ - "Creative Commons Attribution Non Commercial 1.0 Generic", - false, - false - ], - "CC-BY-NC-2.0": [ - "Creative Commons Attribution Non Commercial 2.0 Generic", - false, - false - ], - "CC-BY-NC-2.5": [ - "Creative Commons Attribution Non Commercial 2.5 Generic", - false, - false - ], - "CC-BY-NC-3.0": [ - "Creative Commons Attribution Non Commercial 3.0 Unported", - false, - false - ], - "CC-BY-NC-4.0": [ - "Creative Commons Attribution Non Commercial 4.0 International", - false, - false - ], - "CC-BY-NC-ND-1.0": [ - "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", - false, - false - ], - "CC-BY-NC-ND-2.0": [ - "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", - false, - false - ], - "CC-BY-NC-ND-2.5": [ - "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", - false, - false - ], - "CC-BY-NC-ND-3.0": [ - "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", - false, - false - ], - "CC-BY-NC-ND-4.0": [ - "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", - false, - false - ], - "CC-BY-NC-SA-1.0": [ - "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", - false, - false - ], - "CC-BY-NC-SA-2.0": [ - "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", - false, - false - ], - "CC-BY-NC-SA-2.5": [ - "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", - false, - false - ], - "CC-BY-NC-SA-3.0": [ - "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", - false, - false - ], - "CC-BY-NC-SA-4.0": [ - "Creative Commons Attribution Non Commercial Share Alike 4.0 International", - false, - false - ], - "CC-BY-ND-1.0": [ - "Creative Commons Attribution No Derivatives 1.0 Generic", - false, - false - ], - "CC-BY-ND-2.0": [ - "Creative Commons Attribution No Derivatives 2.0 Generic", - false, - false - ], - "CC-BY-ND-2.5": [ - "Creative Commons Attribution No Derivatives 2.5 Generic", - false, - false - ], - "CC-BY-ND-3.0": [ - "Creative Commons Attribution No Derivatives 3.0 Unported", - false, - false - ], - "CC-BY-ND-4.0": [ - "Creative Commons Attribution No Derivatives 4.0 International", - false, - false - ], - "CC-BY-SA-1.0": [ - "Creative Commons Attribution Share Alike 1.0 Generic", - false, - false - ], - "CC-BY-SA-2.0": [ - "Creative Commons Attribution Share Alike 2.0 Generic", - false, - false - ], - "CC-BY-SA-2.5": [ - "Creative Commons Attribution Share Alike 2.5 Generic", - false, - false - ], - "CC-BY-SA-3.0": [ - "Creative Commons Attribution Share Alike 3.0 Unported", - false, - false - ], - "CC-BY-SA-4.0": [ - "Creative Commons Attribution Share Alike 4.0 International", - false, - false - ], - "CC-PDDC": [ - "Creative Commons Public Domain Dedication and Certification", - false, - false - ], - "CC0-1.0": [ - "Creative Commons Zero v1.0 Universal", - false, - false - ], - "CDDL-1.0": [ - "Common Development and Distribution License 1.0", - true, - false - ], - "CDDL-1.1": [ - "Common Development and Distribution License 1.1", - false, - false - ], - "CDLA-Permissive-1.0": [ - "Community Data License Agreement Permissive 1.0", - false, - false - ], - "CDLA-Sharing-1.0": [ - "Community Data License Agreement Sharing 1.0", - false, - false - ], - "CECILL-1.0": [ - "CeCILL Free Software License Agreement v1.0", - false, - false - ], - "CECILL-1.1": [ - "CeCILL Free Software License Agreement v1.1", - false, - false - ], - "CECILL-2.0": [ - "CeCILL Free Software License Agreement v2.0", - false, - false - ], - "CECILL-2.1": [ - "CeCILL Free Software License Agreement v2.1", - true, - false - ], - "CECILL-B": [ - "CeCILL-B Free Software License Agreement", - false, - false - ], - "CECILL-C": [ - "CeCILL-C Free Software License Agreement", - false, - false - ], - "CERN-OHL-1.1": [ - "CERN Open Hardware Licence v1.1", - false, - false - ], - "CERN-OHL-1.2": [ - "CERN Open Hardware Licence v1.2", - false, - false - ], - "ClArtistic": [ - "Clarified Artistic License", - false, - false - ], - "CNRI-Jython": [ - "CNRI Jython License", - false, - false - ], - "CNRI-Python": [ - "CNRI Python License", - true, - false - ], - "CNRI-Python-GPL-Compatible": [ - "CNRI Python Open Source GPL Compatible License Agreement", - false, - false - ], - "Condor-1.1": [ - "Condor Public License v1.1", - false, - false - ], - "copyleft-next-0.3.0": [ - "copyleft-next 0.3.0", - false, - false - ], - "copyleft-next-0.3.1": [ - "copyleft-next 0.3.1", - false, - false - ], - "CPAL-1.0": [ - "Common Public Attribution License 1.0", - true, - false - ], - "CPL-1.0": [ - "Common Public License 1.0", - true, - false - ], - "CPOL-1.02": [ - "Code Project Open License 1.02", - false, - false - ], - "Crossword": [ - "Crossword License", - false, - false - ], - "CrystalStacker": [ - "CrystalStacker License", - false, - false - ], - "CUA-OPL-1.0": [ - "CUA Office Public License v1.0", - true, - false - ], - "Cube": [ - "Cube License", - false, - false - ], - "curl": [ - "curl License", - false, - false - ], - "D-FSL-1.0": [ - "Deutsche Freie Software Lizenz", - false, - false - ], - "diffmark": [ - "diffmark license", - false, - false - ], - "DOC": [ - "DOC License", - false, - false - ], - "Dotseqn": [ - "Dotseqn License", - false, - false - ], - "DSDP": [ - "DSDP License", - false, - false - ], - "dvipdfm": [ - "dvipdfm License", - false, - false - ], - "ECL-1.0": [ - "Educational Community License v1.0", - true, - false - ], - "ECL-2.0": [ - "Educational Community License v2.0", - true, - false - ], - "eCos-2.0": [ - "eCos license version 2.0", - false, - true - ], - "EFL-1.0": [ - "Eiffel Forum License v1.0", - true, - false - ], - "EFL-2.0": [ - "Eiffel Forum License v2.0", - true, - false - ], - "eGenix": [ - "eGenix.com Public License 1.1.0", - false, - false - ], - "Entessa": [ - "Entessa Public License v1.0", - true, - false - ], - "EPL-1.0": [ - "Eclipse Public License 1.0", - true, - false - ], - "EPL-2.0": [ - "Eclipse Public License 2.0", - true, - false - ], - "ErlPL-1.1": [ - "Erlang Public License v1.1", - false, - false - ], - "etalab-2.0": [ - "Etalab Open License 2.0", - false, - false - ], - "EUDatagrid": [ - "EU DataGrid Software License", - true, - false - ], - "EUPL-1.0": [ - "European Union Public License 1.0", - false, - false - ], - "EUPL-1.1": [ - "European Union Public License 1.1", - true, - false - ], - "EUPL-1.2": [ - "European Union Public License 1.2", - true, - false - ], - "Eurosym": [ - "Eurosym License", - false, - false - ], - "Fair": [ - "Fair License", - true, - false - ], - "Frameworx-1.0": [ - "Frameworx Open License 1.0", - true, - false - ], - "FreeImage": [ - "FreeImage Public License v1.0", - false, - false - ], - "FSFAP": [ - "FSF All Permissive License", - false, - false - ], - "FSFUL": [ - "FSF Unlimited License", - false, - false - ], - "FSFULLR": [ - "FSF Unlimited License (with License Retention)", - false, - false - ], - "FTL": [ - "Freetype Project License", - false, - false - ], - "GFDL-1.1": [ - "GNU Free Documentation License v1.1", - false, - true - ], - "GFDL-1.1-only": [ - "GNU Free Documentation License v1.1 only", - false, - false - ], - "GFDL-1.1-or-later": [ - "GNU Free Documentation License v1.1 or later", - false, - false - ], - "GFDL-1.2": [ - "GNU Free Documentation License v1.2", - false, - true - ], - "GFDL-1.2-only": [ - "GNU Free Documentation License v1.2 only", - false, - false - ], - "GFDL-1.2-or-later": [ - "GNU Free Documentation License v1.2 or later", - false, - false - ], - "GFDL-1.3": [ - "GNU Free Documentation License v1.3", - false, - true - ], - "GFDL-1.3-only": [ - "GNU Free Documentation License v1.3 only", - false, - false - ], - "GFDL-1.3-or-later": [ - "GNU Free Documentation License v1.3 or later", - false, - false - ], - "Giftware": [ - "Giftware License", - false, - false - ], - "GL2PS": [ - "GL2PS License", - false, - false - ], - "Glide": [ - "3dfx Glide License", - false, - false - ], - "Glulxe": [ - "Glulxe License", - false, - false - ], - "gnuplot": [ - "gnuplot License", - false, - false - ], - "GPL-1.0": [ - "GNU General Public License v1.0 only", - false, - true - ], - "GPL-1.0+": [ - "GNU General Public License v1.0 or later", - false, - true - ], - "GPL-1.0-only": [ - "GNU General Public License v1.0 only", - false, - false - ], - "GPL-1.0-or-later": [ - "GNU General Public License v1.0 or later", - false, - false - ], - "GPL-2.0": [ - "GNU General Public License v2.0 only", - true, - true - ], - "GPL-2.0+": [ - "GNU General Public License v2.0 or later", - true, - true - ], - "GPL-2.0-only": [ - "GNU General Public License v2.0 only", - true, - false - ], - "GPL-2.0-or-later": [ - "GNU General Public License v2.0 or later", - true, - false - ], - "GPL-2.0-with-autoconf-exception": [ - "GNU General Public License v2.0 w/Autoconf exception", - false, - true - ], - "GPL-2.0-with-bison-exception": [ - "GNU General Public License v2.0 w/Bison exception", - false, - true - ], - "GPL-2.0-with-classpath-exception": [ - "GNU General Public License v2.0 w/Classpath exception", - false, - true - ], - "GPL-2.0-with-font-exception": [ - "GNU General Public License v2.0 w/Font exception", - false, - true - ], - "GPL-2.0-with-GCC-exception": [ - "GNU General Public License v2.0 w/GCC Runtime Library exception", - false, - true - ], - "GPL-3.0": [ - "GNU General Public License v3.0 only", - true, - true - ], - "GPL-3.0+": [ - "GNU General Public License v3.0 or later", - true, - true - ], - "GPL-3.0-only": [ - "GNU General Public License v3.0 only", - true, - false - ], - "GPL-3.0-or-later": [ - "GNU General Public License v3.0 or later", - true, - false - ], - "GPL-3.0-with-autoconf-exception": [ - "GNU General Public License v3.0 w/Autoconf exception", - false, - true - ], - "GPL-3.0-with-GCC-exception": [ - "GNU General Public License v3.0 w/GCC Runtime Library exception", - true, - true - ], - "gSOAP-1.3b": [ - "gSOAP Public License v1.3b", - false, - false - ], - "HaskellReport": [ - "Haskell Language Report License", - false, - false - ], - "HPND": [ - "Historical Permission Notice and Disclaimer", - true, - false - ], - "HPND-sell-variant": [ - "Historical Permission Notice and Disclaimer - sell variant", - false, - false - ], - "IBM-pibs": [ - "IBM PowerPC Initialization and Boot Software", - false, - false - ], - "ICU": [ - "ICU License", - false, - false - ], - "IJG": [ - "Independent JPEG Group License", - false, - false - ], - "ImageMagick": [ - "ImageMagick License", - false, - false - ], - "iMatix": [ - "iMatix Standard Function Library Agreement", - false, - false - ], - "Imlib2": [ - "Imlib2 License", - false, - false - ], - "Info-ZIP": [ - "Info-ZIP License", - false, - false - ], - "Intel": [ - "Intel Open Source License", - true, - false - ], - "Intel-ACPI": [ - "Intel ACPI Software License Agreement", - false, - false - ], - "Interbase-1.0": [ - "Interbase Public License v1.0", - false, - false - ], - "IPA": [ - "IPA Font License", - true, - false - ], - "IPL-1.0": [ - "IBM Public License v1.0", - true, - false - ], - "ISC": [ - "ISC License", - true, - false - ], - "JasPer-2.0": [ - "JasPer License", - false, - false - ], - "JPNIC": [ - "Japan Network Information Center License", - false, - false - ], - "JSON": [ - "JSON License", - false, - false - ], - "LAL-1.2": [ - "Licence Art Libre 1.2", - false, - false - ], - "LAL-1.3": [ - "Licence Art Libre 1.3", - false, - false - ], - "Latex2e": [ - "Latex2e License", - false, - false - ], - "Leptonica": [ - "Leptonica License", - false, - false - ], - "LGPL-2.0": [ - "GNU Library General Public License v2 only", - true, - true - ], - "LGPL-2.0+": [ - "GNU Library General Public License v2 or later", - true, - true - ], - "LGPL-2.0-only": [ - "GNU Library General Public License v2 only", - true, - false - ], - "LGPL-2.0-or-later": [ - "GNU Library General Public License v2 or later", - true, - false - ], - "LGPL-2.1": [ - "GNU Lesser General Public License v2.1 only", - true, - true - ], - "LGPL-2.1+": [ - "GNU Library General Public License v2.1 or later", - true, - true - ], - "LGPL-2.1-only": [ - "GNU Lesser General Public License v2.1 only", - true, - false - ], - "LGPL-2.1-or-later": [ - "GNU Lesser General Public License v2.1 or later", - true, - false - ], - "LGPL-3.0": [ - "GNU Lesser General Public License v3.0 only", - true, - true - ], - "LGPL-3.0+": [ - "GNU Lesser General Public License v3.0 or later", - true, - true - ], - "LGPL-3.0-only": [ - "GNU Lesser General Public License v3.0 only", - true, - false - ], - "LGPL-3.0-or-later": [ - "GNU Lesser General Public License v3.0 or later", - true, - false - ], - "LGPLLR": [ - "Lesser General Public License For Linguistic Resources", - false, - false - ], - "Libpng": [ - "libpng License", - false, - false - ], - "libpng-2.0": [ - "PNG Reference Library version 2", - false, - false - ], - "libselinux-1.0": [ - "libselinux public domain notice", - false, - false - ], - "libtiff": [ - "libtiff License", - false, - false - ], - "LiLiQ-P-1.1": [ - "Licence Libre du Qu\u00e9bec \u2013 Permissive version 1.1", - true, - false - ], - "LiLiQ-R-1.1": [ - "Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 version 1.1", - true, - false - ], - "LiLiQ-Rplus-1.1": [ - "Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 forte version 1.1", - true, - false - ], - "Linux-OpenIB": [ - "Linux Kernel Variant of OpenIB.org license", - false, - false - ], - "LPL-1.0": [ - "Lucent Public License Version 1.0", - true, - false - ], - "LPL-1.02": [ - "Lucent Public License v1.02", - true, - false - ], - "LPPL-1.0": [ - "LaTeX Project Public License v1.0", - false, - false - ], - "LPPL-1.1": [ - "LaTeX Project Public License v1.1", - false, - false - ], - "LPPL-1.2": [ - "LaTeX Project Public License v1.2", - false, - false - ], - "LPPL-1.3a": [ - "LaTeX Project Public License v1.3a", - false, - false - ], - "LPPL-1.3c": [ - "LaTeX Project Public License v1.3c", - true, - false - ], - "MakeIndex": [ - "MakeIndex License", - false, - false - ], - "MirOS": [ - "The MirOS Licence", - true, - false - ], - "MIT": [ - "MIT License", - true, - false - ], - "MIT-0": [ - "MIT No Attribution", - false, - false - ], - "MIT-advertising": [ - "Enlightenment License (e16)", - false, - false - ], - "MIT-CMU": [ - "CMU License", - false, - false - ], - "MIT-enna": [ - "enna License", - false, - false - ], - "MIT-feh": [ - "feh License", - false, - false - ], - "MITNFA": [ - "MIT +no-false-attribs license", - false, - false - ], - "Motosoto": [ - "Motosoto License", - true, - false - ], - "mpich2": [ - "mpich2 License", - false, - false - ], - "MPL-1.0": [ - "Mozilla Public License 1.0", - true, - false - ], - "MPL-1.1": [ - "Mozilla Public License 1.1", - true, - false - ], - "MPL-2.0": [ - "Mozilla Public License 2.0", - true, - false - ], - "MPL-2.0-no-copyleft-exception": [ - "Mozilla Public License 2.0 (no copyleft exception)", - true, - false - ], - "MS-PL": [ - "Microsoft Public License", - true, - false - ], - "MS-RL": [ - "Microsoft Reciprocal License", - true, - false - ], - "MTLL": [ - "Matrix Template Library License", - false, - false - ], - "MulanPSL-1.0": [ - "Mulan Permissive Software License, Version 1", - false, - false - ], - "Multics": [ - "Multics License", - true, - false - ], - "Mup": [ - "Mup License", - false, - false - ], - "NASA-1.3": [ - "NASA Open Source Agreement 1.3", - true, - false - ], - "Naumen": [ - "Naumen Public License", - true, - false - ], - "NBPL-1.0": [ - "Net Boolean Public License v1", - false, - false - ], - "NCSA": [ - "University of Illinois/NCSA Open Source License", - true, - false - ], - "Net-SNMP": [ - "Net-SNMP License", - false, - false - ], - "NetCDF": [ - "NetCDF license", - false, - false - ], - "Newsletr": [ - "Newsletr License", - false, - false - ], - "NGPL": [ - "Nethack General Public License", - true, - false - ], - "NLOD-1.0": [ - "Norwegian Licence for Open Government Data", - false, - false - ], - "NLPL": [ - "No Limit Public License", - false, - false - ], - "Nokia": [ - "Nokia Open Source License", - true, - false - ], - "NOSL": [ - "Netizen Open Source License", - false, - false - ], - "Noweb": [ - "Noweb License", - false, - false - ], - "NPL-1.0": [ - "Netscape Public License v1.0", - false, - false - ], - "NPL-1.1": [ - "Netscape Public License v1.1", - false, - false - ], - "NPOSL-3.0": [ - "Non-Profit Open Software License 3.0", - true, - false - ], - "NRL": [ - "NRL License", - false, - false - ], - "NTP": [ - "NTP License", - true, - false - ], - "NTP-0": [ - "NTP No Attribution", - false, - false - ], - "Nunit": [ - "Nunit License", - false, - true - ], - "OCCT-PL": [ - "Open CASCADE Technology Public License", - false, - false - ], - "OCLC-2.0": [ - "OCLC Research Public License 2.0", - true, - false - ], - "ODbL-1.0": [ - "ODC Open Database License v1.0", - false, - false - ], - "ODC-By-1.0": [ - "Open Data Commons Attribution License v1.0", - false, - false - ], - "OFL-1.0": [ - "SIL Open Font License 1.0", - false, - false - ], - "OFL-1.0-no-RFN": [ - "SIL Open Font License 1.0 with no Reserved Font Name", - false, - false - ], - "OFL-1.0-RFN": [ - "SIL Open Font License 1.0 with Reserved Font Name", - false, - false - ], - "OFL-1.1": [ - "SIL Open Font License 1.1", - true, - false - ], - "OFL-1.1-no-RFN": [ - "SIL Open Font License 1.1 with no Reserved Font Name", - true, - false - ], - "OFL-1.1-RFN": [ - "SIL Open Font License 1.1 with Reserved Font Name", - true, - false - ], - "OGL-Canada-2.0": [ - "Open Government Licence - Canada", - false, - false - ], - "OGL-UK-1.0": [ - "Open Government Licence v1.0", - false, - false - ], - "OGL-UK-2.0": [ - "Open Government Licence v2.0", - false, - false - ], - "OGL-UK-3.0": [ - "Open Government Licence v3.0", - false, - false - ], - "OGTSL": [ - "Open Group Test Suite License", - true, - false - ], - "OLDAP-1.1": [ - "Open LDAP Public License v1.1", - false, - false - ], - "OLDAP-1.2": [ - "Open LDAP Public License v1.2", - false, - false - ], - "OLDAP-1.3": [ - "Open LDAP Public License v1.3", - false, - false - ], - "OLDAP-1.4": [ - "Open LDAP Public License v1.4", - false, - false - ], - "OLDAP-2.0": [ - "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", - false, - false - ], - "OLDAP-2.0.1": [ - "Open LDAP Public License v2.0.1", - false, - false - ], - "OLDAP-2.1": [ - "Open LDAP Public License v2.1", - false, - false - ], - "OLDAP-2.2": [ - "Open LDAP Public License v2.2", - false, - false - ], - "OLDAP-2.2.1": [ - "Open LDAP Public License v2.2.1", - false, - false - ], - "OLDAP-2.2.2": [ - "Open LDAP Public License 2.2.2", - false, - false - ], - "OLDAP-2.3": [ - "Open LDAP Public License v2.3", - false, - false - ], - "OLDAP-2.4": [ - "Open LDAP Public License v2.4", - false, - false - ], - "OLDAP-2.5": [ - "Open LDAP Public License v2.5", - false, - false - ], - "OLDAP-2.6": [ - "Open LDAP Public License v2.6", - false, - false - ], - "OLDAP-2.7": [ - "Open LDAP Public License v2.7", - false, - false - ], - "OLDAP-2.8": [ - "Open LDAP Public License v2.8", - false, - false - ], - "OML": [ - "Open Market License", - false, - false - ], - "OpenSSL": [ - "OpenSSL License", - false, - false - ], - "OPL-1.0": [ - "Open Public License v1.0", - false, - false - ], - "OSET-PL-2.1": [ - "OSET Public License version 2.1", - true, - false - ], - "OSL-1.0": [ - "Open Software License 1.0", - true, - false - ], - "OSL-1.1": [ - "Open Software License 1.1", - false, - false - ], - "OSL-2.0": [ - "Open Software License 2.0", - true, - false - ], - "OSL-2.1": [ - "Open Software License 2.1", - true, - false - ], - "OSL-3.0": [ - "Open Software License 3.0", - true, - false - ], - "Parity-6.0.0": [ - "The Parity Public License 6.0.0", - false, - false - ], - "PDDL-1.0": [ - "ODC Public Domain Dedication & License 1.0", - false, - false - ], - "PHP-3.0": [ - "PHP License v3.0", - true, - false - ], - "PHP-3.01": [ - "PHP License v3.01", - false, - false - ], - "Plexus": [ - "Plexus Classworlds License", - false, - false - ], - "PostgreSQL": [ - "PostgreSQL License", - true, - false - ], - "PSF-2.0": [ - "Python Software Foundation License 2.0", - false, - false - ], - "psfrag": [ - "psfrag License", - false, - false - ], - "psutils": [ - "psutils License", - false, - false - ], - "Python-2.0": [ - "Python License 2.0", - true, - false - ], - "Qhull": [ - "Qhull License", - false, - false - ], - "QPL-1.0": [ - "Q Public License 1.0", - true, - false - ], - "Rdisc": [ - "Rdisc License", - false, - false - ], - "RHeCos-1.1": [ - "Red Hat eCos Public License v1.1", - false, - false - ], - "RPL-1.1": [ - "Reciprocal Public License 1.1", - true, - false - ], - "RPL-1.5": [ - "Reciprocal Public License 1.5", - true, - false - ], - "RPSL-1.0": [ - "RealNetworks Public Source License v1.0", - true, - false - ], - "RSA-MD": [ - "RSA Message-Digest License", - false, - false - ], - "RSCPL": [ - "Ricoh Source Code Public License", - true, - false - ], - "Ruby": [ - "Ruby License", - false, - false - ], - "SAX-PD": [ - "Sax Public Domain Notice", - false, - false - ], - "Saxpath": [ - "Saxpath License", - false, - false - ], - "SCEA": [ - "SCEA Shared Source License", - false, - false - ], - "Sendmail": [ - "Sendmail License", - false, - false - ], - "Sendmail-8.23": [ - "Sendmail License 8.23", - false, - false - ], - "SGI-B-1.0": [ - "SGI Free Software License B v1.0", - false, - false - ], - "SGI-B-1.1": [ - "SGI Free Software License B v1.1", - false, - false - ], - "SGI-B-2.0": [ - "SGI Free Software License B v2.0", - false, - false - ], - "SHL-0.5": [ - "Solderpad Hardware License v0.5", - false, - false - ], - "SHL-0.51": [ - "Solderpad Hardware License, Version 0.51", - false, - false - ], - "SimPL-2.0": [ - "Simple Public License 2.0", - true, - false - ], - "SISSL": [ - "Sun Industry Standards Source License v1.1", - true, - false - ], - "SISSL-1.2": [ - "Sun Industry Standards Source License v1.2", - false, - false - ], - "Sleepycat": [ - "Sleepycat License", - true, - false - ], - "SMLNJ": [ - "Standard ML of New Jersey License", - false, - false - ], - "SMPPL": [ - "Secure Messaging Protocol Public License", - false, - false - ], - "SNIA": [ - "SNIA Public License 1.1", - false, - false - ], - "Spencer-86": [ - "Spencer License 86", - false, - false - ], - "Spencer-94": [ - "Spencer License 94", - false, - false - ], - "Spencer-99": [ - "Spencer License 99", - false, - false - ], - "SPL-1.0": [ - "Sun Public License v1.0", - true, - false - ], - "SSH-OpenSSH": [ - "SSH OpenSSH license", - false, - false - ], - "SSH-short": [ - "SSH short notice", - false, - false - ], - "SSPL-1.0": [ - "Server Side Public License, v 1", - false, - false - ], - "StandardML-NJ": [ - "Standard ML of New Jersey License", - false, - true - ], - "SugarCRM-1.1.3": [ - "SugarCRM Public License v1.1.3", - false, - false - ], - "SWL": [ - "Scheme Widget Library (SWL) Software License Agreement", - false, - false - ], - "TAPR-OHL-1.0": [ - "TAPR Open Hardware License v1.0", - false, - false - ], - "TCL": [ - "TCL/TK License", - false, - false - ], - "TCP-wrappers": [ - "TCP Wrappers License", - false, - false - ], - "TMate": [ - "TMate Open Source License", - false, - false - ], - "TORQUE-1.1": [ - "TORQUE v2.5+ Software License v1.1", - false, - false - ], - "TOSL": [ - "Trusster Open Source License", - false, - false - ], - "TU-Berlin-1.0": [ - "Technische Universitaet Berlin License 1.0", - false, - false - ], - "TU-Berlin-2.0": [ - "Technische Universitaet Berlin License 2.0", - false, - false - ], - "UCL-1.0": [ - "Upstream Compatibility License v1.0", - true, - false - ], - "Unicode-DFS-2015": [ - "Unicode License Agreement - Data Files and Software (2015)", - false, - false - ], - "Unicode-DFS-2016": [ - "Unicode License Agreement - Data Files and Software (2016)", - false, - false - ], - "Unicode-TOU": [ - "Unicode Terms of Use", - false, - false - ], - "Unlicense": [ - "The Unlicense", - false, - false - ], - "UPL-1.0": [ - "Universal Permissive License v1.0", - true, - false - ], - "Vim": [ - "Vim License", - false, - false - ], - "VOSTROM": [ - "VOSTROM Public License for Open Source", - false, - false - ], - "VSL-1.0": [ - "Vovida Software License v1.0", - true, - false - ], - "W3C": [ - "W3C Software Notice and License (2002-12-31)", - true, - false - ], - "W3C-19980720": [ - "W3C Software Notice and License (1998-07-20)", - false, - false - ], - "W3C-20150513": [ - "W3C Software Notice and Document License (2015-05-13)", - false, - false - ], - "Watcom-1.0": [ - "Sybase Open Watcom Public License 1.0", - true, - false - ], - "Wsuipa": [ - "Wsuipa License", - false, - false - ], - "WTFPL": [ - "Do What The F*ck You Want To Public License", - false, - false - ], - "wxWindows": [ - "wxWindows Library License", - false, - true - ], - "X11": [ - "X11 License", - false, - false - ], - "Xerox": [ - "Xerox License", - false, - false - ], - "XFree86-1.1": [ - "XFree86 License 1.1", - false, - false - ], - "xinetd": [ - "xinetd License", - false, - false - ], - "Xnet": [ - "X.Net License", - true, - false - ], - "xpp": [ - "XPP License", - false, - false - ], - "XSkat": [ - "XSkat License", - false, - false - ], - "YPL-1.0": [ - "Yahoo! Public License v1.0", - false, - false - ], - "YPL-1.1": [ - "Yahoo! Public License v1.1", - false, - false - ], - "Zed": [ - "Zed License", - false, - false - ], - "Zend-2.0": [ - "Zend License v2.0", - false, - false - ], - "Zimbra-1.3": [ - "Zimbra Public License v1.3", - false, - false - ], - "Zimbra-1.4": [ - "Zimbra Public License v1.4", - false, - false - ], - "Zlib": [ - "zlib License", - true, - false - ], - "zlib-acknowledgement": [ - "zlib/libpng License with Acknowledgement", - false, - false - ], - "ZPL-1.1": [ - "Zope Public License 1.1", - false, - false - ], - "ZPL-2.0": [ - "Zope Public License 2.0", - true, - false - ], - "ZPL-2.1": [ - "Zope Public License 2.1", - false, - false - ] -} \ No newline at end of file diff --git a/vendor/composer/spdx-licenses/src/SpdxLicenses.php b/vendor/composer/spdx-licenses/src/SpdxLicenses.php deleted file mode 100644 index db6f7ef..0000000 --- a/vendor/composer/spdx-licenses/src/SpdxLicenses.php +++ /dev/null @@ -1,343 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Spdx; - -class SpdxLicenses -{ - /** @var string */ - const LICENSES_FILE = 'spdx-licenses.json'; - - /** @var string */ - const EXCEPTIONS_FILE = 'spdx-exceptions.json'; - - /** - * Contains all the licenses. - * - * The array is indexed by license identifiers, which contain - * a numerically indexed array with license details. - * - * [ lowercased license identifier => - * [ 0 => identifier (string), 1 => full name (string), 2 => osi certified (bool), 3 => deprecated (bool) ] - * , ... - * ] - * - * @var array - */ - private $licenses; - - /** - * @var string - */ - private $licensesExpression; - - /** - * Contains all the license exceptions. - * - * The array is indexed by license exception identifiers, which contain - * a numerically indexed array with license exception details. - * - * [ lowercased exception identifier => - * [ 0 => exception identifier (string), 1 => full name (string) ] - * , ... - * ] - * - * @var array - */ - private $exceptions; - - /** - * @var string - */ - private $exceptionsExpression; - - public function __construct() - { - $this->loadLicenses(); - $this->loadExceptions(); - } - - /** - * Returns license metadata by license identifier. - * - * This function adds a link to the full license text to the license metadata. - * The array returned is in the form of: - * - * [ 0 => full name (string), 1 => osi certified, 2 => link to license text (string), 3 => deprecation status (bool) ] - * - * @param string $identifier - * - * @return array|null - */ - public function getLicenseByIdentifier($identifier) - { - $key = strtolower($identifier); - - if (!isset($this->licenses[$key])) { - return; - } - - list($identifier, $name, $isOsiApproved, $isDeprecatedLicenseId) = $this->licenses[$key]; - - return array( - $name, - $isOsiApproved, - 'https://spdx.org/licenses/' . $identifier . '.html#licenseText', - $isDeprecatedLicenseId, - ); - } - - /** - * Returns all licenses information, keyed by the lowercased license identifier. - * - * @return array[] Each item is [ 0 => identifier (string), 1 => full name (string), 2 => osi certified (bool), 3 => deprecated (bool) ] - */ - public function getLicenses() - { - return $this->licenses; - } - - /** - * Returns license exception metadata by license exception identifier. - * - * This function adds a link to the full license exception text to the license exception metadata. - * The array returned is in the form of: - * - * [ 0 => full name (string), 1 => link to license text (string) ] - * - * @param string $identifier - * - * @return array|null - */ - public function getExceptionByIdentifier($identifier) - { - $key = strtolower($identifier); - - if (!isset($this->exceptions[$key])) { - return; - } - - list($identifier, $name) = $this->exceptions[$key]; - - return array( - $name, - 'https://spdx.org/licenses/' . $identifier . '.html#licenseExceptionText', - ); - } - - /** - * Returns the short identifier of a license (or license exception) by full name. - * - * @param string $name - * - * @return string|null - */ - public function getIdentifierByName($name) - { - foreach ($this->licenses as $licenseData) { - if ($licenseData[1] === $name) { - return $licenseData[0]; - } - } - - foreach ($this->exceptions as $licenseData) { - if ($licenseData[1] === $name) { - return $licenseData[0]; - } - } - } - - /** - * Returns the OSI Approved status for a license by identifier. - * - * @param string $identifier - * - * @return bool - */ - public function isOsiApprovedByIdentifier($identifier) - { - return $this->licenses[strtolower($identifier)][2]; - } - - /** - * Returns the deprecation status for a license by identifier. - * - * @param string $identifier - * - * @return bool - */ - public function isDeprecatedByIdentifier($identifier) - { - return $this->licenses[strtolower($identifier)][3]; - } - - /** - * @param array|string $license - * - * @throws \InvalidArgumentException - * - * @return bool - */ - public function validate($license) - { - if (is_array($license)) { - $count = count($license); - if ($count !== count(array_filter($license, 'is_string'))) { - throw new \InvalidArgumentException('Array of strings expected.'); - } - $license = $count > 1 ? '(' . implode(' OR ', $license) . ')' : (string) reset($license); - } - - if (!is_string($license)) { - throw new \InvalidArgumentException(sprintf( - 'Array or String expected, %s given.', - gettype($license) - )); - } - - return $this->isValidLicenseString($license); - } - - /** - * @return string - */ - public static function getResourcesDir() - { - return dirname(__DIR__) . '/res'; - } - - private function loadLicenses() - { - if (null !== $this->licenses) { - return; - } - - $json = file_get_contents(self::getResourcesDir() . '/' . self::LICENSES_FILE); - $this->licenses = array(); - - foreach (json_decode($json, true) as $identifier => $license) { - $this->licenses[strtolower($identifier)] = array($identifier, $license[0], $license[1], $license[2]); - } - } - - private function loadExceptions() - { - if (null !== $this->exceptions) { - return; - } - - $json = file_get_contents(self::getResourcesDir() . '/' . self::EXCEPTIONS_FILE); - $this->exceptions = array(); - - foreach (json_decode($json, true) as $identifier => $exception) { - $this->exceptions[strtolower($identifier)] = array($identifier, $exception[0]); - } - } - - /** - * @return string - */ - private function getLicensesExpression() - { - if (null === $this->licensesExpression) { - $licenses = array_map('preg_quote', array_keys($this->licenses)); - rsort($licenses); - $licenses = implode('|', $licenses); - $this->licensesExpression = $licenses; - } - - return $this->licensesExpression; - } - - /** - * @return string - */ - private function getExceptionsExpression() - { - if (null === $this->exceptionsExpression) { - $exceptions = array_map('preg_quote', array_keys($this->exceptions)); - rsort($exceptions); - $exceptions = implode('|', $exceptions); - $this->exceptionsExpression = $exceptions; - } - - return $this->exceptionsExpression; - } - - /** - * @param string $license - * - * @throws \RuntimeException - * - * @return bool - */ - private function isValidLicenseString($license) - { - if (isset($this->licenses[strtolower($license)])) { - return true; - } - - $licenses = $this->getLicensesExpression(); - $exceptions = $this->getExceptionsExpression(); - - $regex = <<[\pL\pN.-]{1,}) - - # license-id: taken from list - (?${licenses}) - - # license-exception-id: taken from list - (?${exceptions}) - - # license-ref: [DocumentRef-1*(idstring):]LicenseRef-1*(idstring) - (?(?:DocumentRef-(?&idstring):)?LicenseRef-(?&idstring)) - - # simple-expresssion: license-id / license-id+ / license-ref - (?(?&licenseid)\+? | (?&licenseid) | (?&licenseref)) - - # compound-expression: 1*( - # simple-expression / - # simple-expression WITH license-exception-id / - # compound-expression AND compound-expression / - # compound-expression OR compound-expression - # ) / ( compound-expression ) ) - (? - (?&simple_expression) ( \s+ WITH \s+ (?&licenseexceptionid))? - | \( \s* (?&compound_expression) \s* \) - ) - (? - (?&compound_head) (?: \s+ (?:AND|OR) \s+ (?&compound_expression))? - ) - - # license-expression: 1*1(simple-expression / compound-expression) - (?(?&compound_expression) | (?&simple_expression)) -) # end of define - -^(NONE | NOASSERTION | (?&license_expression))$ -}xi -REGEX; - - $match = preg_match($regex, $license); - - if (0 === $match) { - return false; - } - - if (false === $match) { - throw new \RuntimeException('Regex failed to compile/run.'); - } - - return true; - } -} diff --git a/vendor/composer/xdebug-handler/CHANGELOG.md b/vendor/composer/xdebug-handler/CHANGELOG.md deleted file mode 100644 index 7f54539..0000000 --- a/vendor/composer/xdebug-handler/CHANGELOG.md +++ /dev/null @@ -1,70 +0,0 @@ -## [Unreleased] - -## [1.4.1] - 2020-03-01 - * Fixed: restart fails if an ini file is empty. - -## [1.4.0] - 2019-11-06 - * Added: support for `NO_COLOR` environment variable: https://no-color.org - * Added: color support for Hyper terminal: https://github.com/zeit/hyper - * Fixed: correct capitalization of Xdebug (apparently). - * Fixed: improved handling for uopz extension. - -## [1.3.3] - 2019-05-27 - * Fixed: add environment changes to `$_ENV` if it is being used. - -## [1.3.2] - 2019-01-28 - * Fixed: exit call being blocked by uopz extension, resulting in application code running twice. - -## [1.3.1] - 2018-11-29 - * Fixed: fail restart if `passthru` has been disabled in `disable_functions`. - * Fixed: fail restart if an ini file cannot be opened, otherwise settings will be missing. - -## [1.3.0] - 2018-08-31 - * Added: `setPersistent` method to use environment variables for the restart. - * Fixed: improved debugging by writing output to stderr. - * Fixed: no restart when `php_ini_scanned_files` is not functional and is needed. - -## [1.2.1] - 2018-08-23 - * Fixed: fatal error with apc, when using `apc.mmap_file_mask`. - -## [1.2.0] - 2018-08-16 - * Added: debug information using `XDEBUG_HANDLER_DEBUG`. - * Added: fluent interface for setters. - * Added: `PhpConfig` helper class for calling PHP sub-processes. - * Added: `PHPRC` original value to restart stettings, for use in a restarted process. - * Changed: internal procedure to disable ini-scanning, using `-n` command-line option. - * Fixed: replaced `escapeshellarg` usage to avoid locale problems. - * Fixed: improved color-option handling to respect double-dash delimiter. - * Fixed: color-option handling regression from main script changes. - * Fixed: improved handling when checking main script. - * Fixed: handling for standard input, that never actually did anything. - * Fixed: fatal error when ctype extension is not available. - -## [1.1.0] - 2018-04-11 - * Added: `getRestartSettings` method for calling PHP processes in a restarted process. - * Added: API definition and @internal class annotations. - * Added: protected `requiresRestart` method for extending classes. - * Added: `setMainScript` method for applications that change the working directory. - * Changed: private `tmpIni` variable to protected for extending classes. - * Fixed: environment variables not available in $_SERVER when restored in the restart. - * Fixed: relative path problems caused by Phar::interceptFileFuncs. - * Fixed: incorrect handling when script file cannot be found. - -## [1.0.0] - 2018-03-08 - * Added: PSR3 logging for optional status output. - * Added: existing ini settings are merged to catch command-line overrides. - * Added: code, tests and other artefacts to decouple from Composer. - * Break: the following class was renamed: - - `Composer\XdebugHandler` -> `Composer\XdebugHandler\XdebugHandler` - -[Unreleased]: https://github.com/composer/xdebug-handler/compare/1.4.1...HEAD -[1.4.1]: https://github.com/composer/xdebug-handler/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/composer/xdebug-handler/compare/1.3.3...1.4.0 -[1.3.3]: https://github.com/composer/xdebug-handler/compare/1.3.2...1.3.3 -[1.3.2]: https://github.com/composer/xdebug-handler/compare/1.3.1...1.3.2 -[1.3.1]: https://github.com/composer/xdebug-handler/compare/1.3.0...1.3.1 -[1.3.0]: https://github.com/composer/xdebug-handler/compare/1.2.1...1.3.0 -[1.2.1]: https://github.com/composer/xdebug-handler/compare/1.2.0...1.2.1 -[1.2.0]: https://github.com/composer/xdebug-handler/compare/1.1.0...1.2.0 -[1.1.0]: https://github.com/composer/xdebug-handler/compare/1.0.0...1.1.0 -[1.0.0]: https://github.com/composer/xdebug-handler/compare/d66f0d15cb57...1.0.0 diff --git a/vendor/composer/xdebug-handler/LICENSE b/vendor/composer/xdebug-handler/LICENSE deleted file mode 100644 index 963618a..0000000 --- a/vendor/composer/xdebug-handler/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Composer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/composer/xdebug-handler/README.md b/vendor/composer/xdebug-handler/README.md deleted file mode 100644 index 43d38d9..0000000 --- a/vendor/composer/xdebug-handler/README.md +++ /dev/null @@ -1,288 +0,0 @@ -# composer/xdebug-handler - -[![packagist](https://img.shields.io/packagist/v/composer/xdebug-handler.svg)](https://packagist.org/packages/composer/xdebug-handler) -[![linux build](https://img.shields.io/travis/composer/xdebug-handler/master.svg?label=linux+build)](https://travis-ci.org/composer/xdebug-handler) -[![windows build](https://img.shields.io/appveyor/ci/Seldaek/xdebug-handler/master.svg?label=windows+build)](https://ci.appveyor.com/project/Seldaek/xdebug-handler) -![license](https://img.shields.io/github/license/composer/xdebug-handler.svg) -![php](https://img.shields.io/packagist/php-v/composer/xdebug-handler.svg?colorB=8892BF&label=php) - -Restart a CLI process without loading the Xdebug extension. - -Originally written as part of [composer/composer](https://github.com/composer/composer), -now extracted and made available as a stand-alone library. - -## Installation - -Install the latest version with: - -```bash -$ composer require composer/xdebug-handler -``` - -## Requirements - -* PHP 5.3.2 minimum, although functionality is disabled below PHP 5.4.0. Using the latest PHP version is highly recommended. - -## Basic Usage -```php -use Composer\XdebugHandler\XdebugHandler; - -$xdebug = new XdebugHandler('myapp'); -$xdebug->check(); -unset($xdebug); -``` - -The constructor takes two parameters: - -#### _$envPrefix_ -This is used to create distinct environment variables and is upper-cased and prepended to default base values. The above example enables the use of: - -- `MYAPP_ALLOW_XDEBUG=1` to override automatic restart and allow Xdebug -- `MYAPP_ORIGINAL_INIS` to obtain ini file locations in a restarted process - -#### _$colorOption_ -This optional value is added to the restart command-line and is needed to force color output in a piped child process. Only long-options are supported, for example `--ansi` or `--colors=always` etc. - -If the original command-line contains an argument that pattern matches this value (for example `--no-ansi`, `--colors=never`) then _$colorOption_ is ignored. - -If the pattern match ends with `=auto` (for example `--colors=auto`), the argument is replaced by _$colorOption_. Otherwise it is added at either the end of the command-line, or preceding the first double-dash `--` delimiter. - -## Advanced Usage - -* [How it works](#how-it-works) -* [Limitations](#limitations) -* [Helper methods](#helper-methods) -* [Setter methods](#setter-methods) -* [Process configuration](#process-configuration) -* [Troubleshooting](#troubleshooting) -* [Extending the library](#extending-the-library) - -### How it works - -A temporary ini file is created from the loaded (and scanned) ini files, with any references to the Xdebug extension commented out. Current ini settings are merged, so that most ini settings made on the command-line or by the application are included (see [Limitations](#limitations)) - -* `MYAPP_ALLOW_XDEBUG` is set with internal data to flag and use in the restart. -* The command-line and environment are [configured](#process-configuration) for the restart. -* The application is restarted in a new process using `passthru`. - * The restart settings are stored in the environment. - * `MYAPP_ALLOW_XDEBUG` is unset. - * The application runs and exits. -* The main process exits with the exit code from the restarted process. - -### Limitations -There are a few things to be aware of when running inside a restarted process. - -* Extensions set on the command-line will not be loaded. -* Ini file locations will be reported as per the restart - see [getAllIniFiles()](#getallinifiles). -* Php sub-processes may be loaded with Xdebug enabled - see [Process configuration](#process-configuration). - -### Helper methods -These static methods provide information from the current process, regardless of whether it has been restarted or not. - -#### _getAllIniFiles()_ -Returns an array of the original ini file locations. Use this instead of calling `php_ini_loaded_file` and `php_ini_scanned_files`, which will report the wrong values in a restarted process. - -```php -use Composer\XdebugHandler\XdebugHandler; - -$files = XdebugHandler::getAllIniFiles(); - -# $files[0] always exists, it could be an empty string -$loadedIni = array_shift($files); -$scannedInis = $files; -``` - -These locations are also available in the `MYAPP_ORIGINAL_INIS` environment variable. This is a path-separated string comprising the location returned from `php_ini_loaded_file`, which could be empty, followed by locations parsed from calling `php_ini_scanned_files`. - -#### _getRestartSettings()_ -Returns an array of settings that can be used with PHP [sub-processes](#sub-processes), or null if the process was not restarted. - -```php -use Composer\XdebugHandler\XdebugHandler; - -$settings = XdebugHandler::getRestartSettings(); -/** - * $settings: array (if the current process was restarted, - * or called with the settings from a previous restart), or null - * - * 'tmpIni' => the temporary ini file used in the restart (string) - * 'scannedInis' => if there were any scanned inis (bool) - * 'scanDir' => the original PHP_INI_SCAN_DIR value (false|string) - * 'phprc' => the original PHPRC value (false|string) - * 'inis' => the original inis from getAllIniFiles (array) - * 'skipped' => the skipped version from getSkippedVersion (string) - */ -``` - -#### _getSkippedVersion()_ -Returns the Xdebug version string that was skipped by the restart, or an empty value if there was no restart (or Xdebug is still loaded, perhaps by an extending class restarting for a reason other than removing Xdebug). - -```php -use Composer\XdebugHandler\XdebugHandler; - -$version = XdebugHandler::getSkippedVersion(); -# $version: '2.6.0' (for example), or an empty string -``` - -### Setter methods -These methods implement a fluent interface and must be called before the main `check()` method. - -#### _setLogger($logger)_ -Enables the output of status messages to an external PSR3 logger. All messages are reported with either `DEBUG` or `WARNING` log levels. For example (showing the level and message): - -``` -// Restart overridden -DEBUG Checking MYAPP_ALLOW_XDEBUG -DEBUG The Xdebug extension is loaded (2.5.0) -DEBUG No restart (MYAPP_ALLOW_XDEBUG=1) - -// Failed restart -DEBUG Checking MYAPP_ALLOW_XDEBUG -DEBUG The Xdebug extension is loaded (2.5.0) -WARNING No restart (Unable to create temp ini file at: ...) -``` - -Status messages can also be output with `XDEBUG_HANDLER_DEBUG`. See [Troubleshooting](#troubleshooting). - -#### _setMainScript($script)_ -Sets the location of the main script to run in the restart. This is only needed in more esoteric use-cases, or if the `argv[0]` location is inaccessible. The script name `--` is supported for standard input. - -#### _setPersistent()_ -Configures the restart using [persistent settings](#persistent-settings), so that Xdebug is not loaded in any sub-process. - -Use this method if your application invokes one or more PHP sub-process and the Xdebug extension is not needed. This avoids the overhead of implementing specific [sub-process](#sub-processes) strategies. - -Alternatively, this method can be used to set up a default _Xdebug-free_ environment which can be changed if a sub-process requires Xdebug, then restored afterwards: - -```php -function SubProcessWithXdebug() -{ - $phpConfig = new Composer\XdebugHandler\PhpConfig(); - - # Set the environment to the original configuration - $phpConfig->useOriginal(); - - # run the process with Xdebug loaded - ... - - # Restore Xdebug-free environment - $phpConfig->usePersistent(); -} -``` - -### Process configuration -The library offers two strategies to invoke a new PHP process without loading Xdebug, using either _standard_ or _persistent_ settings. Note that this is only important if the application calls a PHP sub-process. - -#### Standard settings -Uses command-line options to remove Xdebug from the new process only. - -* The -n option is added to the command-line. This tells PHP not to scan for additional inis. -* The temporary ini is added to the command-line with the -c option. - ->_If the new process calls a PHP sub-process, Xdebug will be loaded in that sub-process (unless it implements xdebug-handler, in which case there will be another restart)._ - -This is the default strategy used in the restart. - -#### Persistent settings -Uses environment variables to remove Xdebug from the new process and persist these settings to any sub-process. - -* `PHP_INI_SCAN_DIR` is set to an empty string. This tells PHP not to scan for additional inis. -* `PHPRC` is set to the temporary ini. - ->_If the new process calls a PHP sub-process, Xdebug will not be loaded in that sub-process._ - -This strategy can be used in the restart by calling [setPersistent()](#setpersistent). - -#### Sub-processes -The `PhpConfig` helper class makes it easy to invoke a PHP sub-process (with or without Xdebug loaded), regardless of whether there has been a restart. - -Each of its methods returns an array of PHP options (to add to the command-line) and sets up the environment for the required strategy. The [getRestartSettings()](#getrestartsettings) method is used internally. - -* `useOriginal()` - Xdebug will be loaded in the new process. -* `useStandard()` - Xdebug will **not** be loaded in the new process - see [standard settings](#standard-settings). -* `userPersistent()` - Xdebug will **not** be loaded in the new process - see [persistent settings](#persistent-settings) - -If there was no restart, an empty options array is returned and the environment is not changed. - -```php -use Composer\XdebugHandler\PhpConfig; - -$config = new PhpConfig; - -$options = $config->useOriginal(); -# $options: empty array -# environment: PHPRC and PHP_INI_SCAN_DIR set to original values - -$options = $config->useStandard(); -# $options: [-n, -c, tmpIni] -# environment: PHPRC and PHP_INI_SCAN_DIR set to original values - -$options = $config->usePersistent(); -# $options: empty array -# environment: PHPRC=tmpIni, PHP_INI_SCAN_DIR='' -``` - -### Troubleshooting -The following environment settings can be used to troubleshoot unexpected behavior: - -* `XDEBUG_HANDLER_DEBUG=1` Outputs status messages to `STDERR`, if it is defined, irrespective of any PSR3 logger. Each message is prefixed `xdebug-handler[pid]`, where pid is the process identifier. - -* `XDEBUG_HANDLER_DEBUG=2` As above, but additionally saves the temporary ini file and reports its location in a status message. - -### Extending the library -The API is defined by classes and their accessible elements that are not annotated as @internal. The main class has two protected methods that can be overridden to provide additional functionality: - -#### _requiresRestart($isLoaded)_ -By default the process will restart if Xdebug is loaded. Extending this method allows an application to decide, by returning a boolean (or equivalent) value. It is only called if `MYAPP_ALLOW_XDEBUG` is empty, so it will not be called in the restarted process (where this variable contains internal data), or if the restart has been overridden. - -Note that the [setMainScript()](#setmainscriptscript) and [setPersistent()](#setpersistent) setters can be used here, if required. - -#### _restart($command)_ -An application can extend this to modify the temporary ini file, its location given in the `tmpIni` property. New settings can be safely appended to the end of the data, which is `PHP_EOL` terminated. - -Note that the `$command` parameter is the escaped command-line string that will be used for the new process and must be treated accordingly. - -Remember to finish with `parent::restart($command)`. - -#### Example -This example demonstrates two ways to extend basic functionality: - -* To avoid the overhead of spinning up a new process, the restart is skipped if a simple help command is requested. - -* The application needs write-access to phar files, so it will force a restart if `phar.readonly` is set (regardless of whether Xdebug is loaded) and change this value in the temporary ini file. - -```php -use Composer\XdebugHandler\XdebugHandler; -use MyApp\Command; - -class MyRestarter extends XdebugHandler -{ - private $required; - - protected function requiresRestart($isLoaded) - { - if (Command::isHelp()) { - # No need to disable Xdebug for this - return false; - } - - $this->required = (bool) ini_get('phar.readonly'); - return $isLoaded || $this->required; - } - - protected function restart($command) - { - if ($this->required) { - # Add required ini setting to tmpIni - $content = file_get_contents($this->tmpIni); - $content .= 'phar.readonly=0'.PHP_EOL; - file_put_contents($this->tmpIni, $content); - } - - parent::restart($command); - } -} -``` - -## License -composer/xdebug-handler is licensed under the MIT License, see the LICENSE file for details. diff --git a/vendor/composer/xdebug-handler/composer.json b/vendor/composer/xdebug-handler/composer.json deleted file mode 100644 index ea40a2f..0000000 --- a/vendor/composer/xdebug-handler/composer.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "composer/xdebug-handler", - "description": "Restarts a process without Xdebug.", - "type": "library", - "license": "MIT", - "keywords": [ - "xdebug", - "performance" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" - }, - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Composer\\XdebugHandler\\": "tests" - } - }, - "scripts": { - "test": "phpunit" - } -} diff --git a/vendor/composer/xdebug-handler/src/PhpConfig.php b/vendor/composer/xdebug-handler/src/PhpConfig.php deleted file mode 100644 index 5535eca..0000000 --- a/vendor/composer/xdebug-handler/src/PhpConfig.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\XdebugHandler; - -/** - * @author John Stevenson - */ -class PhpConfig -{ - /** - * Use the original PHP configuration - * - * @return array PHP cli options - */ - public function useOriginal() - { - $this->getDataAndReset(); - return array(); - } - - /** - * Use standard restart settings - * - * @return array PHP cli options - */ - public function useStandard() - { - if ($data = $this->getDataAndReset()) { - return array('-n', '-c', $data['tmpIni']); - } - - return array(); - } - - /** - * Use environment variables to persist settings - * - * @return array PHP cli options - */ - public function usePersistent() - { - if ($data = $this->getDataAndReset()) { - Process::setEnv('PHPRC', $data['tmpIni']); - Process::setEnv('PHP_INI_SCAN_DIR', ''); - } - - return array(); - } - - /** - * Returns restart data if available and resets the environment - * - * @return array|null - */ - private function getDataAndReset() - { - if ($data = XdebugHandler::getRestartSettings()) { - Process::setEnv('PHPRC', $data['phprc']); - Process::setEnv('PHP_INI_SCAN_DIR', $data['scanDir']); - } - - return $data; - } -} diff --git a/vendor/composer/xdebug-handler/src/Process.php b/vendor/composer/xdebug-handler/src/Process.php deleted file mode 100644 index eb2ad2b..0000000 --- a/vendor/composer/xdebug-handler/src/Process.php +++ /dev/null @@ -1,181 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\XdebugHandler; - -/** - * Provides utility functions to prepare a child process command-line and set - * environment variables in that process. - * - * @author John Stevenson - * @internal - */ -class Process -{ - /** - * Returns an array of parameters, including a color option if required - * - * A color option is needed because child process output is piped. - * - * @param array $args The script parameters - * @param string $colorOption The long option to force color output - * - * @return array - */ - public static function addColorOption(array $args, $colorOption) - { - if (!$colorOption - || in_array($colorOption, $args) - || !preg_match('/^--([a-z]+$)|(^--[a-z]+=)/', $colorOption, $matches)) { - return $args; - } - - if (isset($matches[2])) { - // Handle --color(s)= options - if (false !== ($index = array_search($matches[2].'auto', $args))) { - $args[$index] = $colorOption; - return $args; - } elseif (preg_grep('/^'.$matches[2].'/', $args)) { - return $args; - } - } elseif (in_array('--no-'.$matches[1], $args)) { - return $args; - } - - // Check for NO_COLOR variable (https://no-color.org/) - if (false !== getenv('NO_COLOR')) { - return $args; - } - - if (false !== ($index = array_search('--', $args))) { - // Position option before double-dash delimiter - array_splice($args, $index, 0, $colorOption); - } else { - $args[] = $colorOption; - } - - return $args; - } - - /** - * Escapes a string to be used as a shell argument. - * - * From https://github.com/johnstevenson/winbox-args - * MIT Licensed (c) John Stevenson - * - * @param string $arg The argument to be escaped - * @param bool $meta Additionally escape cmd.exe meta characters - * @param bool $module The argument is the module to invoke - * - * @return string The escaped argument - */ - public static function escape($arg, $meta = true, $module = false) - { - if (!defined('PHP_WINDOWS_VERSION_BUILD')) { - return "'".str_replace("'", "'\\''", $arg)."'"; - } - - $quote = strpbrk($arg, " \t") !== false || $arg === ''; - - $arg = preg_replace('/(\\\\*)"/', '$1$1\\"', $arg, -1, $dquotes); - - if ($meta) { - $meta = $dquotes || preg_match('/%[^%]+%/', $arg); - - if (!$meta) { - $quote = $quote || strpbrk($arg, '^&|<>()') !== false; - } elseif ($module && !$dquotes && $quote) { - $meta = false; - } - } - - if ($quote) { - $arg = '"'.preg_replace('/(\\\\*)$/', '$1$1', $arg).'"'; - } - - if ($meta) { - $arg = preg_replace('/(["^&|<>()%])/', '^$1', $arg); - } - - return $arg; - } - - /** - * Returns true if the output stream supports colors - * - * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo - * terminals via named pipes, so we can only check the environment. - * - * @param mixed $output A valid CLI output stream - * - * @return bool - */ - public static function supportsColor($output) - { - if ('Hyper' === getenv('TERM_PROGRAM')) { - return true; - } - - if (defined('PHP_WINDOWS_VERSION_BUILD')) { - return (function_exists('sapi_windows_vt100_support') - && sapi_windows_vt100_support($output)) - || false !== getenv('ANSICON') - || 'ON' === getenv('ConEmuANSI') - || 'xterm' === getenv('TERM'); - } - - if (function_exists('stream_isatty')) { - return stream_isatty($output); - } - - if (function_exists('posix_isatty')) { - return posix_isatty($output); - } - - $stat = fstat($output); - // Check if formatted mode is S_IFCHR - return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; - } - - /** - * Makes putenv environment changes available in $_SERVER and $_ENV - * - * @param string $name - * @param string|false $value A false value unsets the variable - * - * @return bool Whether the environment variable was set - */ - public static function setEnv($name, $value = false) - { - $unset = false === $value; - - if (!putenv($unset ? $name : $name.'='.$value)) { - return false; - } - - if ($unset) { - unset($_SERVER[$name]); - } else { - $_SERVER[$name] = $value; - } - - // Update $_ENV if it is being used - if (false !== stripos((string) ini_get('variables_order'), 'E')) { - if ($unset) { - unset($_ENV[$name]); - } else { - $_ENV[$name] = $value; - } - } - - return true; - } -} diff --git a/vendor/composer/xdebug-handler/src/Status.php b/vendor/composer/xdebug-handler/src/Status.php deleted file mode 100644 index e714b1c..0000000 --- a/vendor/composer/xdebug-handler/src/Status.php +++ /dev/null @@ -1,163 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\XdebugHandler; - -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; - -/** - * @author John Stevenson - * @internal - */ -class Status -{ - const ENV_RESTART = 'XDEBUG_HANDLER_RESTART'; - const CHECK = 'Check'; - const ERROR = 'Error'; - const INFO = 'Info'; - const NORESTART = 'NoRestart'; - const RESTART = 'Restart'; - const RESTARTING = 'Restarting'; - const RESTARTED = 'Restarted'; - - private $debug; - private $envAllowXdebug; - private $loaded; - private $logger; - private $time; - - /** - * Constructor - * - * @param string $envAllowXdebug Prefixed _ALLOW_XDEBUG name - * @param bool $debug Whether debug output is required - */ - public function __construct($envAllowXdebug, $debug) - { - $start = getenv(self::ENV_RESTART); - Process::setEnv(self::ENV_RESTART); - $this->time = $start ? round((microtime(true) - $start) * 1000) : 0; - - $this->envAllowXdebug = $envAllowXdebug; - $this->debug = $debug && defined('STDERR'); - } - - /** - * @param LoggerInterface $logger - */ - public function setLogger(LoggerInterface $logger) - { - $this->logger = $logger; - } - - /** - * Calls a handler method to report a message - * - * @param string $op The handler constant - * @param null|string $data Data required by the handler - */ - public function report($op, $data) - { - if ($this->logger || $this->debug) { - call_user_func(array($this, 'report'.$op), $data); - } - } - - /** - * Outputs a status message - * - * @param string $text - * @param string $level - */ - private function output($text, $level = null) - { - if ($this->logger) { - $this->logger->log($level ?: LogLevel::DEBUG, $text); - } - - if ($this->debug) { - fwrite(STDERR, sprintf('xdebug-handler[%d] %s', getmypid(), $text.PHP_EOL)); - } - } - - private function reportCheck($loaded) - { - $this->loaded = $loaded; - $this->output('Checking '.$this->envAllowXdebug); - } - - private function reportError($error) - { - $this->output(sprintf('No restart (%s)', $error), LogLevel::WARNING); - } - - private function reportInfo($info) - { - $this->output($info); - } - - private function reportNoRestart() - { - $this->output($this->getLoadedMessage()); - - if ($this->loaded) { - $text = sprintf('No restart (%s)', $this->getEnvAllow()); - if (!getenv($this->envAllowXdebug)) { - $text .= ' Allowed by application'; - } - $this->output($text); - } - } - - private function reportRestart() - { - $this->output($this->getLoadedMessage()); - Process::setEnv(self::ENV_RESTART, (string) microtime(true)); - } - - private function reportRestarted() - { - $loaded = $this->getLoadedMessage(); - $text = sprintf('Restarted (%d ms). %s', $this->time, $loaded); - $level = $this->loaded ? LogLevel::WARNING : null; - $this->output($text, $level); - } - - private function reportRestarting($command) - { - $text = sprintf('Process restarting (%s)', $this->getEnvAllow()); - $this->output($text); - $text = 'Running '.$command; - $this->output($text); - } - - /** - * Returns the _ALLOW_XDEBUG environment variable as name=value - * - * @return string - */ - private function getEnvAllow() - { - return $this->envAllowXdebug.'='.getenv($this->envAllowXdebug); - } - - /** - * Returns the Xdebug status and version - * - * @return string - */ - private function getLoadedMessage() - { - $loaded = $this->loaded ? sprintf('loaded (%s)', $this->loaded) : 'not loaded'; - return 'The Xdebug extension is '.$loaded; - } -} diff --git a/vendor/composer/xdebug-handler/src/XdebugHandler.php b/vendor/composer/xdebug-handler/src/XdebugHandler.php deleted file mode 100644 index 3d48447..0000000 --- a/vendor/composer/xdebug-handler/src/XdebugHandler.php +++ /dev/null @@ -1,565 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\XdebugHandler; - -use Psr\Log\LoggerInterface; - -/** - * @author John Stevenson - */ -class XdebugHandler -{ - const SUFFIX_ALLOW = '_ALLOW_XDEBUG'; - const SUFFIX_INIS = '_ORIGINAL_INIS'; - const RESTART_ID = 'internal'; - const RESTART_SETTINGS = 'XDEBUG_HANDLER_SETTINGS'; - const DEBUG = 'XDEBUG_HANDLER_DEBUG'; - - /** @var string|null */ - protected $tmpIni; - - private static $inRestart; - private static $name; - private static $skipped; - - private $cli; - private $colorOption; - private $debug; - private $envAllowXdebug; - private $envOriginalInis; - private $loaded; - private $persistent; - private $script; - /** @var Status|null */ - private $statusWriter; - - /** - * Constructor - * - * The $envPrefix is used to create distinct environment variables. It is - * uppercased and prepended to the default base values. For example 'myapp' - * would result in MYAPP_ALLOW_XDEBUG and MYAPP_ORIGINAL_INIS. - * - * @param string $envPrefix Value used in environment variables - * @param string $colorOption Command-line long option to force color output - * @throws \RuntimeException If a parameter is invalid - */ - public function __construct($envPrefix, $colorOption = '') - { - if (!is_string($envPrefix) || empty($envPrefix) || !is_string($colorOption)) { - throw new \RuntimeException('Invalid constructor parameter'); - } - - self::$name = strtoupper($envPrefix); - $this->envAllowXdebug = self::$name.self::SUFFIX_ALLOW; - $this->envOriginalInis = self::$name.self::SUFFIX_INIS; - - $this->colorOption = $colorOption; - - if (extension_loaded('xdebug')) { - $ext = new \ReflectionExtension('xdebug'); - $this->loaded = $ext->getVersion() ?: 'unknown'; - } - - if ($this->cli = PHP_SAPI === 'cli') { - $this->debug = getenv(self::DEBUG); - } - - $this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug); - } - - /** - * Activates status message output to a PSR3 logger - * - * @param LoggerInterface $logger - * - * @return $this - */ - public function setLogger(LoggerInterface $logger) - { - $this->statusWriter->setLogger($logger); - return $this; - } - - /** - * Sets the main script location if it cannot be called from argv - * - * @param string $script - * - * @return $this - */ - public function setMainScript($script) - { - $this->script = $script; - return $this; - } - - /** - * Persist the settings to keep Xdebug out of sub-processes - * - * @return $this - */ - public function setPersistent() - { - $this->persistent = true; - return $this; - } - - /** - * Checks if Xdebug is loaded and the process needs to be restarted - * - * This behaviour can be disabled by setting the MYAPP_ALLOW_XDEBUG - * environment variable to 1. This variable is used internally so that - * the restarted process is created only once. - */ - public function check() - { - $this->notify(Status::CHECK, $this->loaded); - $envArgs = explode('|', (string) getenv($this->envAllowXdebug)); - - if (empty($envArgs[0]) && $this->requiresRestart((bool) $this->loaded)) { - // Restart required - $this->notify(Status::RESTART); - - if ($this->prepareRestart()) { - $command = $this->getCommand(); - $this->notify(Status::RESTARTING, $command); - $this->restart($command); - } - return; - } - - if (self::RESTART_ID === $envArgs[0] && count($envArgs) === 5) { - // Restarting, so unset environment variable and use saved values - $this->notify(Status::RESTARTED); - - Process::setEnv($this->envAllowXdebug); - self::$inRestart = true; - - if (!$this->loaded) { - // Skipped version is only set if Xdebug is not loaded - self::$skipped = $envArgs[1]; - } - - // Put restart settings in the environment - $this->setEnvRestartSettings($envArgs); - return; - } - - $this->notify(Status::NORESTART); - - if ($settings = self::getRestartSettings()) { - // Called with existing settings, so sync our settings - $this->syncSettings($settings); - } - } - - /** - * Returns an array of php.ini locations with at least one entry - * - * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files. - * The loaded ini location is the first entry and may be empty. - * - * @return array - */ - public static function getAllIniFiles() - { - if (!empty(self::$name)) { - $env = getenv(self::$name.self::SUFFIX_INIS); - - if (false !== $env) { - return explode(PATH_SEPARATOR, $env); - } - } - - $paths = array((string) php_ini_loaded_file()); - - if ($scanned = php_ini_scanned_files()) { - $paths = array_merge($paths, array_map('trim', explode(',', $scanned))); - } - - return $paths; - } - - /** - * Returns an array of restart settings or null - * - * Settings will be available if the current process was restarted, or - * called with the settings from an existing restart. - * - * @return array|null - */ - public static function getRestartSettings() - { - $envArgs = explode('|', (string) getenv(self::RESTART_SETTINGS)); - - if (count($envArgs) !== 6 - || (!self::$inRestart && php_ini_loaded_file() !== $envArgs[0])) { - return; - } - - return array( - 'tmpIni' => $envArgs[0], - 'scannedInis' => (bool) $envArgs[1], - 'scanDir' => '*' === $envArgs[2] ? false : $envArgs[2], - 'phprc' => '*' === $envArgs[3] ? false : $envArgs[3], - 'inis' => explode(PATH_SEPARATOR, $envArgs[4]), - 'skipped' => $envArgs[5], - ); - } - - /** - * Returns the Xdebug version that triggered a successful restart - * - * @return string - */ - public static function getSkippedVersion() - { - return (string) self::$skipped; - } - - /** - * Returns true if Xdebug is loaded, or as directed by an extending class - * - * @param bool $isLoaded Whether Xdebug is loaded - * - * @return bool - */ - protected function requiresRestart($isLoaded) - { - return $isLoaded; - } - - /** - * Allows an extending class to access the tmpIni - * - * @param string $command - */ - protected function restart($command) - { - $this->doRestart($command); - } - - /** - * Executes the restarted command then deletes the tmp ini - * - * @param string $command - */ - private function doRestart($command) - { - passthru($command, $exitCode); - $this->notify(Status::INFO, 'Restarted process exited '.$exitCode); - - if ($this->debug === '2') { - $this->notify(Status::INFO, 'Temp ini saved: '.$this->tmpIni); - } else { - @unlink($this->tmpIni); - } - - exit($exitCode); - } - - /** - * Returns true if everything was written for the restart - * - * If any of the following fails (however unlikely) we must return false to - * stop potential recursion: - * - tmp ini file creation - * - environment variable creation - * - * @return bool - */ - private function prepareRestart() - { - $error = ''; - $iniFiles = self::getAllIniFiles(); - $scannedInis = count($iniFiles) > 1; - $tmpDir = sys_get_temp_dir(); - - if (!$this->cli) { - $error = 'Unsupported SAPI: '.PHP_SAPI; - } elseif (!defined('PHP_BINARY')) { - $error = 'PHP version is too old: '.PHP_VERSION; - } elseif (!$this->checkConfiguration($info)) { - $error = $info; - } elseif (!$this->checkScanDirConfig()) { - $error = 'PHP version does not report scanned inis: '.PHP_VERSION; - } elseif (!$this->checkMainScript()) { - $error = 'Unable to access main script: '.$this->script; - } elseif (!$this->writeTmpIni($iniFiles, $tmpDir, $error)) { - $error = $error ?: 'Unable to create temp ini file at: '.$tmpDir; - } elseif (!$this->setEnvironment($scannedInis, $iniFiles)) { - $error = 'Unable to set environment variables'; - } - - if ($error) { - $this->notify(Status::ERROR, $error); - } - - return empty($error); - } - - /** - * Returns true if the tmp ini file was written - * - * @param array $iniFiles All ini files used in the current process - * @param string $tmpDir The system temporary directory - * @param string $error Set by method if ini file cannot be read - * - * @return bool - */ - private function writeTmpIni(array $iniFiles, $tmpDir, &$error) - { - if (!$this->tmpIni = @tempnam($tmpDir, '')) { - return false; - } - - // $iniFiles has at least one item and it may be empty - if (empty($iniFiles[0])) { - array_shift($iniFiles); - } - - $content = ''; - $regex = '/^\s*(zend_extension\s*=.*xdebug.*)$/mi'; - - foreach ($iniFiles as $file) { - // Check for inaccessible ini files - if (($data = @file_get_contents($file)) === false) { - $error = 'Unable to read ini: '.$file; - return false; - } - $content .= preg_replace($regex, ';$1', $data).PHP_EOL; - } - - // Merge loaded settings into our ini content, if it is valid - if ($config = parse_ini_string($content)) { - $loaded = ini_get_all(null, false); - $content .= $this->mergeLoadedConfig($loaded, $config); - } - - // Work-around for https://bugs.php.net/bug.php?id=75932 - $content .= 'opcache.enable_cli=0'.PHP_EOL; - - return @file_put_contents($this->tmpIni, $content); - } - - /** - * Returns the restart command line - * - * @return string - */ - private function getCommand() - { - $php = array(PHP_BINARY); - $args = array_slice($_SERVER['argv'], 1); - - if (!$this->persistent) { - // Use command-line options - array_push($php, '-n', '-c', $this->tmpIni); - } - - if (defined('STDOUT') && Process::supportsColor(STDOUT)) { - $args = Process::addColorOption($args, $this->colorOption); - } - - $args = array_merge($php, array($this->script), $args); - - $cmd = Process::escape(array_shift($args), true, true); - foreach ($args as $arg) { - $cmd .= ' '.Process::escape($arg); - } - - return $cmd; - } - - /** - * Returns true if the restart environment variables were set - * - * No need to update $_SERVER since this is set in the restarted process. - * - * @param bool $scannedInis Whether there were scanned ini files - * @param array $iniFiles All ini files used in the current process - * - * @return bool - */ - private function setEnvironment($scannedInis, array $iniFiles) - { - $scanDir = getenv('PHP_INI_SCAN_DIR'); - $phprc = getenv('PHPRC'); - - // Make original inis available to restarted process - if (!putenv($this->envOriginalInis.'='.implode(PATH_SEPARATOR, $iniFiles))) { - return false; - } - - if ($this->persistent) { - // Use the environment to persist the settings - if (!putenv('PHP_INI_SCAN_DIR=') || !putenv('PHPRC='.$this->tmpIni)) { - return false; - } - } - - // Flag restarted process and save values for it to use - $envArgs = array( - self::RESTART_ID, - $this->loaded, - (int) $scannedInis, - false === $scanDir ? '*' : $scanDir, - false === $phprc ? '*' : $phprc, - ); - - return putenv($this->envAllowXdebug.'='.implode('|', $envArgs)); - } - - /** - * Logs status messages - * - * @param string $op Status handler constant - * @param null|string $data Optional data - */ - private function notify($op, $data = null) - { - $this->statusWriter->report($op, $data); - } - - /** - * Returns default, changed and command-line ini settings - * - * @param array $loadedConfig All current ini settings - * @param array $iniConfig Settings from user ini files - * - * @return string - */ - private function mergeLoadedConfig(array $loadedConfig, array $iniConfig) - { - $content = ''; - - foreach ($loadedConfig as $name => $value) { - // Value will either be null, string or array (HHVM only) - if (!is_string($value) - || strpos($name, 'xdebug') === 0 - || $name === 'apc.mmap_file_mask') { - continue; - } - - if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) { - // Double-quote escape each value - $content .= $name.'="'.addcslashes($value, '\\"').'"'.PHP_EOL; - } - } - - return $content; - } - - /** - * Returns true if the script name can be used - * - * @return bool - */ - private function checkMainScript() - { - if (null !== $this->script) { - // Allow an application to set -- for standard input - return file_exists($this->script) || '--' === $this->script; - } - - if (file_exists($this->script = $_SERVER['argv'][0])) { - return true; - } - - // Use a backtrace to resolve Phar and chdir issues - $options = PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_IGNORE_ARGS : false; - $trace = debug_backtrace($options); - - if (($main = end($trace)) && isset($main['file'])) { - return file_exists($this->script = $main['file']); - } - - return false; - } - - /** - * Adds restart settings to the environment - * - * @param string $envArgs - */ - private function setEnvRestartSettings($envArgs) - { - $settings = array( - php_ini_loaded_file(), - $envArgs[2], - $envArgs[3], - $envArgs[4], - getenv($this->envOriginalInis), - self::$skipped, - ); - - Process::setEnv(self::RESTART_SETTINGS, implode('|', $settings)); - } - - /** - * Syncs settings and the environment if called with existing settings - * - * @param array $settings - */ - private function syncSettings(array $settings) - { - if (false === getenv($this->envOriginalInis)) { - // Called by another app, so make original inis available - Process::setEnv($this->envOriginalInis, implode(PATH_SEPARATOR, $settings['inis'])); - } - - self::$skipped = $settings['skipped']; - $this->notify(Status::INFO, 'Process called with existing restart settings'); - } - - /** - * Returns true if there are scanned inis and PHP is able to report them - * - * php_ini_scanned_files will fail when PHP_CONFIG_FILE_SCAN_DIR is empty. - * Fixed in 7.1.13 and 7.2.1 - * - * @return bool - */ - private function checkScanDirConfig() - { - return !(getenv('PHP_INI_SCAN_DIR') - && !PHP_CONFIG_FILE_SCAN_DIR - && (PHP_VERSION_ID < 70113 - || PHP_VERSION_ID === 70200)); - } - - /** - * Returns true if there are no known configuration issues - * - * @param string $info Set by method - */ - private function checkConfiguration(&$info) - { - if (false !== strpos(ini_get('disable_functions'), 'passthru')) { - $info = 'passthru function is disabled'; - return false; - } - - if (extension_loaded('uopz') && !ini_get('uopz.disable')) { - // uopz works at opcode level and disables exit calls - if (function_exists('uopz_allow_exit')) { - @uopz_allow_exit(true); - } else { - $info = 'uopz extension is not compatible'; - return false; - } - } - - return true; - } -} From 2528f41567cb4d19fd86502100a80789c498b7d3 Mon Sep 17 00:00:00 2001 From: Jason Bahl Date: Wed, 1 Apr 2020 15:20:55 -0600 Subject: [PATCH 5/6] #87 - Force Auth Secret to be set, else throw Exception --- src/Auth.php | 2 +- wp-graphql-jwt-authentication.php | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Auth.php b/src/Auth.php index ec0ea38..ca641d8 100644 --- a/src/Auth.php +++ b/src/Auth.php @@ -23,7 +23,7 @@ class Auth { public static function get_secret_key() { // Use the defined secret key, if it exists - $secret_key = defined( 'GRAPHQL_JWT_AUTH_SECRET_KEY' ) && ! empty( GRAPHQL_JWT_AUTH_SECRET_KEY ) ? GRAPHQL_JWT_AUTH_SECRET_KEY : 'graphql-jwt-auth'; + $secret_key = defined( 'GRAPHQL_JWT_AUTH_SECRET_KEY' ) && ! empty( GRAPHQL_JWT_AUTH_SECRET_KEY ) ? GRAPHQL_JWT_AUTH_SECRET_KEY : null; return apply_filters( 'graphql_jwt_auth_secret_key', $secret_key ); } diff --git a/wp-graphql-jwt-authentication.php b/wp-graphql-jwt-authentication.php index 3575585..d7b9158 100644 --- a/wp-graphql-jwt-authentication.php +++ b/wp-graphql-jwt-authentication.php @@ -189,12 +189,20 @@ private static function init() { * response status to 403. */ add_action( 'init_graphql_request', function() { - $token = Auth::validate_token(); - if ( is_wp_error( $token ) ) { - add_action( 'graphql_before_resolve_field', function() use ( $token ) { - throw new \Exception( $token->get_error_code() . ' | ' . $token->get_error_message() ); - }, 1 ); + + $jwt_secret = Auth::get_secret_key(); + if ( empty( $jwt_secret ) || 'graphql-jwt-auth' === $jwt_secret ) { + throw new \Exception( __( 'You must define the GraphQL JWT Auth secret to use the WPGraphQL JWT Authentication plugin.', 'graphql-jwt-auth' ) ); + } else { + $token = Auth::validate_token(); + if ( is_wp_error( $token ) ) { + add_action( 'graphql_before_resolve_field', function() use ( $token ) { + throw new \Exception( $token->get_error_code() . ' | ' . $token->get_error_message() ); + }, 1 ); + } } + + } ); } From ef4a7325f30ff2d2a2a8a4362a43ea725c975207 Mon Sep 17 00:00:00 2001 From: Jason Bahl Date: Mon, 4 May 2020 15:38:44 -0600 Subject: [PATCH 6/6] Release/v0.4.1 - Update version number for release --- wp-graphql-jwt-authentication.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wp-graphql-jwt-authentication.php b/wp-graphql-jwt-authentication.php index 3575585..0c56981 100644 --- a/wp-graphql-jwt-authentication.php +++ b/wp-graphql-jwt-authentication.php @@ -7,7 +7,7 @@ * Author URI: https://www.wpgraphql.com * Text Domain: wp-graphql-jwt-authentication-jwt-authentication * Domain Path: /languages - * Version: 0.4.0 + * Version: 0.4.1 * Requires at least: 4.7.0 * Tested up to: 4.8.3 * Requires PHP: 5.5 @@ -113,7 +113,7 @@ public function __wakeup() { private function setup_constants() { // Plugin version. if ( ! defined( 'WPGRAPHQL_JWT_AUTHENTICATION_VERSION' ) ) { - define( 'WPGRAPHQL_JWT_AUTHENTICATION_VERSION', '0.4.0' ); + define( 'WPGRAPHQL_JWT_AUTHENTICATION_VERSION', '0.4.1' ); } // Plugin Folder Path.